1. 13 Nov, 2006 2 commits
    • unknown's avatar
      Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-4.1-opt · e56742d7
      unknown authored
      into  rakia.gmz:/home/kgeorge/mysql/autopush/B19216-4.1-opt
      
      
      e56742d7
    • unknown's avatar
      Bug #19216: Client crashes on long SELECT · f53af7b8
      unknown authored
       The server sends a number of columns to the client.
       It uses a limited "fast" function for that instead of the
       general one. This fast function cannot send numbers larger 
       than 2 bytes. 
       This causes the client to expect smaller number of columns. 
       The client writes outside of the allocated memory buffer 
       as a result.
       Fixed the server to use the general function to send column
       count.
       Fixed the client to check the column count before writing
       column data. 
      
      
      mysql-test/t/mysql_client.test:
        Bug #19216: Client crashes on long SELECT
         - test case
      sql/protocol.cc:
        Bug #19216: Client crashes on long SELECT
         - renamed the function for bether comprehention
           and made it local
         - used the right (non-local) function to transfer 
           the column count in Protocol::send_fields
      sql/protocol.h:
        Bug #19216: Client crashes on long SELECT
         - made optimized net_store_length local
      sql-common/client.c:
        Bug #19216: Client crashes on long SELECT
         - fixed the client to check for older servers (without the fix).
      f53af7b8
  2. 09 Nov, 2006 1 commit
  3. 08 Nov, 2006 1 commit
  4. 07 Nov, 2006 1 commit
    • unknown's avatar
      Bug #11032: getObject() returns a String for a sub-query of type datetime · 5af4fd25
      unknown authored
       - When returning metadata for scalar subqueries the actual type of the
         column was calculated based on the value type, which limits the actual
         type of a scalar subselect to the set of (currently) 3 basic types : 
         integer, double precision or string. This is the reason that columns
         of types other then the basic ones (e.g. date/time) are reported as
         being of the corresponding basic type.
         Fixed by storing/returning information for the column type in addition
         to the result type.
      
      
      mysql-test/r/subselect.result:
        Bug #11032: getObject() returns a String for a sub-query of type datetime
         - test case
      mysql-test/t/subselect.test:
        Bug #11032: getObject() returns a String for a sub-query of type datetime
         - test case
      sql/item_subselect.cc:
        Bug #11032: getObject() returns a String for a sub-query of type datetime
         - store and return the field type as well in addition to result type for 
           single row subqueries
      sql/item_subselect.h:
        Bug #11032: getObject() returns a String for a sub-query of type datetime
         - store and return the field type as well in addition to result type for 
           single row subqueries
      5af4fd25
  5. 03 Nov, 2006 1 commit
    • unknown's avatar
      Bug #22457: Column alias in ORDER BY works, but not if in an expression · c095f98f
      unknown authored
       The parser is allocating Item_field for references by name in ORDER BY
       expressions. Such expressions however may point not only to Item_field 
       in the select list (or to a table column) but also to an arbitrary Item. 
       This causes Item_field::fix_fields to throw an error about missing 
       column.
       The fix substitutes Item_field for the reference with an Item_ref when 
       not pointing to Item_field.
      
      
      mysql-test/r/order_by.result:
        Bug #22457: Column alias in ORDER BY works, but not if in an expression
         - test case
      mysql-test/t/order_by.test:
        Bug #22457: Column alias in ORDER BY works, but not if in an expression
         - test case
      sql/item.cc:
        Bug #22457: Column alias in ORDER BY works, but not if in an expression
         - transform the Item_field made by the parser into Item_ref if it 
           doesn't point to Item_field and it is in allowed context
      c095f98f
  6. 24 Oct, 2006 5 commits
  7. 23 Oct, 2006 1 commit
    • unknown's avatar
      WL#3475 (Threads for the embedded server in mysqltest) · 4ddb48c6
      unknown authored
      Necessary code added to mysqltest.c.
      Disabled tests are available now.
      
      
      client/mysqltest.c:
        do_send_query function implemented, so now 'send' command will be
        run in separate thread for the embedded server.
        Mutex and condition added to the 'connection' struct for syncronisation
        purposes. Yes it'd be easier if we had pthread_join() command
      libmysql/libmysql.c:
        this isn't actually needed and causes problems in embedded server
      mysql-test/t/bdb-deadlock.test:
        test is available for the embedded server now
      mysql-test/t/flush.test:
        test is available for the embedded server now
      mysql-test/t/flush_block_commit.test:
        test is available for the embedded server now
      mysql-test/t/innodb-deadlock.test:
        test is available for the embedded server now
      mysql-test/t/innodb-lock.test:
        test is available for the embedded server now
      mysql-test/t/lock_multi.test:
        test is available for the embedded server now
      mysql-test/t/rename.test:
        test is available for the embedded server now
      mysql-test/t/show_check.test:
        test is available for the embedded server now
      mysql-test/t/status.test:
        test is available for the embedded server now
      4ddb48c6
  8. 20 Oct, 2006 3 commits
    • unknown's avatar
      Merge ibabaev@bk-internal.mysql.com:/home/bk/mysql-4.1-opt · 8b447a8a
      unknown authored
      into  rurik.mysql.com:/home/igor/mysql-4.1-opt
      
      
      8b447a8a
    • unknown's avatar
      Merge bk-internal:/home/bk/mysql-4.1 · 0153d67e
      unknown authored
      into  dl145s.mysql.com:/data/bk/team_tree_merge/MERGE/mysql-4.1-opt
      
      
      sql/sql_base.cc:
        Auto merged
      sql/sql_select.cc:
        Auto merged
      0153d67e
    • unknown's avatar
      Fixed bug #23478. · d649efbb
      unknown authored
      If elements a not top-level IN subquery were accessed by an index and 
      the subquery result set included  a NULL value then the quantified
      predicate that contained the subquery was evaluated to NULL when 
      it should return a non-null value.
      
      
      mysql-test/r/subselect.result:
        Added a test case for bug #23478.
      mysql-test/t/subselect.test:
        Added a test case for bug #23478.
      d649efbb
  9. 19 Oct, 2006 4 commits
  10. 18 Oct, 2006 1 commit
    • unknown's avatar
      BUG#23175 - MYISAM crash/repair failed during repair · 48cf65c0
      unknown authored
      Repair table could crash a server if there is not sufficient
      memory (myisam_sort_buffer_size) to operate. Affects not only
      repair, but also all statements that use create index by sort:
      repair by sort, parallel repair, bulk insert.
      
      Return an error if there is not sufficient memory to store at
      least one key per BUFFPEK.
      
      Also fixed memory leak if thr_find_all_keys returns an error.
      
      
      myisam/sort.c:
        maxbuffer is number of BUFFPEK-s for repair. It is calculated
        as records / keys. keys is number of keys that can be stored
        in memory (myisam_sort_buffer_size). There must be sufficient
        memory to store both BUFFPEK-s and keys. It was checked
        correctly before this patch. However there is another
        requirement that wasn't checked: there must be sufficient
        memory for at least one key per BUFFPEK, otherwise repair
        by sort/parallel repair cannot operate.
        
        Return an error if there is not sufficient memory to store at
        least one key per BUFFPEK.
        
        Also fixed memory leak if thr_find_all_keys returns an error.
      mysql-test/r/repair.result:
        A test case for BUG#23175.
      mysql-test/t/repair.test:
        A test case for BUG#23175.
      48cf65c0
  11. 17 Oct, 2006 1 commit
  12. 16 Oct, 2006 3 commits
    • unknown's avatar
      Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-4.1-opt · 53924bdc
      unknown authored
      into  rakia.(none):/home/kgeorge/mysql/autopush/B14019-4.1-opt
      
      
      53924bdc
    • unknown's avatar
      Merge chilla.local:/home/mydev/mysql-4.1--team · 29929bb6
      unknown authored
      into  chilla.local:/home/mydev/mysql-4.1-bug12240
      
      
      29929bb6
    • unknown's avatar
      BUG#14019 : group by converts literal string to column name · 750a2a0b
      unknown authored
         When resolving unqualified name references MySQL was not
         checking what is the item type for the reference. Thus
         e.g a string literal item that has by convention a name
         equal to its string value will also work as a reference to 
         a SELECT list item or a table field.
         Fixed by allowing only Item_ref or Item_field to referenced by
         (unqualified) name.
      
      
      mysql-test/r/func_gconcat.result:
        Bug #14019: group by converts literal string to column name
         - removed undeterministic testcase : order by a constant 
           means no order.
      mysql-test/r/group_by.result:
        Bug #14019: group by converts literal string to column name
         - test case
      mysql-test/t/func_gconcat.test:
        Bug #14019: group by converts literal string to column name
         - removed undeterministic testcase : order by a constant 
           means no order.
      mysql-test/t/group_by.test:
        Bug #14019: group by converts literal string to column name
         - test case
      sql/sql_base.cc:
        Bug #14019: group by converts literal string to column name
         - resolve unqualified by name refs only for real references
      750a2a0b
  13. 13 Oct, 2006 2 commits
  14. 11 Oct, 2006 4 commits
    • unknown's avatar
      Merge bk-internal.mysql.com:/home/bk/mysql-4.1-engines · 403cc155
      unknown authored
      into  chilla.local:/home/mydev/mysql-4.1-bug8283-one
      
      
      include/my_sys.h:
        Auto merged
      403cc155
    • unknown's avatar
      BUG#22562 - REPAIR TABLE .. USE_FRM causes server crash on Windows and server · 31754c57
      unknown authored
                  hangs on Linux
      
      If REPAIR TABLE ... USE_FRM is issued for table that is located in different
      than default database server crash could happen.
      
      In reopen_name_locked_table take database name from table_list (user specified
      or default database) instead of from thd (default database).
      
      Affects 4.1 only.
      
      
      mysql-test/r/repair.result:
        A test case for BUG#22562.
      mysql-test/t/repair.test:
        A test case for BUG#22562.
      sql/sql_base.cc:
        In reopen_name_locked_table take database name from table_list (user specified
        or default database) instead of from thd (default database).
      31754c57
    • unknown's avatar
      Bug#12240 - Rows Examined in Slow Log showing incorrect number? · ddc5ae38
      unknown authored
      Examined rows are counted for every join part. The per-join-part
      counter was incremented over all iterations. The result variable
      was replaced at the end of every iteration. The final result was
      the number of examined rows by the join part that ended its
      execution as the last one. The numbers of other join parts was
      lost.
      
      Now we reset the per-join-part counter before every iteration and
      add it to the result variable at the end of the iteration. That
      way we get the sum of all iterations of all join parts.
      
      No test case. Testing this needs a look into the slow query log.
      I don't know of a way to do this portably with the test suite.
      
      
      sql/sql_select.cc:
        Bug#12240 - Rows Examined in Slow Log showing incorrect number?
        Fixed reseting and accumulation of examined rows counts.
      ddc5ae38
    • unknown's avatar
      Merge bk-internal:/home/bk/mysql-4.1-rpl · 1ba54cad
      unknown authored
      into  neptunus.(none):/home/msvensson/mysql/mysql-4.1
      
      
      1ba54cad
  15. 10 Oct, 2006 1 commit
  16. 09 Oct, 2006 2 commits
    • unknown's avatar
      Merge chilla.local:/home/mydev/mysql-4.1-bug8283 · 679b5848
      unknown authored
      into  chilla.local:/home/mydev/mysql-4.1-bug8283-one
      
      
      myisam/mi_check.c:
        Auto merged
      myisam/mi_packrec.c:
        Auto merged
      myisam/sort.c:
        Auto merged
      mysql-test/r/myisam.result:
        Bug#8283 - OPTIMIZE TABLE causes data loss
        Manual merge
      mysql-test/t/myisam.test:
        Bug#8283 - OPTIMIZE TABLE causes data loss
        Manual merge
      679b5848
    • unknown's avatar
      Bug#8283 - OPTIMIZE TABLE causes data loss · 3109da77
      unknown authored
      OPTIMIZE TABLE with myisam_repair_threads > 1 performs a non-quick 
      parallel repair. This means that it does not only rebuild all 
      indexes, but also the data file.
      
      Non-quick parallel repair works so that there is one thread per 
      index. The first of the threads rebuilds also the new data file.
      
      The problem was that all threads shared the read io cache on the
      old data file. If there were holes (deleted records) in the table,
      the first thread skipped them, writing only contiguous, non-deleted
      records to the new data file. Then it built the new index so that
      its entries pointed to the correct record positions. But the other
      threads didn't know the new record positions, but put the positions
      from the old data file into the index.
      
      The new design is so that there is a shared io cache which is filled
      by the first thread (the data file writer) with the new contiguous
      records and read by the other threads. Now they know the new record
      positions.
      
      Another problem was that for the parallel repair of compressed
      tables a common bit_buff and rec_buff was used. I changed it so
      that thread specific buffers are used for parallel repair.
      
      A similar problem existed for checksum calculation. I made this
      multi-thread safe too.
      
      
      include/my_sys.h:
        Bug#8283 - OPTIMIZE TABLE causes data loss
        Redesign of io_cache_share.
      include/myisam.h:
        Bug#8283 - OPTIMIZE TABLE causes data loss
        Redesign of checksum calculation in mi_check.c.
        'calc_checksum' is now in myisamdef.h:st_mi_sort_param.
      myisam/mi_check.c:
        Bug#8283 - OPTIMIZE TABLE causes data loss
        Implemented a new parallel repair design.
        Using a synchronized shared read/write cache.
        Allowed for thread specific bit_buff, rec_buff, and calc_checksum.
      myisam/mi_open.c:
        Bug#8283 - OPTIMIZE TABLE causes data loss
        Added DBUG output.
      myisam/mi_packrec.c:
        Bug#8283 - OPTIMIZE TABLE causes data loss
        Allowed for thread specific bit_buff and rec_buff.
      myisam/myisamdef.h:
        Bug#8283 - OPTIMIZE TABLE causes data loss
        Commented on checksum calculation variables.
        Allowed for thread specific bit_buff.
        Added DBUG output for better table crash detection.
      myisam/sort.c:
        Bug#8283 - OPTIMIZE TABLE causes data loss
        Added implications of the new parallel repair design.
        Renamed 'info' -> 'sort_param'.
        Added DBUG output.
      mysql-test/r/myisam.result:
        Bug#8283 - OPTIMIZE TABLE causes data loss
        Added test results.
      mysql-test/t/myisam.test:
        Bug#8283 - OPTIMIZE TABLE causes data loss
        Added test cases.
      mysys/mf_iocache.c:
        Bug#8283 - OPTIMIZE TABLE causes data loss
        Redesign of io_cache_share.
        We do now allow a writer to synchronize himself with the
        readers of a shared cache. When all threads join in the lock,
        the writer copies the data from his write buffer to the shared
        read buffer.
      3109da77
  17. 08 Oct, 2006 1 commit
  18. 06 Oct, 2006 4 commits
  19. 05 Oct, 2006 2 commits
    • unknown's avatar
      Merge svojtovich@bk-internal.mysql.com:/home/bk/mysql-4.1-engines · 9387a593
      unknown authored
      into  mysql.com:/home/svoj/devel/mysql/BUG21381/mysql-4.1-engines
      
      
      9387a593
    • unknown's avatar
      BUG#21381 - Engine not notified about multi-table UPDATE IGNORE · 2268afed
      unknown authored
      Though this is not storage engine specific problem, I was able to
      repeat this problem with BDB and NDB engines only. That was the
      reason to add a test case into ndb_update.test. As a result
      different bad things could happen.
      
      BDB has removed duplicate rows which is not expected.
      NDB returns an error.
      
      For multi table update notify storage engine about UPDATE IGNORE
      as it is done in single table UPDATE.
      
      
      mysql-test/r/ndb_update.result:
        A test case for bug#21381.
      mysql-test/t/ndb_update.test:
        A test case for bug#21381.
      sql/sql_update.cc:
        For multi table update notify storage engine about UPDATE IGNORE
        as it is done in single table UPDATE.
      2268afed