@@ -3430,28 +3430,48 @@ psql_completion(const char *text, int start, int end)
3430
3430
COMPLETE_WITH ("DATA" );
3431
3431
3432
3432
/* REINDEX */
3433
- else if (Matches ("REINDEX" ))
3433
+ else if (Matches ("REINDEX" ) ||
3434
+ Matches ("REINDEX" , "(*)" ))
3434
3435
COMPLETE_WITH ("TABLE" , "INDEX" , "SYSTEM" , "SCHEMA" , "DATABASE" );
3435
- else if (Matches ("REINDEX" , "TABLE" ))
3436
+ else if (Matches ("REINDEX" , "TABLE" ) ||
3437
+ Matches ("REINDEX" , "(*)" , "TABLE" ))
3436
3438
COMPLETE_WITH_SCHEMA_QUERY (Query_for_list_of_indexables ,
3437
3439
" UNION SELECT 'CONCURRENTLY'" );
3438
- else if (Matches ("REINDEX" , "INDEX" ))
3440
+ else if (Matches ("REINDEX" , "INDEX" ) ||
3441
+ Matches ("REINDEX" , "(*)" , "INDEX" ))
3439
3442
COMPLETE_WITH_SCHEMA_QUERY (Query_for_list_of_indexes ,
3440
3443
" UNION SELECT 'CONCURRENTLY'" );
3441
- else if (Matches ("REINDEX" , "SCHEMA" ))
3444
+ else if (Matches ("REINDEX" , "SCHEMA" ) ||
3445
+ Matches ("REINDEX" , "(*)" , "SCHEMA" ))
3442
3446
COMPLETE_WITH_QUERY (Query_for_list_of_schemas
3443
3447
" UNION SELECT 'CONCURRENTLY'" );
3444
- else if (Matches ("REINDEX" , "SYSTEM|DATABASE" ))
3448
+ else if (Matches ("REINDEX" , "SYSTEM|DATABASE" ) ||
3449
+ Matches ("REINDEX" , "(*)" , "SYSTEM|DATABASE" ))
3445
3450
COMPLETE_WITH_QUERY (Query_for_list_of_databases
3446
3451
" UNION SELECT 'CONCURRENTLY'" );
3447
- else if (Matches ("REINDEX" , "TABLE" , "CONCURRENTLY" ))
3452
+ else if (Matches ("REINDEX" , "TABLE" , "CONCURRENTLY" ) ||
3453
+ Matches ("REINDEX" , "(*)" , "TABLE" , "CONCURRENTLY" ))
3448
3454
COMPLETE_WITH_SCHEMA_QUERY (Query_for_list_of_indexables , NULL );
3449
- else if (Matches ("REINDEX" , "INDEX" , "CONCURRENTLY" ))
3455
+ else if (Matches ("REINDEX" , "INDEX" , "CONCURRENTLY" ) ||
3456
+ Matches ("REINDEX" , "(*)" , "INDEX" , "CONCURRENTLY" ))
3450
3457
COMPLETE_WITH_SCHEMA_QUERY (Query_for_list_of_indexes , NULL );
3451
- else if (Matches ("REINDEX" , "SCHEMA" , "CONCURRENTLY" ))
3458
+ else if (Matches ("REINDEX" , "SCHEMA" , "CONCURRENTLY" ) ||
3459
+ Matches ("REINDEX" , "(*)" , "SCHEMA" , "CONCURRENTLY" ))
3452
3460
COMPLETE_WITH_QUERY (Query_for_list_of_schemas );
3453
- else if (Matches ("REINDEX" , "SYSTEM|DATABASE" , "CONCURRENTLY" ))
3461
+ else if (Matches ("REINDEX" , "SYSTEM|DATABASE" , "CONCURRENTLY" ) ||
3462
+ Matches ("REINDEX" , "(*)" , "SYSTEM|DATABASE" , "CONCURRENTLY" ))
3454
3463
COMPLETE_WITH_QUERY (Query_for_list_of_databases );
3464
+ else if (HeadMatches ("REINDEX" , "(*" ) &&
3465
+ !HeadMatches ("REINDEX" , "(*)" ))
3466
+ {
3467
+ /*
3468
+ * This fires if we're in an unfinished parenthesized option list.
3469
+ * get_previous_words treats a completed parenthesized option list as
3470
+ * one word, so the above test is correct.
3471
+ */
3472
+ if (ends_with (prev_wd , '(' ) || ends_with (prev_wd , ',' ))
3473
+ COMPLETE_WITH ("VERBOSE" );
3474
+ }
3455
3475
3456
3476
/* SECURITY LABEL */
3457
3477
else if (Matches ("SECURITY" ))
0 commit comments