Commit 6a88fa48 authored by unknown's avatar unknown
Browse files

select.result, select.test:

  Added a test case for bug #11745.
sql_select.cc:
  Fixed bug # 11745.
  Added support of where clause for queries with FROM DUAL.
sql_yacc.yy:
  Fixed bug # 11745.
  Added optional where clause for queries with FROM DUAL.


sql/sql_yacc.yy:
  Fixed bug # 11745.
  Added optional where clause for queries with FROM DUAL.
sql/sql_select.cc:
  Fixed bug # 11745.
  Added support of where clause for queries with FROM DUAL.
mysql-test/t/select.test:
  Added a test case for bug #11745.
mysql-test/r/select.result:
  Added a test case for bug #11745.
parent 89519b67
Loading
Loading
Loading
Loading
+16 −0
Original line number Diff line number Diff line
@@ -2582,3 +2582,19 @@ a
254
255
drop table t2;
CREATE TABLE t1 (a int, b int, c int);
INSERT INTO t1
SELECT 50, 3, 3 FROM DUAL
WHERE NOT EXISTS
(SELECT * FROM t1 WHERE a = 50 AND b = 3);
SELECT * FROM t1;
a	b	c
50	3	3
INSERT INTO t1
SELECT 50, 3, 3 FROM DUAL
WHERE NOT EXISTS
(SELECT * FROM t1 WHERE a = 50 AND b = 3);
SELECT * FROM t1;
a	b	c
50	3	3
DROP TABLE t1;
+18 −0
Original line number Diff line number Diff line
@@ -2138,3 +2138,21 @@ insert into t2 values (0), (254), (255);
explain select * from t2 where a > -1;
select * from t2 where a > -1;
drop table t2;

#
# Bug #11745: SELECT ... FROM DUAL with WHERE condition
#

CREATE TABLE t1 (a int, b int, c int);
INSERT INTO t1
  SELECT 50, 3, 3 FROM DUAL
    WHERE NOT EXISTS
      (SELECT * FROM t1 WHERE a = 50 AND b = 3);
SELECT * FROM t1;
INSERT INTO t1
  SELECT 50, 3, 3 FROM DUAL
    WHERE NOT EXISTS
      (SELECT * FROM t1 WHERE a = 50 AND b = 3);
SELECT * FROM t1;

DROP TABLE t1;
+1 −1
Original line number Diff line number Diff line
@@ -1072,7 +1072,7 @@ JOIN::exec()
    else
    {
      result->send_fields(fields_list,1);
      if (!having || having->val_int())
      if (cond_value != Item::COND_FALSE && (!having || having->val_int()))
      {
	if (do_send_rows && (procedure ? (procedure->send_row(fields_list) ||
                                          procedure->end_of_records())
+1 −1
Original line number Diff line number Diff line
@@ -2459,7 +2459,7 @@ select_into:
select_from:
	  FROM join_table_list where_clause group_clause having_clause
	       opt_order_clause opt_limit_clause procedure_clause
        | FROM DUAL_SYM opt_limit_clause
        | FROM DUAL_SYM where_clause opt_limit_clause
          /* oracle compatibility: oracle always requires FROM clause,
             and DUAL is system table without fields.
             Is "SELECT 1 FROM DUAL" any better than "SELECT 1" ?