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
|
UNBOUNDED UNCOMMITTED UNENCRYPTED UNION UNIQUE UNKNOWN UNLIMITED UNLISTEN UNLOCK UNLOGGED
|
||||||
UNTIL UNUSABLE UPDATE USER USING
|
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
|
VERBOSE VERIFY VERSION_P VIEW VOLATILE
|
||||||
|
|
||||||
WHEN WHERE WHITESPACE_P WINDOW WITH WITHIN WITHOUT WORK WORKLOAD WRAPPER WRITE
|
WHEN WHERE WHITESPACE_P WINDOW WITH WITHIN WITHOUT WORK WORKLOAD WRAPPER WRITE
|
||||||
|
|
@ -2073,6 +2073,13 @@ VariableShowStmt:
|
||||||
n->name = "session_authorization";
|
n->name = "session_authorization";
|
||||||
$$ = (Node *) n;
|
$$ = (Node *) n;
|
||||||
}
|
}
|
||||||
|
| SHOW VARIABLES LIKE var_name
|
||||||
|
{
|
||||||
|
VariableShowStmt *n = makeNode(VariableShowStmt);
|
||||||
|
n->name = "all";
|
||||||
|
n->likename = $4;
|
||||||
|
$$ =(Node *) n;
|
||||||
|
}
|
||||||
| SHOW ALL
|
| SHOW ALL
|
||||||
{
|
{
|
||||||
VariableShowStmt *n = makeNode(VariableShowStmt);
|
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,
|
static void reapply_stacked_values(struct config_generic* variable, struct config_string* holder, GucStack* stack,
|
||||||
const char* curvalue, GucContext curscontext, GucSource cursource);
|
const char* curvalue, GucContext curscontext, GucSource cursource);
|
||||||
static void show_guc_config_option(const char* name, DestReceiver* dest);
|
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 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 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);
|
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
|
* 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) {
|
if (guc_name_compare(name, "all") == 0) {
|
||||||
show_all_guc_config(dest);
|
show_all_guc_config(likename, dest);
|
||||||
} else {
|
} else {
|
||||||
show_guc_config_option(name, dest);
|
show_guc_config_option(name, dest);
|
||||||
}
|
}
|
||||||
|
|
@ -16960,7 +16960,7 @@ static void show_guc_config_option(const char* name, DestReceiver* dest)
|
||||||
/*
|
/*
|
||||||
* SHOW ALL command
|
* 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);
|
bool am_superuser = (GetUserId() == BOOTSTRAP_SUPERUSERID);
|
||||||
int i;
|
int i;
|
||||||
|
|
@ -16968,6 +16968,7 @@ static void show_all_guc_config(DestReceiver* dest)
|
||||||
TupleDesc tupdesc;
|
TupleDesc tupdesc;
|
||||||
Datum values[3];
|
Datum values[3];
|
||||||
bool isnull[3] = {false, false, false};
|
bool isnull[3] = {false, false, false};
|
||||||
|
char* ptr;
|
||||||
|
|
||||||
/* need a tuple descriptor representing three TEXT columns */
|
/* need a tuple descriptor representing three TEXT columns */
|
||||||
tupdesc = CreateTemplateTupleDesc(3, false);
|
tupdesc = CreateTemplateTupleDesc(3, false);
|
||||||
|
|
@ -16986,6 +16987,13 @@ static void show_all_guc_config(DestReceiver* dest)
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(NULL != likename) {
|
||||||
|
ptr = strstr((char*)conf->name, likename);
|
||||||
|
if (NULL == ptr) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* assign to the values array */
|
/* assign to the values array */
|
||||||
values[0] = PointerGetDatum(cstring_to_text(conf->name));
|
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: {
|
case T_VariableShowStmt: {
|
||||||
VariableShowStmt* n = (VariableShowStmt*)parse_tree;
|
VariableShowStmt* n = (VariableShowStmt*)parse_tree;
|
||||||
|
|
||||||
GetPGVariable(n->name, dest);
|
GetPGVariable(n->name, n->likename, dest);
|
||||||
} break;
|
} break;
|
||||||
case T_ShutdownStmt: {
|
case T_ShutdownStmt: {
|
||||||
ShutdownStmt* n = (ShutdownStmt*)parse_tree;
|
ShutdownStmt* n = (ShutdownStmt*)parse_tree;
|
||||||
|
|
|
||||||
|
|
@ -1783,6 +1783,7 @@ typedef struct VariableSetStmt {
|
||||||
typedef struct VariableShowStmt {
|
typedef struct VariableShowStmt {
|
||||||
NodeTag type;
|
NodeTag type;
|
||||||
char* name;
|
char* name;
|
||||||
|
char* likename;
|
||||||
} VariableShowStmt;
|
} VariableShowStmt;
|
||||||
|
|
||||||
/* ----------------------
|
/* ----------------------
|
||||||
|
|
|
||||||
|
|
@ -547,6 +547,7 @@ PG_KEYWORD("value", VALUE_P, UNRESERVED_KEYWORD)
|
||||||
PG_KEYWORD("values", VALUES, COL_NAME_KEYWORD)
|
PG_KEYWORD("values", VALUES, COL_NAME_KEYWORD)
|
||||||
PG_KEYWORD("varchar", VARCHAR, COL_NAME_KEYWORD)
|
PG_KEYWORD("varchar", VARCHAR, COL_NAME_KEYWORD)
|
||||||
PG_KEYWORD("varchar2", VARCHAR2, COL_NAME_KEYWORD)
|
PG_KEYWORD("varchar2", VARCHAR2, COL_NAME_KEYWORD)
|
||||||
|
PG_KEYWORD("variables", VARIABLES, UNRESERVED_KEYWORD)
|
||||||
PG_KEYWORD("variadic", VARIADIC, RESERVED_KEYWORD)
|
PG_KEYWORD("variadic", VARIADIC, RESERVED_KEYWORD)
|
||||||
PG_KEYWORD("varying", VARYING, UNRESERVED_KEYWORD)
|
PG_KEYWORD("varying", VARYING, UNRESERVED_KEYWORD)
|
||||||
PG_KEYWORD("vcgroup", VCGROUP, 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 int GetNumConfigOptions(void);
|
||||||
|
|
||||||
extern void SetPGVariable(const char* name, List* args, bool is_local);
|
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);
|
extern TupleDesc GetPGVariableResultDesc(const char* name);
|
||||||
|
|
||||||
#ifdef PGXC
|
#ifdef PGXC
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue