概要
担当プロジェクトでPhalconのアップデートを行なっており、その際に発生した不具合の備忘録です。
issueを見つけるのに時間がかかったので、同じ現象に遭遇した方の助けになれば幸いです。
Phalconにはphqlという独自のsqlのようなものがあり、ベタ書きしたのをPhalconが用意しているparser内で変換しクエリ実行している箇所で、そんなカラムないよ!と怒られるエラーが発生していました。
parserにカラム名先頭で「not」が来ると削除されてしまうバグがあり、そのためエラーが発生していたようです。
例えば元のSQLが以下だったとします。(Modelにnoteがある前提)
Select m.note From Model m.
これをcreateQuery()やexecuteQuery()でparseしてしまうと...
Select m.e Form Model m.
当然「Column not found」でエラーになります。
2019年からあるバグのようで、未だに修正されていないようです😭
対象バージョンは4.0.0〜
Githubのissueは↓
issue:https://github.com/phalcon/cphalcon/issues/14641
解消するには?
カラム名を[]で囲ってあげればOK。
Select m.[note] Form Model m.
これで解消できます。
もしくはparser周りを修正してあげれば解決できるかもしれません