mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
MDEV-7635: Renamed standards_compliant_cte to standard_compliant_cte
This commit is contained in:
@ -955,7 +955,7 @@ where folks.id = ma.id and (mother not in (select id from ancestor_ids))
|
|||||||
select generation, name from ancestor_ids a, folks
|
select generation, name from ancestor_ids a, folks
|
||||||
where a.id = folks.id;
|
where a.id = folks.id;
|
||||||
ERROR HY000: Restrictions imposed on recursive definitions are violated for table 'ancestor_ids'
|
ERROR HY000: Restrictions imposed on recursive definitions are violated for table 'ancestor_ids'
|
||||||
set standards_compliant_cte=0;
|
set standard_compliant_cte=0;
|
||||||
with recursive
|
with recursive
|
||||||
ancestor_ids (id, generation)
|
ancestor_ids (id, generation)
|
||||||
as
|
as
|
||||||
@ -999,7 +999,7 @@ generation name
|
|||||||
2 Grandma Sally
|
2 Grandma Sally
|
||||||
2 Grandpa Ben
|
2 Grandpa Ben
|
||||||
3 Grandgrandma Martha
|
3 Grandgrandma Martha
|
||||||
set standards_compliant_cte=1;
|
set standard_compliant_cte=1;
|
||||||
with recursive
|
with recursive
|
||||||
coupled_ancestor_ids (id)
|
coupled_ancestor_ids (id)
|
||||||
as
|
as
|
||||||
@ -1023,7 +1023,7 @@ n.father is not null and n.mother is not null
|
|||||||
select p.* from coupled_ancestor_ids a, folks p
|
select p.* from coupled_ancestor_ids a, folks p
|
||||||
where a.id = p.id;
|
where a.id = p.id;
|
||||||
ERROR HY000: Restrictions imposed on recursive definitions are violated for table 'coupled_ancestor_ids'
|
ERROR HY000: Restrictions imposed on recursive definitions are violated for table 'coupled_ancestor_ids'
|
||||||
set statement standards_compliant_cte=0 for
|
set statement standard_compliant_cte=0 for
|
||||||
with recursive
|
with recursive
|
||||||
coupled_ancestor_ids (id)
|
coupled_ancestor_ids (id)
|
||||||
as
|
as
|
||||||
@ -1073,7 +1073,7 @@ where p.id = a.id
|
|||||||
)
|
)
|
||||||
select * from ancestors;
|
select * from ancestors;
|
||||||
ERROR HY000: Restrictions imposed on recursive definitions are violated for table 'ancestor_ids'
|
ERROR HY000: Restrictions imposed on recursive definitions are violated for table 'ancestor_ids'
|
||||||
set statement standards_compliant_cte=0 for
|
set statement standard_compliant_cte=0 for
|
||||||
with recursive
|
with recursive
|
||||||
ancestor_ids (id)
|
ancestor_ids (id)
|
||||||
as
|
as
|
||||||
@ -1156,7 +1156,7 @@ where p.id = a.id
|
|||||||
)
|
)
|
||||||
select * from ancestors;
|
select * from ancestors;
|
||||||
ERROR HY000: Restrictions imposed on recursive definitions are violated for table 'ancestor_ids'
|
ERROR HY000: Restrictions imposed on recursive definitions are violated for table 'ancestor_ids'
|
||||||
set statement standards_compliant_cte=0 for
|
set statement standard_compliant_cte=0 for
|
||||||
with recursive
|
with recursive
|
||||||
ancestor_ids (id, generation)
|
ancestor_ids (id, generation)
|
||||||
as
|
as
|
||||||
|
@ -1068,9 +1068,9 @@ The following options may be given as the first argument:
|
|||||||
NO_ENGINE_SUBSTITUTION, PAD_CHAR_TO_FULL_LENGTH
|
NO_ENGINE_SUBSTITUTION, PAD_CHAR_TO_FULL_LENGTH
|
||||||
--stack-trace Print a symbolic stack trace on failure
|
--stack-trace Print a symbolic stack trace on failure
|
||||||
(Defaults to on; use --skip-stack-trace to disable.)
|
(Defaults to on; use --skip-stack-trace to disable.)
|
||||||
--standards-compliant-cte
|
--standard-compliant-cte
|
||||||
Allow only standards compiant CTE
|
Allow only CTEs compliant to SQL standard
|
||||||
(Defaults to on; use --skip-standards-compliant-cte to disable.)
|
(Defaults to on; use --skip-standard-compliant-cte to disable.)
|
||||||
--stored-program-cache=#
|
--stored-program-cache=#
|
||||||
The soft upper limit for number of cached stored routines
|
The soft upper limit for number of cached stored routines
|
||||||
for one connection.
|
for one connection.
|
||||||
@ -1470,7 +1470,7 @@ slow-query-log FALSE
|
|||||||
sort-buffer-size 2097152
|
sort-buffer-size 2097152
|
||||||
sql-mode NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
|
sql-mode NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
|
||||||
stack-trace TRUE
|
stack-trace TRUE
|
||||||
standards-compliant-cte TRUE
|
standard-compliant-cte TRUE
|
||||||
stored-program-cache 256
|
stored-program-cache 256
|
||||||
strict-password-validation TRUE
|
strict-password-validation TRUE
|
||||||
symbolic-links FALSE
|
symbolic-links FALSE
|
||||||
|
@ -3803,14 +3803,14 @@ NUMERIC_BLOCK_SIZE NULL
|
|||||||
ENUM_VALUE_LIST NULL
|
ENUM_VALUE_LIST NULL
|
||||||
READ_ONLY YES
|
READ_ONLY YES
|
||||||
COMMAND_LINE_ARGUMENT NULL
|
COMMAND_LINE_ARGUMENT NULL
|
||||||
VARIABLE_NAME STANDARDS_COMPLIANT_CTE
|
VARIABLE_NAME STANDARD_COMPLIANT_CTE
|
||||||
SESSION_VALUE ON
|
SESSION_VALUE ON
|
||||||
GLOBAL_VALUE ON
|
GLOBAL_VALUE ON
|
||||||
GLOBAL_VALUE_ORIGIN COMPILE-TIME
|
GLOBAL_VALUE_ORIGIN COMPILE-TIME
|
||||||
DEFAULT_VALUE ON
|
DEFAULT_VALUE ON
|
||||||
VARIABLE_SCOPE SESSION
|
VARIABLE_SCOPE SESSION
|
||||||
VARIABLE_TYPE BOOLEAN
|
VARIABLE_TYPE BOOLEAN
|
||||||
VARIABLE_COMMENT Allow only standards compiant CTE
|
VARIABLE_COMMENT Allow only CTEs compliant to SQL standard
|
||||||
NUMERIC_MIN_VALUE NULL
|
NUMERIC_MIN_VALUE NULL
|
||||||
NUMERIC_MAX_VALUE NULL
|
NUMERIC_MAX_VALUE NULL
|
||||||
NUMERIC_BLOCK_SIZE NULL
|
NUMERIC_BLOCK_SIZE NULL
|
||||||
|
@ -4559,14 +4559,14 @@ NUMERIC_BLOCK_SIZE NULL
|
|||||||
ENUM_VALUE_LIST NULL
|
ENUM_VALUE_LIST NULL
|
||||||
READ_ONLY YES
|
READ_ONLY YES
|
||||||
COMMAND_LINE_ARGUMENT REQUIRED
|
COMMAND_LINE_ARGUMENT REQUIRED
|
||||||
VARIABLE_NAME STANDARDS_COMPLIANT_CTE
|
VARIABLE_NAME STANDARD_COMPLIANT_CTE
|
||||||
SESSION_VALUE ON
|
SESSION_VALUE ON
|
||||||
GLOBAL_VALUE ON
|
GLOBAL_VALUE ON
|
||||||
GLOBAL_VALUE_ORIGIN COMPILE-TIME
|
GLOBAL_VALUE_ORIGIN COMPILE-TIME
|
||||||
DEFAULT_VALUE ON
|
DEFAULT_VALUE ON
|
||||||
VARIABLE_SCOPE SESSION
|
VARIABLE_SCOPE SESSION
|
||||||
VARIABLE_TYPE BOOLEAN
|
VARIABLE_TYPE BOOLEAN
|
||||||
VARIABLE_COMMENT Allow only standards compiant CTE
|
VARIABLE_COMMENT Allow only CTEs compliant to SQL standard
|
||||||
NUMERIC_MIN_VALUE NULL
|
NUMERIC_MIN_VALUE NULL
|
||||||
NUMERIC_MAX_VALUE NULL
|
NUMERIC_MAX_VALUE NULL
|
||||||
NUMERIC_BLOCK_SIZE NULL
|
NUMERIC_BLOCK_SIZE NULL
|
||||||
|
@ -787,7 +787,7 @@ as
|
|||||||
select * from ancestors;
|
select * from ancestors;
|
||||||
|
|
||||||
|
|
||||||
--ERROR ER_NOT_STANDARDS_COMPLIANT_RECURSIVE
|
--ERROR ER_NOT_STANDARD_COMPLIANT_RECURSIVE
|
||||||
with recursive
|
with recursive
|
||||||
ancestor_ids (id, generation)
|
ancestor_ids (id, generation)
|
||||||
as
|
as
|
||||||
@ -805,7 +805,7 @@ as
|
|||||||
select generation, name from ancestor_ids a, folks
|
select generation, name from ancestor_ids a, folks
|
||||||
where a.id = folks.id;
|
where a.id = folks.id;
|
||||||
|
|
||||||
set standards_compliant_cte=0;
|
set standard_compliant_cte=0;
|
||||||
|
|
||||||
--ERROR ER_WITH_COL_WRONG_LIST
|
--ERROR ER_WITH_COL_WRONG_LIST
|
||||||
with recursive
|
with recursive
|
||||||
@ -844,9 +844,9 @@ as
|
|||||||
select generation, name from ancestor_ids a, folks
|
select generation, name from ancestor_ids a, folks
|
||||||
where a.id = folks.id;
|
where a.id = folks.id;
|
||||||
|
|
||||||
set standards_compliant_cte=1;
|
set standard_compliant_cte=1;
|
||||||
|
|
||||||
--ERROR ER_NOT_STANDARDS_COMPLIANT_RECURSIVE
|
--ERROR ER_NOT_STANDARD_COMPLIANT_RECURSIVE
|
||||||
with recursive
|
with recursive
|
||||||
coupled_ancestor_ids (id)
|
coupled_ancestor_ids (id)
|
||||||
as
|
as
|
||||||
@ -870,7 +870,7 @@ as
|
|||||||
select p.* from coupled_ancestor_ids a, folks p
|
select p.* from coupled_ancestor_ids a, folks p
|
||||||
where a.id = p.id;
|
where a.id = p.id;
|
||||||
|
|
||||||
set statement standards_compliant_cte=0 for
|
set statement standard_compliant_cte=0 for
|
||||||
with recursive
|
with recursive
|
||||||
coupled_ancestor_ids (id)
|
coupled_ancestor_ids (id)
|
||||||
as
|
as
|
||||||
@ -894,7 +894,7 @@ as
|
|||||||
select p.* from coupled_ancestor_ids a, folks p
|
select p.* from coupled_ancestor_ids a, folks p
|
||||||
where a.id = p.id;
|
where a.id = p.id;
|
||||||
|
|
||||||
--ERROR ER_NOT_STANDARDS_COMPLIANT_RECURSIVE
|
--ERROR ER_NOT_STANDARD_COMPLIANT_RECURSIVE
|
||||||
with recursive
|
with recursive
|
||||||
ancestor_ids (id)
|
ancestor_ids (id)
|
||||||
as
|
as
|
||||||
@ -915,7 +915,7 @@ as
|
|||||||
)
|
)
|
||||||
select * from ancestors;
|
select * from ancestors;
|
||||||
|
|
||||||
set statement standards_compliant_cte=0 for
|
set statement standard_compliant_cte=0 for
|
||||||
with recursive
|
with recursive
|
||||||
ancestor_ids (id)
|
ancestor_ids (id)
|
||||||
as
|
as
|
||||||
@ -958,7 +958,7 @@ as
|
|||||||
)
|
)
|
||||||
select * from ancestors;
|
select * from ancestors;
|
||||||
|
|
||||||
--ERROR ER_NOT_STANDARDS_COMPLIANT_RECURSIVE
|
--ERROR ER_NOT_STANDARD_COMPLIANT_RECURSIVE
|
||||||
with recursive
|
with recursive
|
||||||
ancestor_ids (id, generation)
|
ancestor_ids (id, generation)
|
||||||
as
|
as
|
||||||
@ -983,7 +983,7 @@ as
|
|||||||
)
|
)
|
||||||
select * from ancestors;
|
select * from ancestors;
|
||||||
|
|
||||||
set statement standards_compliant_cte=0 for
|
set statement standard_compliant_cte=0 for
|
||||||
with recursive
|
with recursive
|
||||||
ancestor_ids (id, generation)
|
ancestor_ids (id, generation)
|
||||||
as
|
as
|
||||||
|
@ -7355,7 +7355,7 @@ ER_UNACCEPTABLE_MUTUAL_RECURSION
|
|||||||
eng "Unacceptable mutual recursion with anchored table '%s'"
|
eng "Unacceptable mutual recursion with anchored table '%s'"
|
||||||
ER_REF_TO_RECURSIVE_WITH_TABLE_IN_DERIVED
|
ER_REF_TO_RECURSIVE_WITH_TABLE_IN_DERIVED
|
||||||
eng "Reference to recursive WITH table '%s' in materialized derived"
|
eng "Reference to recursive WITH table '%s' in materialized derived"
|
||||||
ER_NOT_STANDARDS_COMPLIANT_RECURSIVE
|
ER_NOT_STANDARD_COMPLIANT_RECURSIVE
|
||||||
eng "Restrictions imposed on recursive definitions are violated for table '%s'"R_WRONG_WINDOW_SPEC_NAME
|
eng "Restrictions imposed on recursive definitions are violated for table '%s'"R_WRONG_WINDOW_SPEC_NAME
|
||||||
ER_WRONG_WINDOW_SPEC_NAME
|
ER_WRONG_WINDOW_SPEC_NAME
|
||||||
eng "Window specification with name '%s' is not defined"
|
eng "Window specification with name '%s' is not defined"
|
||||||
|
@ -635,7 +635,7 @@ typedef struct system_variables
|
|||||||
my_bool old_alter_table;
|
my_bool old_alter_table;
|
||||||
my_bool old_passwords;
|
my_bool old_passwords;
|
||||||
my_bool big_tables;
|
my_bool big_tables;
|
||||||
my_bool only_standards_compliant_cte;
|
my_bool only_standard_compliant_cte;
|
||||||
my_bool query_cache_strip_comments;
|
my_bool query_cache_strip_comments;
|
||||||
my_bool sql_log_slow;
|
my_bool sql_log_slow;
|
||||||
my_bool sql_log_bin;
|
my_bool sql_log_bin;
|
||||||
|
@ -1048,7 +1048,7 @@ bool TABLE_LIST::is_with_table_recursive_reference()
|
|||||||
false otherwise
|
false otherwise
|
||||||
*/
|
*/
|
||||||
|
|
||||||
bool st_select_lex::check_unrestricted_recursive(bool only_standards_compliant)
|
bool st_select_lex::check_unrestricted_recursive(bool only_standard_compliant)
|
||||||
{
|
{
|
||||||
With_element *with_elem= get_with_element();
|
With_element *with_elem= get_with_element();
|
||||||
if (!with_elem ||!with_elem->is_recursive)
|
if (!with_elem ||!with_elem->is_recursive)
|
||||||
@ -1077,9 +1077,9 @@ bool st_select_lex::check_unrestricted_recursive(bool only_standards_compliant)
|
|||||||
with_elem->get_mutually_recursive());
|
with_elem->get_mutually_recursive());
|
||||||
|
|
||||||
/* Report an error on unrestricted specification if this is required */
|
/* Report an error on unrestricted specification if this is required */
|
||||||
if (only_standards_compliant && with_elem->is_unrestricted())
|
if (only_standard_compliant && with_elem->is_unrestricted())
|
||||||
{
|
{
|
||||||
my_error(ER_NOT_STANDARDS_COMPLIANT_RECURSIVE,
|
my_error(ER_NOT_STANDARD_COMPLIANT_RECURSIVE,
|
||||||
MYF(0), with_elem->query_name->str);
|
MYF(0), with_elem->query_name->str);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -1129,7 +1129,7 @@ public:
|
|||||||
return master_unit()->with_element;
|
return master_unit()->with_element;
|
||||||
}
|
}
|
||||||
With_element *find_table_def_in_with_clauses(TABLE_LIST *table);
|
With_element *find_table_def_in_with_clauses(TABLE_LIST *table);
|
||||||
bool check_unrestricted_recursive(bool only_standards_compliant);
|
bool check_unrestricted_recursive(bool only_standard_compliant);
|
||||||
bool check_subqueries_with_recursive_references();
|
bool check_subqueries_with_recursive_references();
|
||||||
void collect_grouping_fields(THD *thd);
|
void collect_grouping_fields(THD *thd);
|
||||||
void check_cond_extraction_for_grouping_fields(Item *cond,
|
void check_cond_extraction_for_grouping_fields(Item *cond,
|
||||||
|
@ -858,7 +858,7 @@ JOIN::prepare(TABLE_LIST *tables_init,
|
|||||||
With_element *with_elem= select_lex->get_with_element();
|
With_element *with_elem= select_lex->get_with_element();
|
||||||
if (with_elem &&
|
if (with_elem &&
|
||||||
select_lex->check_unrestricted_recursive(
|
select_lex->check_unrestricted_recursive(
|
||||||
thd->variables.only_standards_compliant_cte))
|
thd->variables.only_standard_compliant_cte))
|
||||||
DBUG_RETURN(-1);
|
DBUG_RETURN(-1);
|
||||||
select_lex->check_subqueries_with_recursive_references();
|
select_lex->check_subqueries_with_recursive_references();
|
||||||
|
|
||||||
|
@ -3186,10 +3186,10 @@ static Sys_var_charptr Sys_ssl_crlpath(
|
|||||||
READ_ONLY GLOBAL_VAR(opt_ssl_crlpath), SSL_OPT(OPT_SSL_CRLPATH),
|
READ_ONLY GLOBAL_VAR(opt_ssl_crlpath), SSL_OPT(OPT_SSL_CRLPATH),
|
||||||
IN_FS_CHARSET, DEFAULT(0));
|
IN_FS_CHARSET, DEFAULT(0));
|
||||||
|
|
||||||
static Sys_var_mybool Sys_standards_compliant_cte(
|
static Sys_var_mybool Sys_standard_compliant_cte(
|
||||||
"standards_compliant_cte",
|
"standard_compliant_cte",
|
||||||
"Allow only standards compiant CTE",
|
"Allow only CTEs compliant to SQL standard",
|
||||||
SESSION_VAR(only_standards_compliant_cte), CMD_LINE(OPT_ARG),
|
SESSION_VAR(only_standard_compliant_cte), CMD_LINE(OPT_ARG),
|
||||||
DEFAULT(TRUE));
|
DEFAULT(TRUE));
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user