1. 11 May, 2011 2 commits
    • Michael Widenius's avatar
      Fixed a memory overrun in dynamic columns when sending in a mailformed (too... · e8ced775
      Michael Widenius authored
      Fixed a memory overrun in dynamic columns when sending in a mailformed (too short in this case) string.
      
      mysql-test/t/dyncol.test:
        Added test case for mailformed string usage
      mysys/ma_dyncol.c:
        Added test for wrong dynamic string data
      e8ced775
    • Michael Widenius's avatar
      Fixed compiler warnings and test cases problems found by buildbot · 75b555dc
      Michael Widenius authored
      
      mysql-test/r/dyncol.result:
        Updated test results
      mysql-test/r/index_intersect.result:
        Updated results
      mysql-test/r/index_intersect_innodb.result:
        Updated results
      mysql-test/t/dyncol.test:
        Added replace_result for floating point results that are different on windows
        Added round() around a result to get same result on all platforms.
      mysql-test/t/index_intersect.test:
        Added replace_result to fix that index_merge may put key names in different order.
      mysys/ma_dyncol.c:
        Fixed compiler warnings on Solaris
      sql/key.cc:
        Fixed compiler warnings on Solaris
      sql/mysqld.cc:
        Fixed compiler warning on windows
      support-files/compiler_warnings.supp:
        Suppressed an unintersting warning on Solaris
      75b555dc
  2. 10 May, 2011 1 commit
    • Michael Widenius's avatar
      Fixed all reported bugs for dynamic columns. · f4491ade
      Michael Widenius authored
      Bugs fixed:
      - Added automatic detection of unsigned arguments to COLUMN_CREATE()
      - If string length is not know for COLUMN_GET() use MAX_DYNAMIC_COLUMN_LENGTH instead of MAX_FIELD_BLOBLENGTH
      - null_value flag was not propery reset for COLUMN_LIST() and COLUMN_CREATE() which could lead to crashes later:
      - lp:778905 Assertion `value->year <= 9999' failed in dynamic_column_date_store
      - lp:778912 Assertion `field_pos < field_count' failed in Protocol_text::store in maria-5.3-mwl34
      
      include/ma_dyncol.h:
        Added define for max dynamic column length.
      mysql-test/r/cast.result:
        Added test of cast big unsigned int to signed (this test case was missing)
      mysql-test/r/dyncol.result:
        Added tests from reported bugs
        Added testing of automatic store of signed/unsigned integers
      mysql-test/t/cast.test:
        Added test of cast big unsigned int to signed (this test case was missing)
      mysql-test/t/dyncol.test:
        Added tests from reported bugs
        Added testing of automatic store of signed/unsigned integers
      sql/item.cc:
        Added assert to catch cases where null_value is not set properly
      sql/item_strfunc.cc:
        Added automatic detection of unsigned arguments to COLUMN_CREATE()
        COLUMN_GET() returned wrong value for illegal strings which lead to assert later
        null_value flag was not propery reset for COLUMN_LIST() and COLUMN_CREATE() which could lead to crashes later.
      sql/item_strfunc.h:
        If string length is not know for COLUMN_GET() use MAX_DYNAMIC_COLUMN_LENGTH
      f4491ade
  3. 08 May, 2011 3 commits
    • Michael Widenius's avatar
      Merge with main 5.3 · 4b6d68de
      Michael Widenius authored
      4b6d68de
    • Michael Widenius's avatar
      Fixed compiler warnings · 355e2505
      Michael Widenius authored
      355e2505
    • Michael Widenius's avatar
      Adding support for Dynamic columns (WL#34): · 25ad9417
      Michael Widenius authored
      - COLUMN_CREATE(column_nr, value, [column_nr,value]...)
      - COLUMN_ADD(blob,column_nr, value, column_nr,value]...)
      - COLUMN_DELETE(blob, column_nr, column_nr...)
      - COLUMN_EXISTS(blob, column_nr)
      - COLUMN_LIST(blob, column_nr)
      - COLUMN_GET(string, column_nr AS type)
      
      Added cast(X as DOUBLE) and cast(x as INT)
      Better warning and error messages for wrong cast's
      Created some sub functions to simplify and reuse code.
      Added a lot of conversation functions with error/warnings for what went wrong.
      Fixed some issues when casting time to datetime.
      Added functions to dynamic strings and Strings to allow one to move a string buffer from dynamic strings to String (to save malloc+ copy)
      Added dynamic columns library to libmysqlclient
      
      
      include/Makefile.am:
        Added ma_dyncol.h
      include/decimal.h:
        Added 'const' to arguments for some functions.
      include/my_sys.h:
        Added dynstr_reassociate()
      include/my_time.h:
        Added TIME_SUBSECOND_RANGE
        Added double_to_datetime()
        Added flag argument to str_to_time()
      libmysql/CMakeLists.txt:
        Added mysys/ma_dyncol.c
      libmysql/Makefile.shared:
        Added ma_dyncol
      libmysql/libmysql.c:
        Added argument to str_to_time()
      mysql-test/r/bigint.result:
        Better error messages
      mysql-test/r/cast.result:
        Better warning and error messages
        A lot of new cast() tests
      mysql-test/r/func_math.result:
        Better warning messages
      mysql-test/r/func_str.result:
        Better warning messages
      mysql-test/r/func_time.result:
        Better warning messages
      mysql-test/r/sp-vars.result:
        Better warning messages
      mysql-test/r/strict.result:
        Better warning messages
        New test result
      mysql-test/r/type_newdecimal.result:
        Better warning messages
      mysql-test/r/warnings.result:
        Better warning messages
      mysql-test/suite/funcs_1/r/innodb_func_view.result:
        Updated results after better cast warnings
      mysql-test/suite/funcs_1/r/memory_func_view.result:
        Updated results after better cast warnings
      mysql-test/suite/funcs_1/r/myisam_func_view.result:
        Updated results after better cast warnings
      mysql-test/suite/optimizer_unfixed_bugs/t/bug43448.test:
        Added begin...commit to speed up test.
      mysql-test/suite/parts/inc/part_supported_sql_funcs_delete.inc:
        Added begin...commit to speed up test.
      mysql-test/suite/parts/inc/partition_supported_sql_funcs.inc:
        Added begin...commit to speed up test.
      mysql-test/suite/parts/r/part_supported_sql_func_innodb.result:
        Added begin...commit to speed up test.
      mysql-test/suite/parts/r/part_supported_sql_func_myisam.result:
        Added begin...commit to speed up test.
      mysql-test/suite/parts/r/rpl_partition.result:
        Added begin...commit to speed up test.
      mysql-test/suite/parts/t/part_supported_sql_func_innodb.test:
        Removed duplicated --big_test
      mysql-test/suite/parts/t/rpl_partition.test:
        Added begin...commit to speed up test.
      mysql-test/suite/pbxt/r/cast.result:
        Updated results after better cast warnings
      mysql-test/suite/pbxt/r/func_str.result:
        Updated results after better cast warnings
      mysql-test/suite/pbxt/r/type_newdecimal.result:
        Updated results after better cast warnings
      mysql-test/suite/rpl/r/rpl_innodb_bug28430.result:
        Added begin...commit to speed up test.
      mysql-test/suite/rpl/t/rpl_innodb_bug28430.test:
        Added begin...commit to speed up test.
      mysql-test/suite/vcol/r/vcol_supported_sql_funcs_innodb.result:
        More warnings
      mysql-test/suite/vcol/r/vcol_supported_sql_funcs_myisam.result:
        More warnings
      mysql-test/t/cast.test:
        A lot of new cast() tests
      mysql-test/t/strict.test:
        Added new test
      mysys/CMakeLists.txt:
        Added ma_dyncol.c
      mysys/Makefile.am:
        Added ma_dyncol.c
      mysys/string.c:
        Added dynstr_reassociate() to move a buffer from dynamic_strings to some other allocator
      sql-common/my_time.c:
        Added 'fuzzydate' flag to str_to_time()
        Added support for microseconds to my_time_to_str() and my_datetime_to_str()
        Reset second_parts in number_to_datetime()
        Added double_to_datetime()
      sql/field.cc:
        Added double_to_longlong() and truncate_double() to simplify and reuse code
      sql/field.h:
        New prototypes
      sql/item.cc:
        Changed Item::get_date(MYSQL_TIME *ltime,uint fuzzydate) to be aware of type of argument.
        (Needed to make it microsecond safe and get better warnings).
        Updated call to str_to_time_with_warn()
      sql/item.h:
        Added struct st_dyncall_create_def used by dynamic columns
        Added virtual bool dynamic_result() to tell if type of argument may change over calls.
      sql/item_cmpfunc.cc:
        Added Item_func_dyncol_exists()
      sql/item_cmpfunc.h:
        Added class Item_func_dyncol_exists
      sql/item_create.cc:
        Added get_length_and_scale() to simplify other functions
        Simplified and extended create_func_cast()
        Added support for cast(X as double(X,Y))
        Added functions to create dynamic column functions.
      sql/item_create.h:
        Added prototypes
      sql/item_func.cc:
        Extended cast functions Item_func_signed() and Item_func_unsigned() to work with dynamic types
        Added Item_double_typecast()
      sql/item_func.h:
        Added class Item_double_typecast()
      sql/item_strfunc.cc:
        Added functions for COLUMN_CREATE(), COLUMN_ADD(), COLUMN_GET() and COLUMN_LIST()
      sql/item_strfunc.h:
        Added classes for COLUMN_CREATE(), COLUMN_ADD(), COLUMN_GET() and COLUMN_LIST()
      sql/item_timefunc.cc:
        Added flag argument to str_to_time_with_warn()
        Updated Item_char_typecast() to handle result type that may change between calls (for dynamic columns)
        Added Item_time_typecast::get_date() to ensure that we cast a datetime to time properly.
      sql/item_timefunc.h:
        Added get_date() to Item_time_typecast() to allow proper results for casting time to datetime
      sql/lex.h:
        Added new SQL function names
      sql/my_decimal.cc:
        Added 'const' to some arguments.
        Better error message in case of errors (we now print out the wrong value)
        Added my_decimal2int()
      sql/my_decimal.h:
        Moved some constants to my_decimal_limits.h
        Updated prototypes.
        Made my_decimal2int() a function as it's rather long (no reason to have it inline)
        Added decimal2my_decimal() function.
      sql/mysql_priv.h:
        Prototypes for new functions
      sql/share/errmsg.txt:
        New error messages for wrong casts and dynamic columns
      sql/sql_acl.cc:
        Fixed indentation
      sql/sql_base.cc:
        Added dynamic_column_error_message()
      sql/sql_string.h:
        Added reassociate() to move a buffer to be owned by String object.
      sql/sql_yacc.yy:
        Added syntax for COLUMN_ functions.
      sql/time.cc:
        Updated str_to_datetime_with_warn() flag argument to same type as other functions
        Added conversion flag to str_to_time_with_warn() (Similar to all datetime functions)
        Added conversion functions with warnings: double_to_datetime_with_warn() and decimal_to_datetime_with_warn()
      strings/decimal.c:
        Added 'const' to arguments for some functions.
      unittest/mysys/Makefile.am:
        Added test for dynamic columns code
      25ad9417
  4. 07 May, 2011 1 commit
  5. 05 May, 2011 3 commits
  6. 04 May, 2011 4 commits
  7. 03 May, 2011 2 commits
  8. 02 May, 2011 2 commits
  9. 30 Apr, 2011 1 commit
  10. 28 Apr, 2011 2 commits
    • Michael Widenius's avatar
      Added ALTER ONLINE TABLE, which will give an error if the change can't be done... · e89705ca
      Michael Widenius authored
      Added ALTER ONLINE TABLE, which will give an error if the change can't be done 'instantly' (without a table copy)
      
      
      mysql-test/r/alter_table_online.result:
        Test new feature
      mysql-test/t/alter_table_online.test:
        Test new feature
      sql/handler.cc:
        Added comment
      sql/lex.h:
        Added ONLINE keyword
      sql/mysql_priv.h:
        Added option to alter table to require online operation
      sql/share/errmsg.txt:
        Added error message if ONLINE can't be done
      sql/sql_lex.h:
        Added online option
      sql/sql_parse.cc:
        Added online option to mysql_alter_table()
      sql/sql_table.cc:
        Added test that gives error if table can't be done instantly when requsted to be online.
        Fixed wrong test if table includes a VARCHAR
        Fixed wrong (but unlikely) handling of error conditions in ALTER table
      sql/sql_yacc.yy:
        Added ALTER ONLINE TABLE syntax
      storage/maria/ha_maria.cc:
        Fixed bug where 'start_bulk_insert' used too small buffer if used with unknown number of rows
      e89705ca
    • Michael Widenius's avatar
      Added option "AND DISABLE CHECKPOINT" to "FLUSH TABLES WITH READ LOCK" · 138cbb87
      Michael Widenius authored
      This makes it possible to do safe multi volume snapshots as long as one snapshots the volume with the transaction logs last.
      
      
      include/mysql_com.h:
        Added REFRESH_CHECKPOINT
      mysql-test/r/flush.result:
        Added test of new FLUSH TABLES syntax + calls to checkpoint_status handler calls
      mysql-test/t/flush.test:
        Added test of new FLUSH TABLES syntax + calls to checkpoint_status handler calls
      sql/handler.cc:
        Added code to call checkpoint_state for all handlertons that supports it
      sql/handler.h:
        Added new checkpoint_state() handlerton call to temporarly disable checkpoints.
      sql/lex.h:
        Added CHECKPOINT keyword
      sql/sql_yacc.yy:
        Added support for FLUSH TABLES WITH READ LOCK AND DISABLE CHECKPOINT
      storage/maria/ha_maria.cc:
        Added handlerton call to disable checkpoints.
      storage/maria/ma_checkpoint.c:
        Don't do checkpoint if checkpoints are disabled.
      storage/maria/ma_static.c:
        Added maria_checkpoint_disabled
      storage/maria/maria_def.h:
        Added maria_checkpoint_disabled
      storage/xtradb/handler/ha_innodb.cc:
        Added handlerton call to disable checkpoints.
      storage/xtradb/include/log0log.h:
        Added option to log_checkpoint() to allow one to ignore not critical checkpoints during the time checkpoints are disabled.
      storage/xtradb/log/log0log.c:
        Added code to allow one to disable checkpoints during a FLUSH TABLES ... DISABLE CHECKPOINT
        This was done by adding a new argument to log_checkpoint() which tells us when the checkpoint is called by srv_master_thread (which are safe to ignore)
      storage/xtradb/srv/srv0srv.c:
        Tell log_checkpoint() that checkpoints from srv_master_thread() are safe to ignore (will just delay recovery time a bit).
      138cbb87
  11. 27 Apr, 2011 3 commits
    • Igor Babaev's avatar
      Fixed LP bug #754521. · ad250abc
      Igor Babaev authored
      The function test_quick_select by mistake did not update the value
      of table->quick_condition_rows for index intersection scans though
      the specification explicitly required to do so from any table access
      plan once the plan provided a better upper bound for the number of
      rows selected from the table. It resulted in a bogus, usually very
      big number saved as the cost of the table access. This, in its turn,
      in many cases forced the optimizer to make a bad choice of the
      execution plan for join queries.
      ad250abc
    • Igor Babaev's avatar
      Merge · 5c078ceb
      Igor Babaev authored
      5c078ceb
    • Igor Babaev's avatar
      Fixed LP bugs #717577, #724942. · 1a18998c
      Igor Babaev authored
      Both these two bugs happened due to the following problem.
      When a view column is referenced in the query an Item_direct_view_ref
      object is created that is refers to the Item_field for the column.
      All references to the same view column refer to the same Item_field.
      Different references can belong to different AND/OR levels and,
      as a result, can be included in different Item_equal object.
      These Item_equal objects may include different constant objects.
      If these constant objects are substituted for the Item_field created
      for a view column we have a conflict situation when the second
      substitution annuls the first substitution. This leads to
      wrong result sets returned by the query. Bug #724942 demonstrates
      such an erroneous behaviour.
      Test case of the bug #717577 produces wrong result sets because best
      equal fields of the multiple equalities built for different OR levels
      of the WHERE condition differs. The subsitution for the best equal field
      in the second OR branch overwrites the the substitution made for the
      first branch.
      
      To avoid such conflicts we have to substitute for the references
      to the view columns rather than for the underlying field items.
      To make such substitutions possible we have to include into
      multiple equalities references to view columns rather than 
      field items created for such columns.
      
      This patch modifies the Item_equal class to include references
      to view columns into multiple equality objects. It also performs
      a clean up of the class methods and adds more comments. The methods
      of the Item_direct_view_ref class that assist substitutions for
      references to view columns has been also added by this patch.
      1a18998c
  12. 20 Apr, 2011 1 commit
    • Igor Babaev's avatar
      Fixed LP bug #752353. · 1474a17f
      Igor Babaev authored
      In some cases the field max_part_no of the SEL_ARG structure
      was not initialized. That triggered a Valgrind complain.
      1474a17f
  13. 19 Apr, 2011 1 commit
    • Sergei Golubchik's avatar
      lp:730035 Handlersocket does not load · ee4f28b0
      Sergei Golubchik authored
      -fimplicit-termplates must be in CXXFLAGS not in handlersocket_la_CXXFLAGS.
      otehrwise automake puts it in the command line too early to override
      global -fno-implicit-templates
      ee4f28b0
  14. 14 Apr, 2011 2 commits
  15. 12 Apr, 2011 1 commit
  16. 11 Apr, 2011 2 commits
  17. 08 Apr, 2011 5 commits
  18. 07 Apr, 2011 4 commits