Re: IF (NOT) EXISTS in psql-completion

Поиск
Список
Период
Сортировка
От Kyotaro HORIGUCHI
Тема Re: IF (NOT) EXISTS in psql-completion
Дата
Msg-id 20160916.173130.236023646.horiguchi.kyotaro@lab.ntt.co.jp
обсуждение исходный текст
Ответ на Re: IF (NOT) EXISTS in psql-completion  (Kyotaro HORIGUCHI <horiguchi.kyotaro@lab.ntt.co.jp>)
Ответы Re: IF (NOT) EXISTS in psql-completion  (Pavel Stehule <pavel.stehule@gmail.com>)
Re: IF (NOT) EXISTS in psql-completion  (Pavel Stehule <pavel.stehule@gmail.com>)
Список pgsql-hackers
Hello, this is the new version.

At Tue, 13 Sep 2016 10:50:13 +0900 (Tokyo Standard Time), Kyotaro HORIGUCHI <horiguchi.kyotaro@lab.ntt.co.jp> wrote in
<20160913.105013.65452566.horiguchi.kyotaro@lab.ntt.co.jp>
> > > This patch consists of the following files. Since these files are
> > > splitted in strange criteria and order for historical reasons,
> > > I'll reorganize this and post them later.

The focus of this patch has changed. The first motivation was
completing IF-EXISTS but the underlying issue was flexibility of
psql_completion. And as Pavel's suggestion, keywords suggested
along with database objects should follow the character case of
input.

For the purpose of resolving the issues, I reorganized the
confused patch set. The attached patches are organized as the
following.

1. Refactoring tab-complete to make psql_completion code
 Does two things. One is moving out the macros that has grown to be too large to stay in tab_completion.c to new file
tab-complete-macros.hThe other is separating out the else-if sequence in psql_completion() as a new function
psql_completion_internal().This allows us to the following things.
 
 - Exit from arbitrary place in the former-else-if sequence just   by return.
 - Do other than "if(matching) { completion }" in anywhere   convenient in the midst of the former-els... 
 - Recursively matching for sub syntaxes. EXPLAIN, RULE and   others are using this feature. (Needs the 4th patch to do
 this, though)
 

2. Make keywords' case follow to input
 Allow the keywords suggested along with databse objects to follow the input letter case. The core part of this patch
isa new function additional_kw_query(), which dynamically generates additional query string with specified keywords in
thedesired letter case. COMPLETE_WITH_* macros are modified to accept the function.
 

3. Fix suggested keywords to follow input in tab-completion session 2
 The 2nd patch above leaves some query string containing static keyword strings, which results in failure to follow
inputletter cases. Most of them are naturally removed but role names are a bother. This patch puts additional query
stringsfor several usage of roles but it might be overdone.
 

4. Introduce word shift and removal feature to psql-completion
 This is the second core for the flexibility of completion code. The word shift feature is the ability to omit first
severalwords in *MatchesN macros. For example this allows complete create-schema's schema elements in a natural code.
(Currentlythose syntaxes that can be a schema elements are using TailMatches instead of Matches, as the result
HeadMatchesare not available there). The words removing feature is the ability to (desructively) clip multiple
suceessivewords in the previous_words list. This feature allows suceeding completion code not to care about the removed
words,such like UNIQUE, CONCURRENTLY, VERBOSE and so on.
 

5. Add suggestion for IF (NOT) EXISTS for some syntaxes
 This adds IF (NOT) EXISTS suggestion, as a PoC.  This patch no loger covers all adoptable syntaces since the places
wheremore than boilerplating is required are omitted.
 

regards,

-- 
Kyotaro Horiguchi
NTT Open Source Software Center




В списке pgsql-hackers по дате отправления:

Предыдущее
От: Pavel Stehule
Дата:
Сообщение: Re: patch: function xmltable
Следующее
От: Bernd Helmle
Дата:
Сообщение: Re: standalone backend PANICs during recovery