1. 23 Feb, 2007 3 commits
    • unknown's avatar
      Fix result file. · fefd2b9b
      unknown authored
      fefd2b9b
    • unknown's avatar
      Fix test for views with national characters, · cd39f94b
      unknown authored
      which accidentally got broken during the merge
      on 16-Feb-2007.
      
      
      mysql-test/r/view.result:
        Updated result file.
      mysql-test/t/view.test:
        Fix test for views with national characters,
        which accidentally got broken during the merge
        on 16-Feb-2007.
        
        Now view.test is in UTF8 character set,
        so SET NAMES is required.
      cd39f94b
    • unknown's avatar
      BUG#24415: im_daemon_life_cycle.imtest fails · 42369f36
      unknown authored
      Fix timeouts. Only test suite is changed.
      
      
      mysql-test/mysql-test-run.pl:
        Decrease MySQL server shutdown delay.
        Trasactional storage engines are not used here,
        so it should be enough.
      mysql-test/t/im_daemon_life_cycle.imtest:
        Increase wait-timeout.
      42369f36
  2. 20 Feb, 2007 1 commit
    • unknown's avatar
      Fix for BUG#24415: Instance manager test im_daemon_life_cycle fails randomly. · 17a71072
      unknown authored
      The cause of im_daemon_life_cycle.imtest random failures was the following
      behaviour of some implementations of LINUX threads: let's suppose that a
      process has several threads (in LINUX threads, there is a separate process for
      each thread). When the main process gets killed, the parent receives SIGCHLD
      before all threads (child processes) die. In other words, the parent receives
      SIGCHLD, when its child is not completely dead.
      
      In terms of IM, that means that IM-angel receives SIGCHLD when IM-main is not dead
      and still holds some resources. After receiving SIGCHLD, IM-angel restarts
      IM-main, but IM-main failed to initialize, because previous instance (copy) of
      IM-main still holds server socket (TCP-port).
      
      Another problem here was that IM-angel restarted IM-main only if it was killed
      by signal. If it exited with error, IM-angel thought it's intended / graceful
      shutdown and exited itself.
      
      So, when the second instance of IM-main failed to initialize, IM-angel thought
      it's intended shutdown and quit.
      
      The fix is
        1. to change IM-angel so that it restarts IM-main if it exited with error code;
        2. to change IM-main so that it returns proper exit code in case of failure.
      
      
      mysql-test/t/disabled.def:
        Enable im_daemon_life_cycle.
      server-tools/instance-manager/listener.cc:
        Set error status if Listener failed to initialize.
      server-tools/instance-manager/manager.cc:
        Return exit code from the manager.
      server-tools/instance-manager/manager.h:
        Return exit code from the manager.
      server-tools/instance-manager/mysqlmanager.cc:
        1. Restart IM-main if exit code is not EXIT_SUCCESS (0).
        2. Log IM-main exit code in case of failure.
      server-tools/instance-manager/thread_registry.cc:
        Add support for exit code.
      server-tools/instance-manager/thread_registry.h:
        Add support for exit code.
      17a71072
  3. 19 Feb, 2007 4 commits
    • unknown's avatar
      Merge kpdesk.mysql.com:/home/thek/dev/bug23240/my50-bug23240 · 0e3a6ec7
      unknown authored
      into  kpdesk.mysql.com:/home/thek/dev/mysql-5.0-runtime
      
      
      sql/sql_parse.cc:
        Auto merged
      0e3a6ec7
    • unknown's avatar
      Bug#23240 --init_file statements with NOW() reports '1970-01-01 11:00:00'as the date time · dcb47898
      unknown authored
      - Starting time of a query sent by bootstrapping wasn't initialized
        and starting time defaulted to 0. This later used value by NOW-
        item and was translated to 1970-01-01 11:00:00.
      - Marketing the time with thd->set_time() before the call to
        mysql_parse resolves this issue.
      - set_time was refactored to be part of the thd->init_for_queries-
        process.
      
      
      mysql-test/r/init_file.result:
        Manual merge from 4.1
      mysql-test/std_data/init_file.dat:
        Manual merge from 4.1
      sql/sql_class.cc:
        - Moved set_time into init_for_queries process.
      dcb47898
    • unknown's avatar
      Merge kpdesk.mysql.com:/home/thek/dev/bug23240/my41-bug23240 · e3f9ee7d
      unknown authored
      into  kpdesk.mysql.com:/home/thek/dev/bug23240/my50-bug23240
      
      
      mysql-test/t/init_file.test:
        Auto merged
      BitKeeper/deleted/.del-init_file.result:
        Auto merged
      mysql-test/std_data/init_file.dat:
        Null merge
      sql/sql_parse.cc:
        Null merge
      e3f9ee7d
    • unknown's avatar
      Bug#23240 --init-file statements with NOW() reports '1970-01-01 11:00:00'as the date time · 733ae5ef
      unknown authored
      - Starting time of a query sent by file bootstrapping wasn't initialized
        and starting time defaulted to 0. This later used value by the Now-
        item and is translated to 1970-01-01 11:00:00.
      - marking the time with thd->set_time() before the call to 
        mysql_parse resolves this issue.
      
      
      mysql-test/r/init_file.result:
        Appended test case
      mysql-test/std_data/init_file.dat:
        Appended test case
      mysql-test/t/init_file.test:
        Appended test case
      733ae5ef
  4. 16 Feb, 2007 2 commits
    • unknown's avatar
      Manual merge · b80bd854
      unknown authored
      b80bd854
    • unknown's avatar
      Merge weblab.(none):/home/marcsql/TREE/mysql-5.0-base · e4c2ffcb
      unknown authored
      into  weblab.(none):/home/marcsql/TREE/mysql-5.0-rt-merge
      
      
      sql/item_cmpfunc.cc:
        Auto merged
      sql/item_cmpfunc.h:
        Auto merged
      sql/item_subselect.cc:
        Auto merged
      sql/item_subselect.h:
        Auto merged
      sql/sql_lex.cc:
        Auto merged
      sql/sql_lex.h:
        Auto merged
      sql/sql_yacc.yy:
        Auto merged
      e4c2ffcb
  5. 14 Feb, 2007 1 commit
  6. 13 Feb, 2007 7 commits
    • unknown's avatar
      Post-merge fix · 5ecad9a5
      unknown authored
      5ecad9a5
    • unknown's avatar
      Merge bk-internal.mysql.com:/data0/bk/mysql-5.0 · cfe1a891
      unknown authored
      into  bk-internal.mysql.com:/data0/bk/mysql-5.0-opt
      
      
      BitKeeper/etc/gone:
        auto-union
      mysys/my_getopt.c:
        Auto merged
      sql/field.h:
        Auto merged
      sql/item.cc:
        Auto merged
      sql/item_cmpfunc.cc:
        Auto merged
      sql/item_cmpfunc.h:
        Auto merged
      sql/mysql_priv.h:
        Auto merged
      sql/sql_prepare.cc:
        Auto merged
      sql/sql_select.cc:
        Auto merged
      sql/table.cc:
        Auto merged
      mysql-test/r/select.result:
        Manual merge
      mysql-test/t/select.test:
        Manual merge
      cfe1a891
    • unknown's avatar
      Bug#25807: LOAD DATA INFILE does not work with Pipes · 40bf2b37
      unknown authored
      Showstopper and regression against 5.0.24.
      
      Previously, we ignored seek() errors (see Bug#22828) and let seek()s
      against pipes fail.  Now, since we check that a seek didn't fail,
      and return without reading, this bug popped up.
      
      This restores the behavior for file-ish objects that could never be 
      seek()ed.
      
      
      mysys/mf_iocache.c:
        If we detect early that the file is not tell()able, then we should
        assume that it's also not seek()able and therefore we should never
        set the (poorly named) "seek_not_done" flag so that we don't immedi-
        ately try to seek() when reading later.
        
        The problem was that tell() was returning -1, so when we read later, 
        we needlessly tried to seek to position  (unsigned long) -1 . 
        
        Also, if we think we're supposed to seek to a position in a file and 
        the file is un-tell()able, then abort.
      40bf2b37
    • unknown's avatar
      Merge bk-internal.mysql.com:/home/bk/mysql-5.0-maint · 29b63cb1
      unknown authored
      into  zippy.cornsilk.net:/home/cmiller/work/mysql/mysql-5.0-maint
      
      
      sql/mysql_priv.h:
        Auto merged
      29b63cb1
    • unknown's avatar
      Merge pilot.mysql.com:/home/msvensson/mysql/mysql-5.0 · f72e6447
      unknown authored
      into  pilot.mysql.com:/home/msvensson/mysql/mysql-5.0-maint
      
      
      BitKeeper/etc/ignore:
        auto-union
      f72e6447
    • unknown's avatar
      Merge pilot.mysql.com:/home/msvensson/mysql/mysql-4.1-maint · 457d4d6b
      unknown authored
      into  pilot.mysql.com:/home/msvensson/mysql/mysql-5.0-maint
      
      
      BitKeeper/etc/gone:
        auto-union
      mysys/my_getopt.c:
        Auto merged
      sql/sql_prepare.cc:
        Auto merged
      sql/table.cc:
        Auto merged
      457d4d6b
    • unknown's avatar
      Merge olga.mysql.com:/home/igor/mysql-5.0-opt · 147a8485
      unknown authored
      into  olga.mysql.com:/home/igor/dev-opt/mysql-5.0-opt-bug26209
      
      
      sql/sql_select.cc:
        Auto merged
      147a8485
  7. 12 Feb, 2007 17 commits
    • unknown's avatar
      Merge mysql.com:/home/hf/work/20691/my50-20691 · 557e4709
      unknown authored
      into  mysql.com:/home/hf/work/25492/my50-25492
      
      
      sql/item.cc:
        Auto merged
      557e4709
    • unknown's avatar
      Merge bk@192.168.21.1:mysql-5.0-opt · 72748ac7
      unknown authored
      into  mysql.com:/home/hf/work/25492/my50-25492
      
      72748ac7
    • unknown's avatar
      Merge mysql.com:/home/hf/work/25492/my41-25492 · f5162a11
      unknown authored
      into  mysql.com:/home/hf/work/25492/my50-25492
      
      
      libmysqld/lib_sql.cc:
        merging
      f5162a11
    • unknown's avatar
      Bug#24532 (The return data type of IS TRUE is different from similar · ea7180f5
      unknown authored
        operations)
      
      Before this change, the boolean predicates:
      - X IS TRUE,
      - X IS NOT TRUE,
      - X IS FALSE,
      - X IS NOT FALSE
      were implemented by expanding the Item tree in the parser, by using a
      construct like:
      Item_func_if(Item_func_ifnull(X, <value>), <value>, <value>)
      
      Each <value> was a constant integer, either 0 or 1.
      
      A bug in the implementation of the function IF(a, b, c), in
      Item_func_if::fix_length_and_dec(), would cause the following :
      
      When the arguments b and c are both unsigned, the result type of the
      function was signed, instead of unsigned.
      
      When the result of the if function is signed, space for the sign could be
      counted twice (in the max() expression for a signed argument, and in the
      total), causing the member max_length to be too high.
      
      An effect of this is that the final type of IF(x, int(1), int(1)) would be
      int(2) instead of int(1).
      
      With this fix, the problems found in Item_func_if::fix_length_and_dec()
      have been fixed.
      
      While it's semantically correct to represent 'X IS TRUE' with
      Item_func_if(Item_func_ifnull(X, <value>), <value>, <value>),
      there are however more problems with this construct.
      
      a)
      Building the parse tree involves :
      - creating 5 Item instances (3 ints, 1 ifnull, 1 if),
      - creating each Item calls my_pthread_getspecific_ptr() once in the operator
        new(size), and a second time in the Item::Item() constructor, resulting
        in a total of 10 calls to get the current thread.
      Evaluating the expression involves evaluating up to 4 nodes at runtime.
      This representation could be greatly simplified and improved.
      
      b)
      Transforming the parse tree internally with if(ifnull(...)) is fine as long
      as this transformation is internal to the server implementation.
      With views however, the result of the parse tree is later exposed by the
      ::print() functions, and stored as part of the view definition.
      Doing this has long term consequences:
      
      1)
      The original semantic 'X IS TRUE' is lost, and replaced by the
      if(ifnull(...)) expression. As a result, SHOW CREATE VIEW does not restore
      the original code.
      
      2)
      Should a future version of MySQL implement the SQL BOOLEAN data type for
      example, views created today using 'X IS NULL' can be exported using
      mysqldump, and imported again. Such views would be converted correctly and
      automatically to use a BOOLEAN column in the future version.
      With 'X IS TRUE' and the current implementations, views using these
      "boolean" predicates would not be converted during the export/import, and
      would use integer columns instead.
      The difference traces back to how SHOW CREATE VIEW preserves 'X IS NULL' but
      does not preserve the 'X IS TRUE' semantic.
      
      With this fix, internal representation of 'X IS TRUE' booleans predicates
      has changed, so that:
      - dedicated Item classes are created for each predicate,
      - only 1 Item is created to represent 1 predicate
      - my_pthread_getspecific_ptr() is invoked 1 time instead of 10
      - SHOW CREATE VIEW preserves the original semantic, and prints 'X IS TRUE'.
      
      Note that, because of the fix in Item_func_if, views created before this fix
      will:
      - correctly use a int(1) type instead of int(2) for boolean predicates,
      - incorrectly print the if(ifnull(...), ...) expression in SHOW CREATE VIEW,
      since the original semantic (X IS TRUE) has been lost.
      - except for the syntax used in SHOW CREATE VIEW, these views will operate
      properly, no action is needed.
      
      Views created after this fix will operate correctly, and will preserve the
      original code semantic in SHOW CREATE VIEW.
      
      
      mysql-test/r/func_if.result:
        IF(x, unsigned, unsigned) should be unsigned.
      mysql-test/r/view.result:
        Preserve the semantic of 'X IS [NOT] (TRUE|FALSE)' boolean predicates.
      mysql-test/t/func_if.test:
        IF(x, unsigned, unsigned) should be unsigned.
      mysql-test/t/view.test:
        Preserve the semantic of 'X IS [NOT] (TRUE|FALSE)' boolean predicates.
      sql/item_cmpfunc.cc:
        Preserve the semantic of 'X IS [NOT] (TRUE|FALSE)' boolean predicates.
        IF(x, unsigned, unsigned) should be unsigned.
      sql/item_cmpfunc.h:
        Preserve the semantic of 'X IS [NOT] (TRUE|FALSE)' boolean predicates.
      sql/sql_yacc.yy:
        Preserve the semantic of 'X IS [NOT] (TRUE|FALSE)' boolean predicates.
      ea7180f5
    • unknown's avatar
      bug #25492 (Invalid deallocation in mysql_stmt_fetch) · 07efefd2
      unknown authored
      
      libmysqld/lib_sql.cc:
        code modified to prevent freeing of memory that wasn't malloc-ed.
        Now we check if MYSQL_STMT::result was used.
      07efefd2
    • unknown's avatar
      Merge mysql.com:/home/gluh/MySQL/Merge/5.0 · 9f1c12ac
      unknown authored
      into  mysql.com:/home/gluh/MySQL/Merge/5.0-opt
      
      9f1c12ac
    • unknown's avatar
      Merge sgluhov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt · 8e153eba
      unknown authored
      into  mysql.com:/home/gluh/MySQL/Merge/5.0-opt
      
      8e153eba
    • unknown's avatar
      valgrind error fix · b70ae8b4
      unknown authored
      b70ae8b4
    • unknown's avatar
      Fixed MacOSX/Intel linking problem · 854015a0
      unknown authored
       Common symbols with and without initialization
       cause the apple linker to exclude then from the
       list of global symbols.
      
      854015a0
    • unknown's avatar
      Merge tnurnberg@bk-internal.mysql.com:/home/bk/mysql-5.0-maint · 745b5b99
      unknown authored
      into  mysql.com:/home/tnurnberg/24660/50-24660
      
      
      sql/table.cc:
        Auto merged
      sql/unireg.cc:
        Auto merged
      745b5b99
    • unknown's avatar
      Merge tnurnberg@bk-internal.mysql.com:/home/bk/mysql-4.1-maint · 18dc6317
      unknown authored
      into  mysql.com:/home/tnurnberg/24660/41-24660
      
      
      sql/table.cc:
        Auto merged
      18dc6317
    • unknown's avatar
      Merge mysql.com:/home/tnurnberg/24660/41-24660 · 8b5e1c86
      unknown authored
      into  mysql.com:/home/tnurnberg/24660/50-24660
      
      
      mysql-test/r/type_enum.result:
        Auto merged
      sql/table.cc:
        Auto merged
      sql/unireg.cc:
        Auto merged
      8b5e1c86
    • unknown's avatar
      Bug#24660: "enum" field type definition problem · 7ca628c6
      unknown authored
      ENUMs weren't allowed to have character 0xff, a perfectly good character in some locales.
      This was circumvented by mapping 0xff in ENUMs to ',', thereby prevent actual commas from
      being used. Now if 0xff makes an appearance, we find a character not used in the enum and
      use that as a separator. If no such character exists, we throw an error.
      
      Any solution would have broken some sort of existing behaviour. This solution should
      serve both fractions (those with 0xff and those with ',' in their enums), but
      WILL REQUIRE A DUMP/RESTORE CYCLE FROM THOSE WITH 0xff IN THEIR ENUMS. :-/
      That is, mysqldump with their current server, and restore when upgrading to one with
      this patch.
      
      
      mysql-test/r/type_enum.result:
        Bug#24660: "enum" field type definition problem
        
        Show that enums can now contain NAMES_SEP_CHAR (0xff, which is a perfectly respectable
        char in some locales), or ',', or both.
      mysql-test/t/type_enum.test:
        Bug#24660: "enum" field type definition problem
        
        Show that enums can now contain NAMES_SEP_CHAR (0xff, which is a perfectly respectable
        char in some locales), or ',', or both.
      sql/table.cc:
        Bug#24660: "enum" field type definition problem
        
        Revert fix for Bug#20922.
      sql/unireg.cc:
        Bug#24660: "enum" field type definition problem
        
        Use a field-separator for ENUM-values that is not part of those values. If impossible,
        throw error.
      7ca628c6
    • unknown's avatar
      Bug#24630 Subselect query crashes mysqld · b35801de
      unknown authored
      The crash happens because second filling of the same I_S table happens in
      case of subselect with order by. table->sort.io_cache previously allocated
      in create_sort_index() is deleted during second filling
      (function get_schema_tables_result). There are two places where
      I_S table can be filled: JOIN::exec and create_sort_index().
      To fix the bug we should check if the table was already filled
      in one of these places and skip processing of the table in second.
      
      
      mysql-test/r/information_schema.result:
        test case
      mysql-test/t/information_schema.test:
        test case
      sql/mysql_priv.h:
        added new parameter 'executed_place' to function get_schema_tables_result()
      sql/sql_select.cc:
        added new parameter 'executed_place' to function get_schema_tables_result()
      sql/sql_show.cc:
        added more accurate check for cases when we need to refresh I_S table
      sql/table.cc:
        added more accurate check for cases when we need to refresh I_S table
      sql/table.h:
        added more accurate check for cases when we need to refresh I_S table
      b35801de
    • unknown's avatar
      bug #20691 (INSERT (DEFAULT) may insert garbage with NO DEFAULT NOT NULL field) · 7ed652e0
      unknown authored
      Some fields (GEOMETRY first of all) can't be handled properly in this
      case at all. So we return an error in this case
      
      
      mysql-test/r/default.result:
        result fixed
      mysql-test/r/gis.result:
        result fixed
      mysql-test/t/default.test:
        VIEW test added
      mysql-test/t/gis.test:
        testcase added
      sql/item.cc:
        set_defaults() changed with the 'reset()'
      7ed652e0
    • unknown's avatar
      Merge olga.mysql.com:/home/igor/mysql-5.0-opt · 68fbbbf1
      unknown authored
      into  olga.mysql.com:/home/igor/dev-opt/mysql-5.0-opt-bug26159
      
      68fbbbf1
    • unknown's avatar
      Fixed bug #26209. · 3ec35ab0
      unknown authored
      The function make_unireg_sortorder ignored the fact that any
      view field is represented by a 'ref' object.
      This could lead to wrong results for the queries containing
      both GROUP BY and ORDER BY clauses.
      
      
      mysql-test/r/view.result:
        Added a test case for bug #26209.
      mysql-test/t/view.test:
        Added a test case for bug #26209.
      3ec35ab0
  8. 11 Feb, 2007 3 commits
    • unknown's avatar
      sql_view.cc: · 56baa89b
      unknown authored
        Post fix for bug#12122.
      information_schema.result:
        Corrected test case after fixing bug#12122.
      
      
      sql/sql_view.cc:
        Post fix for bug#12122.
      mysql-test/r/information_schema.result:
        Corrected test case after fixing bug#12122.
      56baa89b
    • unknown's avatar
      Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-5.0-opt · 537de83a
      unknown authored
      into  moonbone.local:/mnt/gentoo64/work/12122-bug-5.0-opt-mysql
      
      537de83a
    • unknown's avatar
      Fixed bug #26159. · c30ebf55
      unknown authored
      A wrong order of statements in QUICK_GROUP_MIN_MAX_SELECT::reset
      caused a crash when a query with DISTINCT was executed by a loose scan
      for an InnoDB table that had been emptied. 
      
      
      mysql-test/r/innodb_mysql.result:
        Added a test case for bug #26159.
      mysql-test/t/innodb_mysql.test:
        Added a test case for bug #26159.
      sql/opt_range.cc:
        Fixed bug #26159.
        A wrong order of statements in QUICK_GROUP_MIN_MAX_SELECT::reset
        caused a crash when a query with DISTINCT was executed by a loose scan
        for an InnoDB table that had been emptied. 
        For an empty table quick_prefix_select->reset() was not called at all
        and thus some important initialization steps were missing.
      c30ebf55
  9. 09 Feb, 2007 2 commits
    • unknown's avatar
      Bug#12122: The MERGE algorithm isn't applicable if the ORDER BY clause is · 94032c61
      unknown authored
      present.
      
      A view created with CREATE VIEW ... ORDER BY ... cannot be resolved with
      the MERGE algorithm, even when no other part of the CREATE VIEW statement
      would require the view to be resolved using the TEMPTABLE algorithm.
      
      The check for presence of the ORDER BY clause in the underlying select is 
      removed from the st_lex::can_be_merged() function.
      The ORDER BY list of the underlying select is appended to the ORDER BY list 
      
      
      mysql-test/t/view.test:
        Added a test case for bug#12122: Views with ORDER BY can't be resolved using MERGE algorithm.
      mysql-test/r/view.result:
        Added a test case for bug#12122: Views with ORDER BY can't be resolved using MERGE algorithm.
      sql/sql_lex.cc:
        Bug#12122: Views with ORDER BY can't be resolved using MERGE algorithm.
        The st_lex::can_be_merged() function now allows views with the ORDER BY
        clause to be resolved using MERGE algorithm. The ORDER BY list of the view 
        is appended to the ORDER BY list of the embedding select.
      94032c61
    • unknown's avatar
      Merge olga.mysql.com:/home/igor/mysql-5.0-opt · 854f45ef
      unknown authored
      into  olga.mysql.com:/home/igor/dev-opt/mysql-5.0-opt-bug26017
      
      854f45ef