Независимо от того, где ошибка, это показывает интересное различие между двумя базами данных (и пример того, почему перекрестная абстракция базы данных сложна).
MySQL не имеет истинного типа bool как такового. Он просто использует tinyints в качестве логических значений.
На MySQL:
SELECT true;
+------+
| TRUE |
+------+
| 1 |
+------+
1 row in set (0.00 sec)
Булевы выражения также оцениваются как целые числа:
select true is not false;
+-------------------+
| true is not false |
+-------------------+
| 1 |
+-------------------+
1 row in set (0.00 sec)
В PostgreSQL
PostgreSQL поддерживает истинный логический тип с возвращаемым 't' или 'f'.
select true;
bool
------
t
(1 row)
select true is not false;
?column?
----------
t
(1 row)
Обратите внимание, что вы также можете привести целые числа к bool:
select 1::bool;
bool
------
t
(1 row)
select 2::bool;
bool
------
t
(1 row)
select 0::bool;
bool
------
f
(1 row)
Очевидно, что два автора этих пакетов имели разные идеи о том, как решить вопрос о булевых типах.