1
これまでに何か類似していて、 :postgresの非常に奇妙な列文字列 "single-quote-comment-brace-time-char" -bugの置換は、おそらくJDBCにのみ関連します
--'
select '{t'::text
text
-----
TIME
???
これまでに何か類似していて、 :postgresの非常に奇妙な列文字列 "single-quote-comment-brace-time-char" -bugの置換は、おそらくJDBCにのみ関連します
--'
select '{t'::text
text
-----
TIME
???
これはどのように厄介なバグで、これが本当に混乱したデータにつながるのか興味深いです! それにseems to be known since 9.1、唯一のJDBCドライバに関連している可能性がありそしてここに私たちの9.3だけでなく!:
で起きたあなたのコードでは、このアドホックを見つけて修正するために助けるため、私が見つけたいくつかの詳細は(またはしています最終的には「元ハッカー」によって、これまでに以下のサンプルコード付き)):単一引用符を選択上記単一行または複数行のコメントのどこかに表示される必要があり
--'
、/*'*/
、 -- foo's cool
)text
TIME
又はDATE
によって置換される{t
又は{d
select 'foo } bar'
)--}
)。
--'
select '{t'::text
union all select '{ta}'
union all select '{tfoo bar'
-- these are untouched
union all select '{ t}'
union all select 'foo { t}'
-- there seems to be an opening/closing "{" "}" match behaviour behind
-- it since the 2nd row below
union all select '{t'
union all select '{ta}'
union all select '{tfoo bar'
-- also "d" seems to be a "trigger"
union all select '}{d}'
-- a closing brace in a comment seems to disable it completely again
union all select '{d'
union all select '{d'
-- }
union all select 'a}{d}'
text
------------
TIME
{ta
TIME foo bar
{ t
foo { t}
TIME
{ta
TIME foo bar
DATE
DATE
{d
a}{d}
注:psqlで期待どおりに動作するため、これはJDBCのグリッチでなければなりません。 BTW:一行コメントは正式に ' - '(2つのハイフンとスペース)です。 – joop
@joop:テストとヒントのためのThx。私はほとんどの場合、読みやすさのために正式に推奨されるスペースを置いていますが、いつでもパーサーを変更することはありません。なぜなら、利益とコストの比率があまりにも悪いからです。私はちょうどここにいくつかの最小構文サンプルを書いてみたかった。私の元の例では、私は '' bar bla''を実行しませんでした。これはかなり一般的な英語のコメントです: -/ –
PostgreSQLのJDBC Escapeパーサの実装が正しく動作していないようです。 –