summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOleksandr Byelkin <sanja@mariadb.com>2017-06-16 16:24:36 +0200
committerOleksandr Byelkin <sanja@mariadb.com>2017-06-16 16:24:36 +0200
commite80f4c63acc58c0521ecd7de32050724fe2ec122 (patch)
tree668e6707887a5e46aac64c2ede465aac7f12c165
parent58f87a41bd8de7370cc05c41977fadc685826c9e (diff)
downloadmariadb-git-bb-10.1-MDEV-12819.tar.gz
MDEV-12819 order by ordering expression changed to empty string when creatin view with unionbb-10.1-MDEV-12819
prepare of "fake_select" for union made in JOIN::prepare only if we do not execute it then before reset, i.e it was for PS prepare and now required for CREATE VIEW to make global ORDER BY which belongs to "fake_select" prepared.
-rw-r--r--mysql-test/r/view.result18
-rw-r--r--mysql-test/t/view.test21
-rw-r--r--sql/sql_union.cc4
3 files changed, 42 insertions, 1 deletions
diff --git a/mysql-test/r/view.result b/mysql-test/r/view.result
index d7cf89577eb..0ded1dd4cb3 100644
--- a/mysql-test/r/view.result
+++ b/mysql-test/r/view.result
@@ -6065,5 +6065,23 @@ three COUNT(*)
drop view v1;
drop table t1;
#
+# MDEV-12819: order by ordering expression changed to empty string
+# when creatin view with union
+#
+create table t1 (t1col1 int, t1col2 int,t1col3 int );
+create table t2 (t2col1 int, t2col2 int, t2col3 int);
+create view v1 as
+select t1col1,t1col2,t1col3 from t1
+union all
+select t2col1,t2col2,t2col3 from t2
+order by 2,3;
+show create view v1;
+View Create View character_set_client collation_connection
+v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `t1`.`t1col1` AS `t1col1`,`t1`.`t1col2` AS `t1col2`,`t1`.`t1col3` AS `t1col3` from `t1` union all select `t2`.`t2col1` AS `t2col1`,`t2`.`t2col2` AS `t2col2`,`t2`.`t2col3` AS `t2col3` from `t2` order by 2,3 latin1 latin1_swedish_ci
+select * from v1;
+t1col1 t1col2 t1col3
+drop view v1;
+drop table t1,t2;
+#
# End of 10.1 tests
#
diff --git a/mysql-test/t/view.test b/mysql-test/t/view.test
index 7a935838216..3ad7b9483ac 100644
--- a/mysql-test/t/view.test
+++ b/mysql-test/t/view.test
@@ -5901,5 +5901,26 @@ drop view v1;
drop table t1;
--echo #
+--echo # MDEV-12819: order by ordering expression changed to empty string
+--echo # when creatin view with union
+--echo #
+
+create table t1 (t1col1 int, t1col2 int,t1col3 int );
+create table t2 (t2col1 int, t2col2 int, t2col3 int);
+
+create view v1 as
+select t1col1,t1col2,t1col3 from t1
+union all
+select t2col1,t2col2,t2col3 from t2
+order by 2,3;
+
+show create view v1;
+
+select * from v1;
+
+drop view v1;
+drop table t1,t2;
+
+--echo #
--echo # End of 10.1 tests
--echo #
diff --git a/sql/sql_union.cc b/sql/sql_union.cc
index 2086d1d6c03..7ca0a9bb867 100644
--- a/sql/sql_union.cc
+++ b/sql/sql_union.cc
@@ -618,7 +618,9 @@ bool st_select_lex_unit::prepare(THD *thd_arg, select_result *sel_result,
if (saved_error)
goto err;
- if (fake_select_lex != NULL && thd->stmt_arena->is_stmt_prepare())
+ if (fake_select_lex != NULL &&
+ (thd->stmt_arena->is_stmt_prepare() ||
+ (thd->lex->context_analysis_only & CONTEXT_ANALYSIS_ONLY_VIEW)))
{
/* Validate the global parameters of this union */