forked from huawei/openGauss-server
增加show variables like var_string语法,方便用户查询参数时,记不清变量名称时使用
This commit is contained in:
parent
3e5ed92b95
commit
eb4162cf4a
|
|
@ -697,7 +697,7 @@ static void ParseUpdateMultiSet(List *set_target_list, SelectStmt *stmt, core_yy
|
|||
UNBOUNDED UNCOMMITTED UNENCRYPTED UNION UNIQUE UNKNOWN UNLIMITED UNLISTEN UNLOCK UNLOGGED
|
||||
UNTIL UNUSABLE UPDATE USER USING
|
||||
|
||||
VACUUM VALID VALIDATE VALIDATION VALIDATOR VALUE_P VALUES VARCHAR VARCHAR2 VARIADIC VARRAY VARYING VCGROUP
|
||||
VACUUM VALID VALIDATE VALIDATION VALIDATOR VALUE_P VALUES VARCHAR VARCHAR2 VARIABLES VARIADIC VARRAY VARYING VCGROUP
|
||||
VERBOSE VERIFY VERSION_P VIEW VOLATILE
|
||||
|
||||
WHEN WHERE WHITESPACE_P WINDOW WITH WITHIN WITHOUT WORK WORKLOAD WRAPPER WRITE
|
||||
|
|
@ -2073,6 +2073,13 @@ VariableShowStmt:
|
|||
n->name = "session_authorization";
|
||||
$$ = (Node *) n;
|
||||
}
|
||||
| SHOW VARIABLES LIKE var_name
|
||||
{
|
||||
VariableShowStmt *n = makeNode(VariableShowStmt);
|
||||
n->name = "all";
|
||||
n->likename = $4;
|
||||
$$ =(Node *) n;
|
||||
}
|
||||
| SHOW ALL
|
||||
{
|
||||
VariableShowStmt *n = makeNode(VariableShowStmt);
|
||||
|
|
|
|||
|
|
@ -12278,7 +12278,7 @@ static void report_guc_option(struct config_generic* record);
|
|||
static void reapply_stacked_values(struct config_generic* variable, struct config_string* holder, GucStack* stack,
|
||||
const char* curvalue, GucContext curscontext, GucSource cursource);
|
||||
static void show_guc_config_option(const char* name, DestReceiver* dest);
|
||||
static void show_all_guc_config(DestReceiver* dest);
|
||||
static void show_all_guc_config(const char* likename, DestReceiver* dest);
|
||||
static char* _show_option(struct config_generic* record, bool use_units);
|
||||
static bool validate_option_array_item(const char* name, const char* value, bool skip_if_no_permissions);
|
||||
static void replace_config_value(char** optlines, char* name, char* value, config_type vartype);
|
||||
|
|
@ -16898,10 +16898,10 @@ void EmitWarningsOnPlaceholders(const char* className)
|
|||
/*
|
||||
* SHOW command
|
||||
*/
|
||||
void GetPGVariable(const char* name, DestReceiver* dest)
|
||||
void GetPGVariable(const char* name, const char* likename, DestReceiver* dest)
|
||||
{
|
||||
if (guc_name_compare(name, "all") == 0) {
|
||||
show_all_guc_config(dest);
|
||||
show_all_guc_config(likename, dest);
|
||||
} else {
|
||||
show_guc_config_option(name, dest);
|
||||
}
|
||||
|
|
@ -16960,7 +16960,7 @@ static void show_guc_config_option(const char* name, DestReceiver* dest)
|
|||
/*
|
||||
* SHOW ALL command
|
||||
*/
|
||||
static void show_all_guc_config(DestReceiver* dest)
|
||||
static void show_all_guc_config(const char* likename, DestReceiver* dest)
|
||||
{
|
||||
bool am_superuser = (GetUserId() == BOOTSTRAP_SUPERUSERID);
|
||||
int i;
|
||||
|
|
@ -16968,6 +16968,7 @@ static void show_all_guc_config(DestReceiver* dest)
|
|||
TupleDesc tupdesc;
|
||||
Datum values[3];
|
||||
bool isnull[3] = {false, false, false};
|
||||
char* ptr;
|
||||
|
||||
/* need a tuple descriptor representing three TEXT columns */
|
||||
tupdesc = CreateTemplateTupleDesc(3, false);
|
||||
|
|
@ -16986,6 +16987,13 @@ static void show_all_guc_config(DestReceiver* dest)
|
|||
continue;
|
||||
}
|
||||
|
||||
if(NULL != likename) {
|
||||
ptr = strstr((char*)conf->name, likename);
|
||||
if (NULL == ptr) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
/* assign to the values array */
|
||||
values[0] = PointerGetDatum(cstring_to_text(conf->name));
|
||||
|
||||
|
|
|
|||
|
|
@ -4892,7 +4892,7 @@ void standard_ProcessUtility(Node* parse_tree, const char* query_string, ParamLi
|
|||
case T_VariableShowStmt: {
|
||||
VariableShowStmt* n = (VariableShowStmt*)parse_tree;
|
||||
|
||||
GetPGVariable(n->name, dest);
|
||||
GetPGVariable(n->name, n->likename, dest);
|
||||
} break;
|
||||
case T_ShutdownStmt: {
|
||||
ShutdownStmt* n = (ShutdownStmt*)parse_tree;
|
||||
|
|
|
|||
|
|
@ -1783,6 +1783,7 @@ typedef struct VariableSetStmt {
|
|||
typedef struct VariableShowStmt {
|
||||
NodeTag type;
|
||||
char* name;
|
||||
char* likename;
|
||||
} VariableShowStmt;
|
||||
|
||||
/* ----------------------
|
||||
|
|
|
|||
|
|
@ -547,6 +547,7 @@ PG_KEYWORD("value", VALUE_P, UNRESERVED_KEYWORD)
|
|||
PG_KEYWORD("values", VALUES, COL_NAME_KEYWORD)
|
||||
PG_KEYWORD("varchar", VARCHAR, COL_NAME_KEYWORD)
|
||||
PG_KEYWORD("varchar2", VARCHAR2, COL_NAME_KEYWORD)
|
||||
PG_KEYWORD("variables", VARIABLES, UNRESERVED_KEYWORD)
|
||||
PG_KEYWORD("variadic", VARIADIC, RESERVED_KEYWORD)
|
||||
PG_KEYWORD("varying", VARYING, UNRESERVED_KEYWORD)
|
||||
PG_KEYWORD("vcgroup", VCGROUP, UNRESERVED_KEYWORD)
|
||||
|
|
|
|||
|
|
@ -251,7 +251,7 @@ extern void GetConfigOptionByNum(int varnum, const char** values, bool* noshow);
|
|||
extern int GetNumConfigOptions(void);
|
||||
|
||||
extern void SetPGVariable(const char* name, List* args, bool is_local);
|
||||
extern void GetPGVariable(const char* name, DestReceiver* dest);
|
||||
extern void GetPGVariable(const char* name, const char* likename, DestReceiver* dest);
|
||||
extern TupleDesc GetPGVariableResultDesc(const char* name);
|
||||
|
||||
#ifdef PGXC
|
||||
|
|
|
|||
Loading…
Reference in New Issue