A5:SQL Mk-2

開発のこと、日々のこと

syntax error at or near “LIMIT”

ホーム フォーラム A5:SQL Mk-2掲示板 syntax error at or near “LIMIT”

このトピックには5件の返信が含まれ、2人の参加者がいます。2 ヶ月前 松原正和 さんが最後の更新を行いました。

6件の投稿を表示中 - 1 - 6件目 (全6件中)
  • 投稿者
    投稿
  • #4234 返信

    nisshy

    いつも便利に使わせていただいております。
    心底感謝しております。

    以前から、 PostgreSQL 直接接続で 「syntax error at or near “LIMIT”」というエラーが時折表示されて、どういう条件の時に表示されるか、わからなかったのですが、今回、エラーになるパターンの SQL と、正常なパターンの SQL の違いに気づきましたので、お知らせします。

    利用バージョンは
    2.13.3 x64
    PostgreSQL 9.5.4, compiled by Visual C++ build 1800, 32-bit

    ■ NG パターン

    ■ OK パターン
    — テスト

    以上です。

    品質向上のためのお役に立てると良いのですが。

    これからもがんばってくださいませ。
    応援しています。

    #4235 返信

    nisshy

    code タグを使ったら、変になってしまいました。。
    code タグなしで書くと、以下の通りです。

    ■ NG パターン
    select — テスト
    1
    limit 1
    ;

    ■ OK パターン
    — テスト
    select
    1
    limit 1
    ;

    要は、「– テスト」というコメントの置き場所が影響しているようです。

    #4236 返信

    kara

    limit句はコメント位置で回避可能のようですが
    fetch first row only
    でも同様のsyntax errorが発生し、こちらはコメント有無や位置を変えても回避できません。

    ご確認頂けますと幸いです。

    #4281 返信

    松原正和
    キーマスター

    nisshyさん、karaさんこんにちは。
     
    はい、現象を確認しました。MySQLで limit 句が正しく処理できない不具合を Version 2.14.2 beta 1 及び、Version 2.15.0 beta 1で修正しました。
     
    オプションダイアログで「結果セット最大行数」(デフォルト 10000)が指定されていると、内部的にlimit句が追加されて、二重に追加されたlimit句がエラーになっているようでした。A5:SQL Mk-2では、limit句などが指定されていると、「結果セット最大行数」のオプション値を無視していたのですが、limit句が指定されているか調べるためにSQLをパースする処理で1行コメントの解析に失敗していたようです。
     
    karaさんの 「fetch first row only」についてですが、これは IBM Db2の構文だと思うのですが、あっていますでしょうか?Version 2.15.0 beta 1などでも発生しますでしょうか?。

    #4300 返信

    kara

    松原さん

    ご確認ありがとうございます。
    fetch構文は以前db2用でしたが現在では標準SQL構文の認識です。

    ORACLE 12c以降、Postgresでもサポートされています。
    https://www.oracle.com/technetwork/jp/database/articles/tsushima/tsushima-hakushi-37-2202125-ja.html
    https://www.postgresql.jp/document/9.0/html/sql-select.html#SQL-LIMIT

    事象はPostgresにて確認しておりました。
    設定で結果セット最大行を0にすることで回避出来ること確認できました。

    ORACLEでは
    ORA-00933:SQLコマンドが正しく終了されていません。
    となります。
    これはサーバーバージョンの問題かもしれません。

    ※Version 2.15.0 beta 1で確認しました

    一応現在の開発ではPostgresでfetch構文を使いたかったので、ご教示頂いた回避法で問題ありません。
    (実装は出来ていたがa5m2で検証できなくて困っていた)

    #4317 返信

    松原正和
    キーマスター

    karaさんこんにちは。
     
    Version 2.15.0 beta 2以降で、FETCH FIRST n ROWS ONLYに対応してみました。ご確認ください。

6件の投稿を表示中 - 1 - 6件目 (全6件中)
返信先: syntax error at or near “LIMIT”
あなたの情報:




コメントは受け付けていません。