1. 31 Mar, 2011 3 commits
    • Michael Widenius's avatar
      Automatic merge · ff650ab0
      Michael Widenius authored
      ff650ab0
    • Michael Widenius's avatar
      Fixed unlikely reference to freed memory in item->print(). · fc595325
      Michael Widenius authored
      
      sql/item.cc:
        If a item_ref is referenced by name, we have to reset it's ref in item_ref::cleanup() as the reference may be to a memory that is freed.
        This happens at least when you have 'HAVING MAX()' in a sub query and you execute 'cond_having->print()' which tries to access items before fix fields.
      sql/item.h:
        Added 'reference_trough_name' as a marker for Item_ref that needs to have ref reset during cleanup
      fc595325
    • Michael Widenius's avatar
      Fixed all BUILD scripts to use g++ instead of gcc for linking · 1ee94dc2
      Michael Widenius authored
      Fixed memory leak from HEAP tables that was not deleted properly
      
      
      BUILD/compile-alpha-ccc:
        Use g++ instead of gcc for linking
      BUILD/compile-alpha-debug:
        Use g++ instead of gcc for linking
      BUILD/compile-pentium-pgcc:
        Use g++ instead of gcc for linking
      BUILD/compile-solaris-sparc:
        Use g++ instead of gcc for linking
      BUILD/compile-solaris-sparc-debug:
        Use g++ instead of gcc for linking
      BUILD/compile-solaris-sparc-purify:
        Use g++ instead of gcc for linking
      sql/item.cc:
        Safety fixes for expr_cache
        Call Item_result:field::cleanup() in Item_cache_wrapper::cleanup()
        More DBUG_PRINT
      sql/sql_base.cc:
        Simple optimization for setup_wild
        More DBUG_PRINT
      sql/sql_expression_cache.cc:
        Added header
        Removed not needed initialization
      sql/sql_lex.cc:
        More DBUG_PRINT
      sql/sql_select.cc:
        More DBUG_PRINT
        Fixed memory leak from HEAP tables that was not deleted properly
      storage/heap/hp_create.c:
        More DBUG_PRINT
      1ee94dc2
  2. 30 Mar, 2011 4 commits
    • Vladislav Vaintroub's avatar
      merge LP BUG#68606 · f2f5fd36
      Vladislav Vaintroub authored
      f2f5fd36
    • Vladislav Vaintroub's avatar
      LP686006 : maria recovery tests fail. · 1d8cfe3c
      Vladislav Vaintroub authored
      All failing cases were attempts to use connection after
      the server was brought down and restarted. Connections 
      used client reconnect option.
      
      The reason for failures is the behavior of sockets on Windows:
      for a short period after crash (short enough to make the error 
      not reproducible under debugger), write to socket on client
      side would succeed but subsequent read would fail. 
      
      MYSQL_OPT_RECONNECT does not really help in this case ,
      because  in the case given here ,as  mysql_real_query() 
      (which can handle reconnect option)  succeeds and 
      mysql_read_results() (can't handle reconnect) fails.
      
      The fix is adding --include wait_until_connected_again.inc to 
      appropriate places in test. This ensures that read errors are 
      caught and connection is recreated.
      1d8cfe3c
    • Michael Widenius's avatar
      Fixed problem that fill_record() allocated memory for every call. This could... · 6f20e3a3
      Michael Widenius authored
      Fixed problem that fill_record() allocated memory for every call. This could be a problem when doing big unions as memory could be filled up.
      
      sql/sql_base.cc:
        Don't allocate memory in fill_record().
        Fix was to remove the list of tables. This was not necessary as this call is only used with one table.
      6f20e3a3
    • Michael Widenius's avatar
      Fixes to get more information about random bind failure in pushbuild for windows hosts. · 309e016e
      Michael Widenius authored
      mysql-test/mysql-test-run.pl:
        Set port-open-timeout to 10 to retry binds
      sql/mysqld.cc:
        Write error number for bind failure. (perror can't do that on windows as errno dosn't contain error code)
      309e016e
  3. 29 Mar, 2011 6 commits
  4. 28 Mar, 2011 11 commits
    • Vladislav Vaintroub's avatar
      null merge · 7fc2d46a
      Vladislav Vaintroub authored
      7fc2d46a
    • Vladislav Vaintroub's avatar
      merge · aa8cc813
      Vladislav Vaintroub authored
      aa8cc813
    • Vladislav Vaintroub's avatar
      merge · 45baac71
      Vladislav Vaintroub authored
      45baac71
    • Vladislav Vaintroub's avatar
      CMake/code signing: · 0f51f460
      Vladislav Vaintroub authored
      Use MYSQL_INSTALL_TARGETS() macro for DLLs 
      (libmysql and libmysqld) to ensure that libraries
      are signed, if signing is requested.
      0f51f460
    • Sergei Golubchik's avatar
      lp:702084 - myisam_block_size is not reported in SHOW GLOBAL VARIABLES · 0741f1a9
      Sergei Golubchik authored
      add a read-only server variable @@myisam_block_size
      0741f1a9
    • Vladislav Vaintroub's avatar
      merge · 262dd320
      Vladislav Vaintroub authored
      262dd320
    • Vladislav Vaintroub's avatar
      Sign MSI if code signing is requested. · 90b5afaa
      Vladislav Vaintroub authored
      Remove SIGNCODE_ENABLED variable from create_msi.cmake.in,
      it was already removed from other places.
      90b5afaa
    • unknown's avatar
      Fix LP BUG#613029 · 7999f40a
      unknown authored
      Analysis:
      There are two code paths through which JOIN::exec may produce
      an all-NULL row for an empty result set. One goes via the
      function return_zero_rows(), when query processing detectes
      early that the where clause is false, the other one is via
      do_select() in the case of join execution.
      
      In the case of do_select(), the problem was that the executioner
      didn't set TABLE::null_row to 1. As result when sending the only
      result row, the evaluation of each field didn't detect that all
      non-aggregated fields are NULL, because Field::is_null returned
      true, after checking that field->table->null_row was false.
      
      Given that the each non-aggregated field was not considered NULL,
      select_result::send_data sent whatever was in the buffer of each
      field. However, since there was no actual data in the field buffer,
      send_data() accessed and sent whatever junk was in the field's
      data buffer.
      
      Solution:
      Similar to the analogous case in return_zero_rows() mark all
      tables that their current row is NULL before sending the
      artificailly created NULL row.
      7999f40a
    • Michael Widenius's avatar
      Fixed test failures with embedded server · b20efbb1
      Michael Widenius authored
      mysql-test/mysql-test-run.pl:
        Don't set --log-error when running embedded server as we don't want the mysqltest output into mysqld.1.err
      sql/mysqld.cc:
        Allow one to disable --log-error
      b20efbb1
    • Vladislav Vaintroub's avatar
      merge · 9762b236
      Vladislav Vaintroub authored
      9762b236
    • Vladislav Vaintroub's avatar
      6058b9ea
  5. 27 Mar, 2011 2 commits
    • Vladislav Vaintroub's avatar
      merge · 98a883f6
      Vladislav Vaintroub authored
      98a883f6
    • Vladislav Vaintroub's avatar
      CMake fixes for buildbot/MSI package building and signing: · 22a8654a
      Vladislav Vaintroub authored
      - FIND_PROGRAM (signtool) will now get a hint about location of signtool.exe (Windows SDK)
      - Targets "package" or "msi" will now fail, l if signing is requested but does not work
        (e.g invalid certificate)
      - During install, do not re-sign binaries, if they are already signed.
      - Preserve mysqld_error.h timestamp whenever possible. This helps avoiding situations 
      where the whole server is rebuilt, whenever comp_err.exe changes (for example after code 
      signing, or also after a minor fix in mysys)
      - Fix Wix error in UpgradeVersion, if patch part of the version is 0.
      22a8654a
  6. 25 Mar, 2011 4 commits
  7. 24 Mar, 2011 1 commit
    • unknown's avatar
      Fix LP BUG#715738 · ec239491
      unknown authored
      Analysis:
      A query with implicit grouping is one with aggregate functions and
      no GROUP BY clause. MariaDB inherits from MySQL an SQL extenstion
      that allows mixing aggregate functions with non-aggregate fields.
      If a query with such mixed select clause produces an empty result
      set, the meaning of aggregate functions is well defined - either
      NULL (MIN, MAX, etc.), or 0 (count(*)). However the non-aggregated
      fields must also have some value, and the only reasonable value in
      the case of empty result is NULL.
      
      The cause of the many wrong results was that if a field is declared
      as non-nullable (e.g. because it is a PK or NOT NULL), the semantic
      analysis and the optimization phases treat this field as non-nullable,
      and generate all related query plan elements based on this assumption.
      
      Later during execution, these incorrectly configured/generated query
      plan elements result in a wrong result because the selected fields
      are not null due to the not-null assumption during optimization.
      
      Solution:
      Detect before the context analysys phase that a query uses implicit
      grouping with mixed aggregates/non-aggregates, and set all fields
      as nullable. The parser already walks the SELECT clause, and
      already sets Item::with_sum_func for Items that reference aggreagate
      functions. The patch adds a symmetric Item::with_field so that all
      Items that reference an Item_field are marked during their
      construction at parse time in the same way as with aggregate function
      use.
      ec239491
  8. 23 Mar, 2011 2 commits
    • Michael Widenius's avatar
      Merge with base 5.2 · eaed2605
      Michael Widenius authored
      eaed2605
    • Michael Widenius's avatar
      Added --log-basename to mysqld to allow one to set the prefix for all logs with one command · 7de98f2f
      Michael Widenius authored
      Changed test suite to use --log-basename (to get the code tested)
      Added --sync-sys=1 to test suite to speed it up.
      Better error messages if something goes wrong with mysql_install_db
      
      
      mysql-test/Makefile.am:
        Removed not existing directory
      mysql-test/lib/My/ConfigFactory.pm:
        Use log-basename
        We had to also set 'log_error' as some test was explicitely using the old name
        Added 'sync-sys=1' to speed up test suite
      mysql-test/r/variables-notembedded.result:
        Updated test results (variable relay_log is now set)
      mysql-test/suite/binlog/t/binlog_delete_and_flush_index-master.opt:
        Force specific names for some log files.
      mysql-test/suite/binlog/t/binlog_index-master.opt:
        Force specific names for some log files.
      mysql-test/suite/binlog/t/binlog_stm_unsafe_warning-master.opt:
        Force specific names for some log files.
      mysql-test/suite/binlog/t/binlog_stm_unsafe_warning.test:
        Better error message if something goes wrong
      mysql-test/suite/rpl/r/rpl_flushlog_loop.result:
        Updated results
      mysql-test/suite/rpl/rpl_1slave_base.cnf:
        Use --log-basename
      scripts/mysql_install_db.sh:
        More information to --help
        Write url to knowledge base if something goes wrong
        Fail at once if we can't create a database directory (no reason to continue and write a screenful of not related text)
      scripts/mysqld_safe.sh:
        Also allow one to use --data for --datadir (common shortening)
        Added support for --log-basename
        Fail at once if we can't create a log directory
        Fixed bug where we used a pid file name without '.pid' extension
      sql/log.cc:
        Create a log file name trough my_once_alloc()  (To get it automaticly freed at exit)
      sql/mysql_priv.h:
        Added new prototype
      sql/mysqld.cc:
        Added support for --log-basename
        Better help for a lot of log-filename related variables.
      sql/rpl_rli.cc:
        Write information that one can use --log-basename
      sql/set_var.cc:
        Add log_basename as a readonly variable
      7de98f2f
  9. 18 Mar, 2011 1 commit
    • Michael Widenius's avatar
      Ensure that all clients reads the appropriate 'client', client-mariadb and... · 0fae0335
      Michael Widenius authored
      Ensure that all clients reads the appropriate 'client', client-mariadb and 'mariadb' sections from my.cnf
      The mysqld server and all clients now reads the new client-server section
      Fixed that mysqldumpslow supports new slow log formats and new mysqld --slow- options
      
      
      client/mysql.cc:
        Read also client-server and client-mariadb sections.
      client/mysql_upgrade.c:
        Read also client-server and client-mariadb sections.
      client/mysqladmin.cc:
        Read also client-server and client-mariadb sections.
      client/mysqlbinlog.cc:
        Read also client-server and client-mariadb sections.
      client/mysqlcheck.c:
        Read also client-server and client-mariadb sections.
      client/mysqldump.c:
        Read also client-server and client-mariadb sections.
      client/mysqlimport.c:
        Read also client-server and client-mariadb sections.
      client/mysqlshow.c:
        Read also client-server and client-mariadb sections.
      client/mysqltest.cc:
        Read also client-server and client-mariadb sections.
      extra/my_print_defaults.c:
        Updated help text
      scripts/mysql_fix_privilege_tables.sh:
        Read also sections client client-server client-mariadb
      scripts/mysql_install_db.pl.in:
        Also allow --data=* option
        Read also groups mariadb, server and client-server.
      scripts/mysql_install_db.sh:
        Also allow --data=* option
        Read also groups mariadb, server and client-server.
        Added --lose-skip-pbxt to bootstrap
      scripts/mysql_secure_installation.sh:
        Read also groups client-server and client-mariadb
      scripts/mysqld_multi.sh:
        Read also group mariadb
      scripts/mysqld_safe.sh:
        Read also groups mariadb server and client-server
      scripts/mysqldumpslow.sh:
        Fixed to support new slow log formats
        Added sorting on -ae (aggregated number of retreived rows) and e (retrieved rows)
        Read also group 'mariadb'
        If there is many instances of same option, use last one.
        Get slow log file from options log-slow-queries=filename or query-log-file=filename
        Added support for future --log-basename option
      sql-common/client.c:
        Read also groups 'client-server' and 'client-mariadb'
      tests/mysql_client_test.c:
        Read also groups 'client-server' and 'client-mariadb'
      tests/thread_test.c:
        Read also groups 'client-server' and 'client-mariadb'
      0fae0335
  10. 15 Mar, 2011 1 commit
  11. 13 Mar, 2011 3 commits
    • unknown's avatar
      Merge in the fix for LPBUG#730604, and a corrected fix for LP BUG#719198, · 3f944c43
      unknown authored
      after Monty's review.
      3f944c43
    • unknown's avatar
      Fix LP BUG#719198, LP BUG#730604 · 428b52f5
      unknown authored
      Analysis (BUG#719198):
      The assert failed because the execution code for
      partial matching is designed with the assumption that
      NULLs on the left side are detected as early as possible,
      and a NULL result is returned before any lookups are
      performed at all.
      
      However, in the case of an Item_cache object on the left
      side, null was not detected properly, because detection
      was done via Item::is_null(), which is not implemented at
      all for Item_cache, and resolved to the default Item::is_null()
      which always returns FALSE.
      
      Solution:
      Imlpement Item::is_null().
      
      ******
      
      Analysis (BUG#730604):
      The method Item_field::is_null() determines if an item is NULL from its
      Item_field::field object. However, for Item_fields that represent internal
      temporary tables, Item_field::field represents the field of the original
      table that was the source for the temporary table (in this case t1.f3).
      Both in the committed test case, and in the original bug report the current
      value of t1.f3 is not NULL. This results in an incorrect count of NULLs
      for this column. As a consequence, all related Ordered_key buffers are
      allocated with incorrect sizes. Depending on the exact query and data,
      these incorrect sizes result in various crashes or failed asserts.
      
      Solution:
      The correct value of the current field of the internal temp table is
      in Item_field::result_field. This value is determined by
      Item::is_null_result().
      428b52f5
    • Igor Babaev's avatar
      Merge · edc69e32
      Igor Babaev authored
      edc69e32
  12. 12 Mar, 2011 2 commits