From: | Tatsuro Yamada <yamada(dot)tatsuro(at)lab(dot)ntt(dot)co(dot)jp> |
---|---|
To: | Michael Paquier <michael(at)paquier(dot)xyz> |
Cc: | Kyotaro HORIGUCHI <horiguchi(dot)kyotaro(at)lab(dot)ntt(dot)co(dot)jp>, pgsql-hackers(at)lists(dot)postgresql(dot)org |
Subject: | Re: Tab completion for ALTER INDEX|TABLE ALTER COLUMN SET STATISTICS |
Date: | 2018-12-21 05:51:51 |
Message-ID: | bcecaf0e-ab92-8271-6887-da213aea9dac@lab.ntt.co.jp |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On 2018/12/20 10:47, Tatsuro Yamada wrote:
> On 2018/12/20 10:38, Michael Paquier wrote:
>> On Thu, Dec 20, 2018 at 10:05:30AM +0900, Tatsuro Yamada wrote:
>>> Alright, I'll create new patches including these:
>>>
>>> - No completion after "ALTER TABLE/INDEX SET STATISTICS" instead of schema names
>>> - Complete "ALTER INDEX foo ALTER COLUMN SET" with STATISTICS by
>>> using *column_numbers*
>>
>> Thanks for considering it!
>
> My pleasure, Neo. :)
> Please wait for new WIP patches.
Attached file is a WIP patch.
*Example of after patching
========================================================
create table hoge (a integer, b integer, c integer);
create index ind_hoge on hoge(a, b, c, (c*1), (c*2), (c*3), (c*4), (c*5), (c*6), (c*7), (c*8), (c*9));
# \d+ ind_hoge
Index "public.ind_hoge"
Column | Type | Key? | Definition | Storage | Stats target
--------+---------+------+------------+---------+--------------
a | integer | yes | a | plain |
b | integer | yes | b | plain |
c | integer | yes | c | plain |
expr | integer | yes | (c * 1) | plain |
expr1 | integer | yes | (c * 2) | plain |
expr2 | integer | yes | (c * 3) | plain |
expr3 | integer | yes | (c * 4) | plain |
expr4 | integer | yes | (c * 5) | plain |
expr5 | integer | yes | (c * 6) | plain |
expr6 | integer | yes | (c * 7) | plain |
expr7 | integer | yes | (c * 8) | plain |
expr8 | integer | yes | (c * 9) | plain |
btree, for table "public.hoge"
# alter index ind_hoge alter column <tab!>
1 10 11 12 2 3 4 5 6 7 8 9
# alter index ind_hoge alter column 1 <tab!>
1 10 11 12
# alter index ind_hoge alter column 10 SET STATISTICS <tab!>
<no completion!>
# alter index ind_hoge alter column 10 SET STATISTICS 100;
ALTER INDEX
# \d+ ind_hoge
Index "public.ind_hoge"
Column | Type | Key? | Definition | Storage | Stats target
--------+---------+------+------------+---------+--------------
a | integer | yes | a | plain |
b | integer | yes | b | plain |
c | integer | yes | c | plain |
expr | integer | yes | (c * 1) | plain |
expr1 | integer | yes | (c * 2) | plain |
expr2 | integer | yes | (c * 3) | plain |
expr3 | integer | yes | (c * 4) | plain |
expr4 | integer | yes | (c * 5) | plain |
expr5 | integer | yes | (c * 6) | plain |
expr6 | integer | yes | (c * 7) | plain | 100
expr7 | integer | yes | (c * 8) | plain |
expr8 | integer | yes | (c * 9) | plain |
btree, for table "public.hoge"
========================================================
As you know above completed 1, 2 and 3 are not expression columns,
so it might better to remove these from the completion.
However, I didn't do that because a query for getting more suitable
attnum of index are became complicated.
Then, the patch includes new query to get attribute_numbers like this:
========================================================
+#define Query_for_list_of_attribute_numbers \
+"SELECT attnum "\
+" FROM pg_catalog.pg_attribute a, "\
+" pg_catalog.pg_class c "\
+" WHERE c.oid = a.attrelid "\
+" AND a.attnum > 0 "\
+" AND NOT a.attisdropped "\
+" /* %d %s */" \
+" AND a.attrelid = (select oid from pg_catalog.pg_class where relname = '%s') "\
+" AND pg_catalog.pg_table_is_visible(c.oid) "\
+"order by a.attnum asc "
========================================================
I have a question.
I read following comment of _complete_from_query(), however I'm not sure whether "%d" is
needed or not in above query. Any advices welcome!
========================================================
* 1. A simple query which must contain a %d and a %s, which will be replaced
* by the string length of the text and the text itself. The query may also
* have up to four more %s in it; the first two such will be replaced by the
* value of completion_info_charp, the next two by the value of
* completion_info_charp2.
========================================================
Thanks,
Tatsuro Yamada
Attachment | Content-Type | Size |
---|---|---|
tab_completion_alter_index_wip1.patch | text/x-patch | 2.1 KB |
From | Date | Subject | |
---|---|---|---|
Next Message | David Steele | 2018-12-21 06:12:43 | Re: Add timeline to partial WAL segments |
Previous Message | Kyotaro HORIGUCHI | 2018-12-21 05:23:19 | Re: Change pgarch_readyXlog() to return .history files first |