diff options
author | unknown <monty@hundin.mysql.fi> | 2002-01-29 18:32:16 +0200 |
---|---|---|
committer | unknown <monty@hundin.mysql.fi> | 2002-01-29 18:32:16 +0200 |
commit | d6a4362687434767d835713f174cd9bdd2656967 (patch) | |
tree | dc6d00358536a5dca27f806f929ab5e25a000c92 /sql/sql_handler.cc | |
parent | 741b75b1c7810a1f6425c81738499fe12bdbc309 (diff) | |
download | mariadb-git-d6a4362687434767d835713f174cd9bdd2656967.tar.gz |
New error messages
Test of unsigned BIGINT values
Fixes for queries-per-hour
Cleanup of replication code (comments and portability fixes)
Make most of the binary log code 4G clean
Changed syntax for GRANT ... QUERIES PER HOUR
Docs/manual.texi:
Fixed Changelog, upgrading to 4.0 and 4.1 TODO sections.
Docs/mysqld_error.txt:
Added error message.
configure.in:
Fix for autoconf 2.52
include/my_getopt.h:
Portability fix.
include/my_global.h:
Portablity fix.
include/mysqld_error.h:
New error messages
mysql-test/r/bigint.result:
Test of unsigned BIGINT values.
mysql-test/r/func_op.result:
Test of unsigned BIGINT values.
mysql-test/r/varbinary.result:
Test of unsigned BIGINT values.
mysql-test/t/bigint.test:
Test of unsigned BIGINT values.
sql/item_func.h:
Optimized Item_int_func() usage.
sql/lock.cc:
Cleanup comments
sql/log.cc:
Cleanup
sql/log_event.cc:
Cleanup and portability fixes.
sql/log_event.h:
Cleanup and portability fixes.
sql/mini_client.cc:
Cleanup and portability fixes.
sql/mysqld.cc:
Fix for queries-per-hour
sql/repl_failsafe.cc:
Prepare for making binary log 2G clean.
sql/share/czech/errmsg.txt:
New error messages
sql/share/danish/errmsg.txt:
New error messages
sql/share/dutch/errmsg.txt:
New error messages
sql/share/english/errmsg.txt:
New error messages
sql/share/estonian/errmsg.txt:
New error messages
sql/share/french/errmsg.txt:
New error messages
sql/share/german/errmsg.txt:
New error messages
sql/share/greek/errmsg.txt:
New error messages
sql/share/hungarian/errmsg.txt:
New error messages
sql/share/italian/errmsg.txt:
New error messages
sql/share/japanese/errmsg.txt:
New error messages
sql/share/korean/errmsg.txt:
New error messages
sql/share/norwegian-ny/errmsg.txt:
New error messages
sql/share/norwegian/errmsg.txt:
New error messages
sql/share/polish/errmsg.txt:
New error messages
sql/share/portuguese/errmsg.txt:
New error messages
sql/share/romanian/errmsg.txt:
New error messages
sql/share/russian/errmsg.txt:
New error messages
sql/share/slovak/errmsg.txt:
New error messages
sql/share/spanish/errmsg.txt:
New error messages
sql/share/swedish/errmsg.txt:
New error messages
sql/share/ukrainian/errmsg.txt:
New error messages
sql/slave.cc:
Cleanup
sql/slave.h:
Cleanup
sql/sql_acl.cc:
Cleanup and removal of possible reserved words
sql/sql_base.cc:
More DBUG
sql/sql_cache.cc:
Cleanup & portability fixes
sql/sql_class.h:
Make binary log 4G clean
sql/sql_delete.cc:
More DBUG
sql/sql_handler.cc:
Cleanup & portability fixes
sql/sql_parse.cc:
Cleanup of queries-per-hours code
sql/sql_rename.cc:
Add missing DBUG_RETURN
sql/sql_repl.cc:
Cleanup & portability fixes
sql/sql_select.cc:
Cleanup & portability fixes
sql/sql_show.cc:
Cleanup & portability fixes
sql/sql_update.cc:
Small cleanup of multi-update-code (need second pass)
sql/sql_yacc.yy:
Changed syntax for GRANT ... QUERIES PER HOUR
strings/str2int.c:
Cleanup & portability fixes
Diffstat (limited to 'sql/sql_handler.cc')
-rw-r--r-- | sql/sql_handler.cc | 115 |
1 files changed, 58 insertions, 57 deletions
diff --git a/sql/sql_handler.cc b/sql/sql_handler.cc index 0c6b5599519..8f9d3474ce2 100644 --- a/sql/sql_handler.cc +++ b/sql/sql_handler.cc @@ -90,6 +90,7 @@ int mysql_ha_close(THD *thd, TABLE_LIST *tables, bool dont_send_ok) static enum enum_ha_read_modes rkey_to_rnext[]= { RNEXT, RNEXT, RPREV, RNEXT, RPREV, RNEXT, RPREV }; + int mysql_ha_read(THD *thd, TABLE_LIST *tables, enum enum_ha_read_modes mode, char *keyname, List<Item> *key_expr, enum ha_rkey_function ha_rkey_mode, Item *cond, @@ -121,6 +122,7 @@ int mysql_ha_read(THD *thd, TABLE_LIST *tables, List<Item> list; list.push_front(new Item_field(NULL,NULL,"*")); List_iterator<Item> it(list); + uint num_rows; it++; insert_fields(thd,tables,tables->db,tables->name,&it); @@ -136,65 +138,64 @@ int mysql_ha_read(THD *thd, TABLE_LIST *tables, if (!lock) goto err0; // mysql_lock_tables() printed error message already - for (uint num_rows=0; num_rows < select_limit; ) + for (num_rows=0; num_rows < select_limit; ) { - switch(mode) + switch(mode) { + case RFIRST: + err=keyname ? + table->file->index_first(table->record[0]) : + table->file->rnd_init(1) || + table->file->rnd_next(table->record[0]); + mode=RNEXT; + break; + case RLAST: + DBUG_ASSERT(keyname != 0); + err=table->file->index_last(table->record[0]); + mode=RPREV; + break; + case RNEXT: + err=keyname ? + table->file->index_next(table->record[0]) : + table->file->rnd_next(table->record[0]); + break; + case RPREV: + DBUG_ASSERT(keyname != 0); + err=table->file->index_prev(table->record[0]); + break; + case RKEY: { - case RFIRST: - err=keyname ? - table->file->index_first(table->record[0]) : - table->file->rnd_init(1) || - table->file->rnd_next(table->record[0]); - mode=RNEXT; - break; - case RLAST: - DBUG_ASSERT(keyname != 0); - err=table->file->index_last(table->record[0]); - mode=RPREV; - break; - case RNEXT: - err=keyname ? - table->file->index_next(table->record[0]) : - table->file->rnd_next(table->record[0]); - break; - case RPREV: - DBUG_ASSERT(keyname != 0); - err=table->file->index_prev(table->record[0]); - break; - case RKEY: - { - DBUG_ASSERT(keyname != 0); - KEY *keyinfo=table->key_info+keyno; - KEY_PART_INFO *key_part=keyinfo->key_part; - uint key_len; - byte *key; - if (key_expr->elements > keyinfo->key_parts) - { - my_printf_error(ER_TOO_MANY_KEY_PARTS,ER(ER_TOO_MANY_KEY_PARTS), - MYF(0),keyinfo->key_parts); - goto err; - } - List_iterator_fast<Item> it_ke(*key_expr); - Item *item; - for (key_len=0 ; (item=it_ke++) ; key_part++) - { - item->save_in_field(key_part->field); - key_len+=key_part->store_length; - } - if (!(key= (byte*) sql_calloc(ALIGN_SIZE(key_len)))) - { - send_error(&thd->net,ER_OUTOFMEMORY); - goto err; - } - key_copy(key, table, keyno, key_len); - err=table->file->index_read(table->record[0], - key,key_len,ha_rkey_mode); - mode=rkey_to_rnext[(int)ha_rkey_mode]; - break; - } - default: - send_error(&thd->net,ER_ILLEGAL_HA); - goto err; + DBUG_ASSERT(keyname != 0); + KEY *keyinfo=table->key_info+keyno; + KEY_PART_INFO *key_part=keyinfo->key_part; + uint key_len; + byte *key; + if (key_expr->elements > keyinfo->key_parts) + { + my_printf_error(ER_TOO_MANY_KEY_PARTS,ER(ER_TOO_MANY_KEY_PARTS), + MYF(0),keyinfo->key_parts); + goto err; + } + List_iterator_fast<Item> it_ke(*key_expr); + Item *item; + for (key_len=0 ; (item=it_ke++) ; key_part++) + { + item->save_in_field(key_part->field); + key_len+=key_part->store_length; + } + if (!(key= (byte*) sql_calloc(ALIGN_SIZE(key_len)))) + { + send_error(&thd->net,ER_OUTOFMEMORY); + goto err; + } + key_copy(key, table, keyno, key_len); + err=table->file->index_read(table->record[0], + key,key_len,ha_rkey_mode); + mode=rkey_to_rnext[(int)ha_rkey_mode]; + break; + } + default: + send_error(&thd->net,ER_ILLEGAL_HA); + goto err; } if (err) |