create_alter_role_tab_complete.diff

application/octet-stream

Filename: create_alter_role_tab_complete.diff
Type: application/octet-stream
Part: 1
Message: psql: tab completions for 'WITH'

Patch

Same data as JSON: GET /api/v1/attachments/:id/patch the parsed metadata as JSON — format, series position, per-file stats; never the diff bytes. API reference →
Format: unified
File+
src/bin/psql/tab-complete.c 0 0
diff --git a/src/bin/psql/tab-complete.c b/src/bin/psql/tab-complete.c
new file mode 100644
index 975d655..90bbfb7
*** a/src/bin/psql/tab-complete.c
--- b/src/bin/psql/tab-complete.c
*************** psql_completion(char *text, int start, i
*** 999,1015 ****
  	}
  
  	/* ALTER USER,ROLE <name> */
! 	else if (pg_strcasecmp(prev3_wd, "ALTER") == 0 &&
! 			 !(pg_strcasecmp(prev2_wd, "USER") == 0 && pg_strcasecmp(prev_wd, "MAPPING") == 0) &&
! 			 (pg_strcasecmp(prev2_wd, "USER") == 0 ||
! 			  pg_strcasecmp(prev2_wd, "ROLE") == 0))
  	{
  		static const char *const list_ALTERUSER[] =
  		{"CONNECTION LIMIT", "CREATEDB", "CREATEROLE", "CREATEUSER",
  			"ENCRYPTED", "INHERIT", "LOGIN", "NOCREATEDB", "NOCREATEROLE",
  			"NOCREATEUSER", "NOINHERIT", "NOLOGIN", "NOREPLICATION",
  			"NOSUPERUSER", "RENAME TO", "REPLICATION", "RESET", "SET",
! 		"SUPERUSER", "UNENCRYPTED", "VALID UNTIL", NULL};
  
  		COMPLETE_WITH_LIST(list_ALTERUSER);
  	}
--- 999,1019 ----
  	}
  
  	/* ALTER USER,ROLE <name> */
! 	else if ((pg_strcasecmp(prev3_wd, "ALTER") == 0 &&
! 			  !(pg_strcasecmp(prev2_wd, "USER") == 0 && pg_strcasecmp(prev_wd, "MAPPING") == 0) &&
! 			  (pg_strcasecmp(prev2_wd, "USER") == 0 ||
! 			   pg_strcasecmp(prev2_wd, "ROLE") == 0)) ||
! 			 (pg_strcasecmp(prev4_wd, "ALTER") == 0 &&
! 			  (pg_strcasecmp(prev3_wd, "USER") == 0 ||
! 			   pg_strcasecmp(prev3_wd, "ROLE") == 0) &&
! 			  pg_strcasecmp(prev_wd, "WITH") == 0))
  	{
  		static const char *const list_ALTERUSER[] =
  		{"CONNECTION LIMIT", "CREATEDB", "CREATEROLE", "CREATEUSER",
  			"ENCRYPTED", "INHERIT", "LOGIN", "NOCREATEDB", "NOCREATEROLE",
  			"NOCREATEUSER", "NOINHERIT", "NOLOGIN", "NOREPLICATION",
  			"NOSUPERUSER", "RENAME TO", "REPLICATION", "RESET", "SET",
! 		 "SUPERUSER", "UNENCRYPTED", "VALID UNTIL", "WITH", NULL};
  
  		COMPLETE_WITH_LIST(list_ALTERUSER);
  	}
*************** psql_completion(char *text, int start, i
*** 1933,1949 ****
  		COMPLETE_WITH_CONST("PROCEDURE");
  
  /* CREATE ROLE,USER,GROUP */
! 	else if (pg_strcasecmp(prev3_wd, "CREATE") == 0 &&
  			 !(pg_strcasecmp(prev2_wd, "USER") == 0 && pg_strcasecmp(prev_wd, "MAPPING") == 0) &&
  			 (pg_strcasecmp(prev2_wd, "ROLE") == 0 ||
! 			  pg_strcasecmp(prev2_wd, "GROUP") == 0 || pg_strcasecmp(prev2_wd, "USER") == 0))
  	{
  		static const char *const list_CREATEROLE[] =
  		{"ADMIN", "CONNECTION LIMIT", "CREATEDB", "CREATEROLE", "CREATEUSER",
  			"ENCRYPTED", "IN", "INHERIT", "LOGIN", "NOCREATEDB",
  			"NOCREATEROLE", "NOCREATEUSER", "NOINHERIT", "NOLOGIN",
  			"NOREPLICATION", "NOSUPERUSER", "REPLICATION", "ROLE",
! 		"SUPERUSER", "SYSID", "UNENCRYPTED", "VALID UNTIL", NULL};
  
  		COMPLETE_WITH_LIST(list_CREATEROLE);
  	}
--- 1937,1958 ----
  		COMPLETE_WITH_CONST("PROCEDURE");
  
  /* CREATE ROLE,USER,GROUP */
! 	else if ((pg_strcasecmp(prev3_wd, "CREATE") == 0 &&
  			 !(pg_strcasecmp(prev2_wd, "USER") == 0 && pg_strcasecmp(prev_wd, "MAPPING") == 0) &&
  			 (pg_strcasecmp(prev2_wd, "ROLE") == 0 ||
! 			  pg_strcasecmp(prev2_wd, "GROUP") == 0 || pg_strcasecmp(prev2_wd, "USER") == 0)) ||
! 			 (pg_strcasecmp(prev4_wd, "CREATE") == 0 &&
! 			  (pg_strcasecmp(prev3_wd, "ROLE") == 0 ||
! 			   pg_strcasecmp(prev3_wd, "GROUP") == 0 ||
! 			   pg_strcasecmp(prev3_wd, "USER") == 0) &&
! 			   pg_strcasecmp(prev_wd, "WITH") == 0))
  	{
  		static const char *const list_CREATEROLE[] =
  		{"ADMIN", "CONNECTION LIMIT", "CREATEDB", "CREATEROLE", "CREATEUSER",
  			"ENCRYPTED", "IN", "INHERIT", "LOGIN", "NOCREATEDB",
  			"NOCREATEROLE", "NOCREATEUSER", "NOINHERIT", "NOLOGIN",
  			"NOREPLICATION", "NOSUPERUSER", "REPLICATION", "ROLE",
! 		 "SUPERUSER", "SYSID", "UNENCRYPTED", "VALID UNTIL", "WITH", NULL};
  
  		COMPLETE_WITH_LIST(list_CREATEROLE);
  	}