• unknown's avatar
    Fixed bug #35193. · 0b8342ba
    unknown authored
    View definition as SELECT ... FROM DUAL WHERE ... has
    valid syntax, but use of such view in SELECT or
    SHOW CREATE VIEW syntax causes unexpected syntax error.
    
    Server omits FROM DUAL clause when storing view body
    string in a .frm file for further evaluation.
    However, syntax of SELECT-witout-FROM query is more
    restrictive than SELECT FROM DUAL syntax, and doesn't
    allow the WHERE clause.
    
    NOTE: this syntax difference is not documented.
    
    
    View registration procedure has been modified to
    preserve original structure of view's body.
    
    
    
    mysql-test/r/view.result:
      Added test case for bug #35193.
    mysql-test/t/view.test:
      Added test case for bug #35193.
    sql/sql_select.cc:
      Fixed bug #35193.
      The st_select_lex::print function always omits FROM DUAL clause,
      even if original SELECT query has the WHERE clause.
      
      The mysql_register_view function uses this function to reconstruct
      a body of view's AS clause for further evaluation and stores that
      reconstructed clause in a .frm file.
      
      SELECT without FROM syntax is more restrictive than 
      SELECT FROM DUAL syntax: second one allows
      the WHERE clause, but first one is not.
      
      Use of this view in SELECT or SHOW CREATE VIEW queries
      causes unexpected syntax errors.
      
      
      The st_select_lex::print function has been modified to
      reconstruct FROM DUAL clause in queries when needed.
      
      
      TODO: Syntax difference is not documented and should be
      eliminated, however improvement of
      the SELECT-without-FROM syntax is not trivial and leads to
      significant modification of grammar file because of additional
      shift/reduce conflicts.
    0b8342ba
sql_select.cc 500 KB