From: | Thom Brown <thom(at)linux(dot)com> |
---|---|
To: | Dave Page <dpage(at)pgadmin(dot)org> |
Cc: | Anil Sahoo <anil(dot)sahoo(at)enterprisedb(dot)com>, pgadmin-hackers <pgadmin-hackers(at)postgresql(dot)org> |
Subject: | Re: Regarding feature #6841 |
Date: | 2024-04-18 15:14:16 |
Message-ID: | CAA-aLv55d_mdMYAU-67drnc9VhCJ421OBr4oOO8jw3KC3W4ARA@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgadmin-hackers |
On Thu, Apr 18, 2024, 15:37 Dave Page <dpage(at)pgadmin(dot)org> wrote:
> Hi
>
> On Thu, 18 Apr 2024 at 15:26, Anil Sahoo <anil(dot)sahoo(at)enterprisedb(dot)com>
> wrote:
>
>> Hi Dave,
>> We took help from Code Mirror, i.e Code Mirror gives the parsed SQL from
>> the editor through a tree called syntaxTree and by using some logic we
>> extracted the statements which have semicolon in it and also added some
>> extra logic to break the whole query on next of next line as empty or if
>> comments are there.
>>
>> Using all this logic we got the individual queries and checked where our
>> cursor is in editor and checked with the query and through this we got the
>> actual query at cursor position.
>>
>> For example,
>>
>> 1. if the cursor is at starting or ending position or anywhere in
>> between a query with semicolon or without semicolon, that can be single
>> line or multi line then the query gets extracted.
>> 2. if the cursor is at starting or ending position or anywhere in
>> between a comment that can be single line or multi line then the comment
>> gets extracted.
>> 3. if the cursor is at a position where the previous line has a query
>> then that query gets extracted.
>>
>> For the anonymous block containing multiple queries, code mirror gives
>> the statements differently. That is an incomplete query we can say, so the
>> query tool gives error. We can say some limitations are there with Code
>> Mirror.
>>
>> Please let me know if you have any questions on this.
>>
>
> My main concern is that it doesn't get it wrong. Ever. Consider:
>
> DELETE FROM foo; SELECT * FROM foo;
>
> Is that one statement or two? What if it's in the middle of a pl/python3
> function:
>
> my_sql = 'DELETE FROM foo; SELECT * FROM foo;'
>
> or
>
> my_sql = """DELETE FROM foo;
> SELECT * FROM foo;
> """
>
Or, indeed, an SQL function. Would the user want the CREATE statement to be
run, or just the embedded SQL statement? I wouldn't like to guess.
Thom
From | Date | Subject | |
---|---|---|---|
Next Message | Aditya Toshniwal | 2024-04-19 04:14:32 | Re: Regarding feature #6841 |
Previous Message | Thom Brown | 2024-04-18 14:56:17 | Re: Regarding feature #6841 |