Re: syntax error at or near "ROWS"
От | Kristian Ivarsson |
---|---|
Тема | Re: syntax error at or near "ROWS" |
Дата | |
Msg-id | DB9PR01MB9512A7C9601A507899D1D465F1632@DB9PR01MB9512.eurprd01.prod.exchangelabs.com обсуждение исходный текст |
Ответ на | syntax error at or near "ROWS" (Kristian Ivarsson <sten.kristian.ivarsson@gmail.com>) |
Ответы |
Re: syntax error at or near "ROWS"
|
Список | pgsql-odbc |
I have dug into this a bit more and turned on the postmaster log
This statement fails if the first parameter is "abc" but works with "abcde"
SELECT "Id","Begin","End","Logfile" FROM "ServerSession" WHERE "Logfile" = ? ORDER BY "Begin" ASC OFFSET ? ROWS FETCH FIRST ? ROW ONLY
The postmaster log with "abc" (cbColDef and cbValueMax both 3)
This statement fails if the first parameter is "abc" but works with "abcde"
SELECT "Id","Begin","End","Logfile" FROM "ServerSession" WHERE "Logfile" = ? ORDER BY "Begin" ASC OFFSET ? ROWS FETCH FIRST ? ROW ONLY
The postmaster log with "abc" (cbColDef and cbValueMax both 3)
2024-09-19 12:20:26.092 CEST [17828] ERROR: syntax error at or near "ROWS" at character 116
2024-09-19 12:20:26.092 CEST [17828] STATEMENT: SELECT "Id","Begin","End","Logfile" FROM "ServerSession" WHERE "Logfile" = $1 ORDER BY "Begin" ASC OFFSET $2::int4 ROWS FETCH FIRST $3::int4 ROW ONLY
The postmaster log with "abcde" (cbColDef and cbValueMax both 5)
2024-09-19 12:20:26.092 CEST [17828] LOG: execute <unnamed>: SELECT "Id","Begin","End","Logfile" FROM "ServerSession" WHERE "Logfile" = $1 ORDER BY "Begin" ASC OFFSET $2 ROWS FETCH FIRST $3 ROW ONLY
2024-09-19 12:20:26.092 CEST [17828] DETAIL: parameters: $1 = 'abcde', $2 = '0', $3 = '1'
By changing the statement a bit (using OFFSET ? and LIMIT ?) it works with both with "abc" and "abcde"
2024-09-19 12:23:40.386 CEST [32684] LOG: execute <unnamed>: SELECT "Id","Begin","End","Logfile" FROM "ServerSession" WHERE "Logfile" = $1 ORDER BY "Begin" ASC OFFSET $2::int4 LIMIT $3::int4
2024-09-19 12:23:40.386 CEST [32684] DETAIL: parameters: $1 = 'abc', $2 = '0', $3 = '1' 2024-09-19 12:23:40.386 CEST [32684] LOG: execute <unnamed>: SELECT "Id","Begin","End","Logfile" FROM "ServerSession" WHERE "Logfile" = $1 ORDER BY "Begin" ASC OFFSET $2 LIMIT $3
2024-09-19 12:23:40.386 CEST [32684] DETAIL: parameters: $1 = 'abcde', $2 = '0', $3 = '1'
There's a lot of fishy things going on (where subsequent parameters sometimes seems to be serialized as strings depending of the size of earlier string but not always), but I won't speculate of the reasons
We want to use the OFFSET ? ROWS FETCH FIRST ? ROW ONLY statement
/ Kristian
В списке pgsql-odbc по дате отправления: