Thread
Commits
-
Fix ecpg's mishandling of B'...' and X'...' literals.
- 1e3868ab3bef 14.0 landed
- 1bccb159af58 13.1 landed
-
errors when there is a bit literal in ecpg
Wang, Shenhao <wangsh.fnst@cn.fujitsu.com> — 2020-11-06T22:56:11Z
Hi, hacker I met an error as below when I use ecpg a.pgc:5: ERROR: invalid bit string literal a.pgc:5: ERROR: internal error: unreachable state; please report this to <pgsql-bugs@lists.postgresql.org> the test source is attached. After investigating the code, I think the process of pgc.l is: Step 1: <SQL>{xbstart}, addlitchar('b') is called, literalbuf contains a char 'b'; Step 2: <xb>{xbinside}, the rest of char is added in literalbuf Step 3: <xqs>{other}, the condition literalbuf[strspn(literalbuf, "01") + 1] != '\0' will always be true; error is occurred here I try to fix this bug by deleting 'addlitchar('b');' from source I also add a test case to test all const str in ecpg. The patch is also attached. Best regards, Shenhao Wang -
Re: errors when there is a bit literal in ecpg
Tom Lane <tgl@sss.pgh.pa.us> — 2020-11-07T20:05:42Z
"Wang, Shenhao" <wangsh.fnst@cn.fujitsu.com> writes: > I met an error as below when I use ecpg > a.pgc:5: ERROR: invalid bit string literal > a.pgc:5: ERROR: internal error: unreachable state; please report this to <pgsql-bugs@lists.postgresql.org> Indeed. This has apparently been broken for a very long time (though the "unreachable state" part is fairly new). > I try to fix this bug by deleting 'addlitchar('b');' from source I also add a test case to test all const str in ecpg. I thought that a whole new test case was overkill when we could just add a couple of lines to an existing test. Other than that, looks good, pushed. regards, tom lane