Vapaamies: ну я вот так делал, когда копировал предыдущий вывод:
select
t2.epoch,
t2.`key`,
t2.`value`
from
(
select
t1.`value`,
t1.`key`,
t1.epoch,
t1.message,
(select `value` from data where epoch < t1.epoch and message = "isig_level" ORDER BY epoch DESC LIMIT 1) prev_value,
(select `value` from data where epoch > t1.epoch and message = "isig_level" ORDER BY epoch LIMIT 1) next_value
from data t1
where t1.value = 0 and t1.message = "isig_level"
order by t1.epoch
) t2
where t2.prev_value = 0 and t2.next_value = 0
Юрий Изотов: поскольку он приквел, то вполне логично начать с него, благо они мало чем объединены, кроме нескольких упоминаний. А так хоть при чтении "Пламени над бездной" будет понятно, откуда этот Фам Нювен взялся.
Роман Мирр: про инкремент понимаю. Не понимаю, что это дает. Куда берется каждый байт? Все, что происходит внутри цикла(два сдвига, или, вычитание) — это делается с каждым байтом?
Это да, более-менее теперь понятно. А сколько раз это делается? По количеству разрядов в str? А что делает "str++" в "for(i = 0; i < length; ++i, str++)"?
select
t2.epoch,
t2.`key`,
t2.`value`
from
(
select
t1.`value`,
t1.`key`,
t1.epoch,
t1.message,
(select `value` from data where epoch < t1.epoch and message = "isig_level" ORDER BY epoch DESC LIMIT 1) prev_value,
(select `value` from data where epoch > t1.epoch and message = "isig_level" ORDER BY epoch LIMIT 1) next_value
from data t1
where t1.value = 0 and t1.message = "isig_level"
order by t1.epoch
) t2
where t2.prev_value = 0 and t2.next_value = 0