Le solution:

DON't use .exec
Use .spawn

The function is bad, it's design is bad, it's behaviour is unpredictable, it can be replaced by .spawn, there is no fucking excuse for anyone to ever use it.

If you do like:

proc = child_process.exec(...genius code...)
proc.stdout.pipe(gloryhole)

It continues to flood its internal buffer even if you do not provide any callback where the buffer is meant to be used.
This function is fucking nuts!

Keep calm and 200KB is enough for everyone.

[ ]
 

Имеем таблицу, в которой строки ссылаются друг на друга по pid, либо вообще не ссылаются никак (pid=null). Делаем запрос:

SELECT *
FROM `tasks`
WHERE `tasks`.`id` NOT IN (SELECT DISTINCT `pid` FROM `tasks`)

Результат запроса: хуй (0 строк). При этом, результат противоречит здравому смыслу, потомучто данные в таблице есть и только начали вноситься, а сводится он еще более простому запросу:

SELECT *
FROM `tasks`
WHERE `tasks`.`id` NOT IN (496,NULL)

Упрощаем запрос до минимального

SELECT *
FROM `tasks`
WHERE `tasks`.`id` NOT IN (NULL)

Результат запроса: хуй (0 строк). Пишем:

EXPLAIN SELECT *
FROM `tasks`
WHERE `tasks`.`id` NOT IN (NULL)

Получаем:

Array ( [id] => 1 [select_type] => SIMPLE [table] => [type] => [possible_keys] => [key] => [key_len] => [ref] => [rows] => [Extra] => Impossible WHERE noticed after reading const tables )


Теперь необходимо переписать сраные 50 запросов, каджый из которых довольно сложен и в нужных местах повставлять OR IS NULL и OR IS NOT NULL, потомучто раньше вместо NULL был объект-костыль с ID=-1.

UPD:

Ха. Ха. Ха. Пехепе меня решило добить. Данные в выборке есть, а в результате - нет. Ну, об этом гениальном быдлопассаже я уже писал.