@ -1329,6 +1329,13 @@ static const char *const table_storage_parameters[] = {
NULL
} ;
/* Optional parameters for CREATE VIEW and ALTER VIEW */
static const char * const view_optional_parameters [ ] = {
" check_option " ,
" security_barrier " ,
" security_invoker " ,
NULL
} ;
/* Forward declaration of functions */
static char * * psql_completion ( const char * text , int start , int end ) ;
@ -2216,8 +2223,7 @@ psql_completion(const char *text, int start, int end)
COMPLETE_WITH ( " TO " ) ;
/* ALTER VIEW <name> */
else if ( Matches ( " ALTER " , " VIEW " , MatchAny ) )
COMPLETE_WITH ( " ALTER COLUMN " , " OWNER TO " , " RENAME " ,
" SET SCHEMA " ) ;
COMPLETE_WITH ( " ALTER COLUMN " , " OWNER TO " , " RENAME " , " RESET " , " SET " ) ;
/* ALTER VIEW xxx RENAME */
else if ( Matches ( " ALTER " , " VIEW " , MatchAny , " RENAME " ) )
COMPLETE_WITH_ATTR_PLUS ( prev2_wd , " COLUMN " , " TO " ) ;
@ -2233,6 +2239,21 @@ psql_completion(const char *text, int start, int end)
/* ALTER VIEW xxx RENAME COLUMN yyy */
else if ( Matches ( " ALTER " , " VIEW " , MatchAny , " RENAME " , " COLUMN " , MatchAnyExcept ( " TO " ) ) )
COMPLETE_WITH ( " TO " ) ;
/* ALTER VIEW xxx RESET ( */
else if ( Matches ( " ALTER " , " VIEW " , MatchAny , " RESET " ) )
COMPLETE_WITH ( " ( " ) ;
/* Complete ALTER VIEW xxx SET with "(" or "SCHEMA" */
else if ( Matches ( " ALTER " , " VIEW " , MatchAny , " SET " ) )
COMPLETE_WITH ( " ( " , " SCHEMA " ) ;
/* ALTER VIEW xxx SET|RESET ( yyy [= zzz] ) */
else if ( Matches ( " ALTER " , " VIEW " , MatchAny , " SET|RESET " , " ( " ) )
COMPLETE_WITH_LIST ( view_optional_parameters ) ;
else if ( Matches ( " ALTER " , " VIEW " , MatchAny , " SET " , " ( " , MatchAny ) )
COMPLETE_WITH ( " = " ) ;
else if ( Matches ( " ALTER " , " VIEW " , MatchAny , " SET " , " ( " , " check_option " , " = " ) )
COMPLETE_WITH ( " local " , " cascaded " ) ;
else if ( Matches ( " ALTER " , " VIEW " , MatchAny , " SET " , " ( " , " security_barrier|security_invoker " , " = " ) )
COMPLETE_WITH ( " true " , " false " ) ;
/* ALTER MATERIALIZED VIEW <name> */
else if ( Matches ( " ALTER " , " MATERIALIZED " , " VIEW " , MatchAny ) )
@ -3531,14 +3552,35 @@ psql_completion(const char *text, int start, int end)
}
/* CREATE VIEW --- is allowed inside CREATE SCHEMA, so use TailMatches */
/* Complete CREATE [ OR REPLACE ] VIEW <name> with AS */
/* Complete CREATE [ OR REPLACE ] VIEW <name> with AS or WITH */
else if ( TailMatches ( " CREATE " , " VIEW " , MatchAny ) | |
TailMatches ( " CREATE " , " OR " , " REPLACE " , " VIEW " , MatchAny ) )
COMPLETE_WITH ( " AS " ) ;
COMPLETE_WITH ( " AS " , " WITH " ) ;
/* Complete "CREATE [ OR REPLACE ] VIEW <sth> AS with "SELECT" */
else if ( TailMatches ( " CREATE " , " VIEW " , MatchAny , " AS " ) | |
TailMatches ( " CREATE " , " OR " , " REPLACE " , " VIEW " , MatchAny , " AS " ) )
COMPLETE_WITH ( " SELECT " ) ;
/* CREATE [ OR REPLACE ] VIEW <name> WITH ( yyy [= zzz] ) */
else if ( TailMatches ( " CREATE " , " VIEW " , MatchAny , " WITH " ) | |
TailMatches ( " CREATE " , " OR " , " REPLACE " , " VIEW " , MatchAny , " WITH " ) )
COMPLETE_WITH ( " ( " ) ;
else if ( TailMatches ( " CREATE " , " VIEW " , MatchAny , " WITH " , " ( " ) | |
TailMatches ( " CREATE " , " OR " , " REPLACE " , " VIEW " , MatchAny , " WITH " , " ( " ) )
COMPLETE_WITH_LIST ( view_optional_parameters ) ;
else if ( TailMatches ( " CREATE " , " VIEW " , MatchAny , " WITH " , " ( " , " check_option " ) | |
TailMatches ( " CREATE " , " OR " , " REPLACE " , " VIEW " , MatchAny , " WITH " , " ( " , " check_option " ) )
COMPLETE_WITH ( " = " ) ;
else if ( TailMatches ( " CREATE " , " VIEW " , MatchAny , " WITH " , " ( " , " check_option " , " = " ) | |
TailMatches ( " CREATE " , " OR " , " REPLACE " , " VIEW " , MatchAny , " WITH " , " ( " , " check_option " , " = " ) )
COMPLETE_WITH ( " local " , " cascaded " ) ;
/* CREATE [ OR REPLACE ] VIEW <name> WITH ( ... ) AS */
else if ( TailMatches ( " CREATE " , " VIEW " , MatchAny , " WITH " , " (*) " ) | |
TailMatches ( " CREATE " , " OR " , " REPLACE " , " VIEW " , MatchAny , " WITH " , " (*) " ) )
COMPLETE_WITH ( " AS " ) ;
/* CREATE [ OR REPLACE ] VIEW <name> WITH ( ... ) AS SELECT */
else if ( TailMatches ( " CREATE " , " VIEW " , MatchAny , " WITH " , " (*) " , " AS " ) | |
TailMatches ( " CREATE " , " OR " , " REPLACE " , " VIEW " , MatchAny , " WITH " , " (*) " , " AS " ) )
COMPLETE_WITH ( " SELECT " ) ;
/* CREATE MATERIALIZED VIEW */
else if ( Matches ( " CREATE " , " MATERIALIZED " ) )