Re: EXECUTE tab completion
От | Alvaro Herrera |
---|---|
Тема | Re: EXECUTE tab completion |
Дата | |
Msg-id | 1319116019-sup-5356@alvh.no-ip.org обсуждение исходный текст |
Ответ на | Re: EXECUTE tab completion (Josh Kupershmidt <schmiddy@gmail.com>) |
Ответы |
Re: EXECUTE tab completion
|
Список | pgsql-hackers |
Excerpts from Josh Kupershmidt's message of mié oct 19 23:50:58 -0300 2011: > On Wed, Oct 19, 2011 at 10:40 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote: > > Josh Kupershmidt <schmiddy@gmail.com> writes: > >> Incidentally, I was wondering what the heck was up with a clause like this: > >> else if (pg_strcasecmp(prev_wd, "EXECUTE") == 0 && > >> pg_strcasecmp(prev2_wd, "EXECUTE") == 0) > > > > Hmm, maybe || was meant not && ? It seems pretty unlikely that the > > above test would ever trigger on valid SQL input. > > Well, changing '&&' to '||' breaks the stated comment of the patch, namely: > /* must not match CREATE TRIGGER ... EXECUTE PROCEDURE */ > > I assume this is an accepted quirk of previous_word() since we have > this existing similar code: > > /* DROP, but watch out for DROP embedded in other commands */ > /* complete with something you can drop */ > else if (pg_strcasecmp(prev_wd, "DROP") == 0 && > pg_strcasecmp(prev2_wd, "DROP") == 0) Maybe both are wrong, though the DROP case seems to work so maybe it's just dead code. This was introduced in commit 90725929465474648de133d216b873bdb69fe357: *************** *** 674,685 **** psql_completion(char *text, int start, int end) else if (pg_strcasecmp(prev_wd, "CREATE") == 0) matches = completion_matches(text, create_command_generator); ! /* DROP, except ALTER (TABLE|DOMAIN|GROUP) sth DROP */ /* complete with something you can drop */ else if (pg_strcasecmp(prev_wd,"DROP") == 0 && ! pg_strcasecmp(prev3_wd, "TABLE") != 0 && ! pg_strcasecmp(prev3_wd, "DOMAIN") != 0 && ! pg_strcasecmp(prev3_wd, "GROUP") != 0) matches = completion_matches(text, drop_command_generator); /*ALTER */ --- 674,683 ---- else if (pg_strcasecmp(prev_wd, "CREATE") == 0) matches = completion_matches(text, create_command_generator); ! /* DROP, but watch out for DROP embedded in other commands */ /* complete with something you can drop */ else if (pg_strcasecmp(prev_wd,"DROP") == 0 && ! pg_strcasecmp(prev2_wd, "DROP") == 0) matches = completion_matches(text, drop_command_generator); /*ALTER */ -- Álvaro Herrera <alvherre@commandprompt.com> The PostgreSQL Company - Command Prompt, Inc. PostgreSQL Replication, Consulting, Custom Development, 24x7 support
В списке pgsql-hackers по дате отправления: