ホーム › フォーラム › A5:SQL Mk-2掲示板 › SQL入力支援でエラーダイアログ
- このトピックには3件の返信、1人の参加者があり、最後にONISHIにより7ヶ月、 3週前に更新されました。
-
投稿者投稿
-
ONISHIゲスト
こんにちは。ONISHIと申します。
いつも利用させていただき、大変助かっております。SQLを編集している際に、Ctrl+Spaceの入力支援を使うとエラーダイアログが出る様になりました。
(Ctrl+spaceを押さずとも、ピリオド+自動入力支援でも同様)エラー内容
”(赤×アイコン) リスト インデックスが範囲外です(2)。TStringListオブジェクトの範囲は0..1です。”なお、エラーが出ているSQLファイルの編集でも、完全に新規のSQLファイルでも、
新しいSQL行をシンプルなSQL文で書いてるうちは上記のエラーは出ないのですが、
With句が入るとエラーが出ます。(副問合せに変えても同じエラーが出ました)WITH a AS (
SELECT * FROM a WHERE cond1 = ‘1’
)
, b AS (
SELECT
b.*
FROM
lectures b
JOIN a
ON b.a_id = a.id
WHERE
cond2 = ‘cond2’
)
SELECT
c.*
FROM
c
JOIN b
ON c.b_id = b.id
WHERE
cond3 = ‘3’
;ザックリと上記のようなSQLで、例えば、各with句の中では正常に入力支援が働くのですが
最終のSELECT文で入力支援のキーを押すと、上記のエラーダイアログが出ます。
また、一旦ダイアログを閉じ、もう一度Ctrl+spaceを押すと、前回より体感で早いレスポンスで
同じエラーが出ます。なお、全く異なるDB(PostgreSQL)では同じようなSQLを書いても全くエラーが出なかったりします。
エラーが出るDBは出ないDBに比べてかなりDBサイズが大きく、
入力支援が効く場合でも、支援の表示が出るまでに少しラグを感じます。
感覚に基づく推測で恐縮ですが、
この辺で何らかタイムアウトが発生しているのかな、と・・・
(自動入力支援の時間は延ばしてみてもエラー発生は変わりませんでした)手元環境で
・ 対象DB: PostgreSQL 10.3
・ Ver: A5M2 2.19.1
で、前バージョンは記録していないのですが、2.18.x以降で現象を認識しました。今後のバージョンでの対応あるいは何らか回避策を頂けるとありがたいです。
どうぞよろしくお願い申し上げます。
ONISHIゲスト恐れいります。先のメッセージで、エラーが出ないといっていたDBでも同様のエラーが発生しました。
同じようなSQLを書いていて、下記ではエラーが出ないのですが、
—–
WITH a AS ( SELECT * FROM a WHERE cond1 = ‘1’ )
SELECT * FROM a WHERE cond1 = ‘1’;
—-下記の様にWithが2つ以上になると、最終のSQL(SELECTでもINSERTでも)を記載し始めた瞬間から
Ctrl+spaceを押した瞬間にエラーが出ました。
—–
WITH a AS (SELECT * FROM a WHERE cond1 = ‘1’)
, b as (SELECT * FROM a WHERE cond2 = ‘2’)
select * from b where cond3 = ‘3’;
—-こちらは先のエラーが出るDBに比べてサイズ小さくスキーマもかなりシンプルです。
なので、タイムアウトとという推測は恐らく間違いだと思われます。詳細なバージョンは記憶していないのですが、以前はwithが4つ・5つあっても特に問題なく
入力支援が利用出来ておりました。恐れ入りますがよろしくお願い致します。
松原正和キーマスターONISHI さんこんにちは。
はい、現象を確認しました。内部的な処理順序の問題でWITH句を使ったときにエラーが発生する問題がありました。Version 2.20.0 beta 3で修正してみました。ご確認いただければと思います。
https://a5m2.mmatsubara.com/beta/ONISHIゲスト松原様
お世話になっております。
確認が遅くなり申し訳ございません。
少しこちら V 2.20.0beta4にてエラーが出なくなっていることを確認出来ました。
ご対応ありがとうございました!! -
投稿者投稿