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)

  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 по дате отправления: