1. 30 Aug, 2016 1 commit
    • Igor Babaev's avatar
      mdev-9864: cleanup, re-factoring. · 9ac235ab
      Igor Babaev authored
      Added comments.
      Added reaction for exceeding maximum number of elements in with clause.
      Added a test case to check this reaction.
      Added a test case where the specification of a recursive table
      uses two non-recursive with tables.
      9ac235ab
  2. 26 Aug, 2016 1 commit
  3. 11 Aug, 2016 1 commit
  4. 10 Aug, 2016 1 commit
    • Igor Babaev's avatar
      Removed the parameter from st_select_lex_unit::exec_recursive. · 2f9555c4
      Igor Babaev authored
      Moved checking whether the limit set for the number of iterations
      when executing a recursive query has been reached from
      st_select_lex_unit::exec_recursive to TABLE_LIST::fill_recursive.
      Changed the name of the system variable max_recursion_level for
      max_recursive_iterations.
      Adjusted test cases.
      2f9555c4
  5. 09 Aug, 2016 1 commit
  6. 08 Aug, 2016 1 commit
  7. 05 Aug, 2016 1 commit
    • Igor Babaev's avatar
      Fixed a problem with unreferenced CTE: · e1c92a6c
      Igor Babaev authored
      explain for the query containing WITH clause
      with an unreferenced CTE caused a crash.
      Added a test covered this case.
      
      Also added a test for usage CTE in different parts of union.
      e1c92a6c
  8. 29 Jul, 2016 1 commit
    • Igor Babaev's avatar
      Fixed bug mdev-10344. · 247632e6
      Igor Babaev authored
      The patch for bug mdev-9937 actually did not fix the problem
      of name resolution for tables used in views referred in queries
      with WITH clauses. This fix corrects the patch.
      247632e6
  9. 27 Jul, 2016 1 commit
    • Igor Babaev's avatar
      Fixed the following problem: · f982d107
      Igor Babaev authored
      Temporary tables created for recursive CTE
      were instantiated at the prepare phase. As
      a result these temporary tables missed
      indexes for look-ups and optimizer could not
      use them.
      f982d107
  10. 30 Jun, 2016 1 commit
  11. 29 Jun, 2016 1 commit
  12. 26 Jun, 2016 1 commit
  13. 07 Jun, 2016 2 commits
  14. 06 Jun, 2016 1 commit
  15. 24 May, 2016 6 commits
  16. 23 May, 2016 2 commits
  17. 21 May, 2016 1 commit
  18. 20 May, 2016 4 commits
    • Alexander Barkov's avatar
      sql_yacc.yy: Removing unnecessary init_nested_join() and end_nested_join() · 349da1d6
      Alexander Barkov authored
      from select_derived_init.
      349da1d6
    • Alexander Barkov's avatar
      A derived_query_specification clean-up · c44b2e66
      Alexander Barkov authored
      (to simplify further MDEV-8909 changes)
      
      1. Better semantic readability:
      - Moving get_select_lex_derived inside select_derived_init
        and decomposing it into get_select_lex and
        $1->init_nested_join(lex->thd)
      -  Moving DBUG_ASSERT($1 == Lex->current_select) inside
         select_derived_init
      
      Now init_nested_join() and end_nested_join() reside inside
      the same rule select_derived_init.
      (It's very likely that they can be further removed,
       as there are no any joins in this rule).
      
      3. Better grammar readability:
        Moving SELECT_SYM from select_derived_init to derived_query_specification.
        It's easier to read a rule when it starts from a terminal symbol.
      c44b2e66
    • Oleksandr Byelkin's avatar
    • Alexander Barkov's avatar
      MDEV-10080 Derived tables allow double LIMIT clause · f6a7c1c7
      Alexander Barkov authored
      1. Moving the "| get_select_lex_derived select_derived_init" part of
      select_derived into a separate new rule derived_query_specification.
      2. Using derived_query_specification directly in select_derived_union
      rather than in select_derived.
      3. Moving the sequence "opt_order_clause opt_limit_clause opt_select_lock_type"
      from select_derived2 to select_derived_union,
      after derived_query_specification.
      
      Effectively, the parser now does not go through the sequence
      "opt_order_clause opt_limit_clause ... opt_union_order_or_limit" any more.
      
      This fixes the problem with double LIMIT clause and removes 2 shift/reduce
      conflicts.
      f6a7c1c7
  19. 19 May, 2016 3 commits
    • Galina Shalygina's avatar
      Changes in test files · 0f7fe2a7
      Galina Shalygina authored
      0f7fe2a7
    • Galina Shalygina's avatar
      Fixed many problems in the code of With_element::check_unrestricted_recursive(). · 46a2e413
      Galina Shalygina authored
      Added the check whether there are set functions in the specifications of recursive CTE.
      Added the check whether there are recursive references in subqueries.
      Introduced boolean system variable 'standards_compliant_cte'. By default it's set to 'on'.
      When it's set to 'off' non-standard compliant CTE can be executed.
      46a2e413
    • Alexander Barkov's avatar
      This patch is a cleanup simplifying upcoming · c9629daa
      Alexander Barkov authored
      "MDEV-8909 union parser cleanup" changes.
      
      When the server parses a query like
        SELECT * FROM (SELECT 1);
      a sequence of calls
        st_select_lex::init_nested_join() ..
        st_select_lex::end_nested_join()
      was performed two times (tested in gdb).
      Both pairs of calls seem to be redundant for a query
      like this, because there are actually no any joins here.
      
      This patch moved "table_ref_select" inside "select_derived",
      which revealed that one the pairs was definitely redundant:
      After this transformation we got an init_nested_join()
      immediately followed by end_nested_join() for the same st_select_lex,
      which has no any sense. So this pair of calls was removed.
      c9629daa
  20. 17 May, 2016 7 commits
  21. 16 May, 2016 1 commit
    • Alexander Barkov's avatar
      sql_yacc.yy cleanup, to simplify further changes for MDEV-8909. · 1f4f7293
      Alexander Barkov authored
      - Moving "SELECT_SYM select_init2_derived opt_table_expression"
        from query_term into a new separate rule query_specification,
        and using query_specification in the beginning of query_term.
      - query_term now does not have a %type, query_specification has a %type
        instead. This removes duplicate code that returns
        Lex->current_select->master_unit()->first_select();
      1f4f7293
  22. 14 May, 2016 1 commit