Commit 2ae30d2e authored by peter@mysql.com's avatar peter@mysql.com

Trying to merge....

parents e9435f24 cffcb38c
...@@ -27,7 +27,7 @@ EXTRA_DIST = $(noinst_SCRIPTS) $(BUILT_SOURCES) mysqld_error.txt \ ...@@ -27,7 +27,7 @@ EXTRA_DIST = $(noinst_SCRIPTS) $(BUILT_SOURCES) mysqld_error.txt \
all: $(targets) txt_files all: $(targets) txt_files
txt_files: ../INSTALL-SOURCE ../COPYING ../COPYING.LIB \ txt_files: ../INSTALL-SOURCE ../COPYING ../COPYING.LIB \
../MIRRORS INSTALL-BINARY INSTALL-BINARY # ../MIRRORS
CLEAN_FILES: $(BUILD_SOURCES) CLEAN_FILES: $(BUILD_SOURCES)
touch $(BUILD_SOURCES) touch $(BUILD_SOURCES)
...@@ -254,8 +254,8 @@ INSTALL-BINARY: mysql.info $(GT) ...@@ -254,8 +254,8 @@ INSTALL-BINARY: mysql.info $(GT)
../COPYING.LIB: mysql.info $(GT) ../COPYING.LIB: mysql.info $(GT)
perl -w $(GT) mysql.info "LGPL license" "Function Index" > $@ perl -w $(GT) mysql.info "LGPL license" "Function Index" > $@
../MIRRORS: manual.texi $(srcdir)/Support/generate-mirror-listing.pl #../MIRRORS: manual.texi $(srcdir)/Support/generate-mirror-listing.pl
perl -w $(srcdir)/Support/generate-mirror-listing.pl manual.texi > $@ # perl -w $(srcdir)/Support/generate-mirror-listing.pl manual.texi > $@
# Don't update the files from bitkeeper # Don't update the files from bitkeeper
%::SCCS/s.% %::SCCS/s.%
This diff is collapsed.
...@@ -20,7 +20,7 @@ AUTOMAKE_OPTIONS = foreign ...@@ -20,7 +20,7 @@ AUTOMAKE_OPTIONS = foreign
# These are built from source in the Docs directory # These are built from source in the Docs directory
EXTRA_DIST = INSTALL-SOURCE README \ EXTRA_DIST = INSTALL-SOURCE README \
COPYING COPYING.LIB MIRRORS COPYING COPYING.LIB
SUBDIRS = include @docs_dirs@ @readline_dir@ \ SUBDIRS = include @docs_dirs@ @readline_dir@ \
@thread_dirs@ pstack @sql_client_dirs@ \ @thread_dirs@ pstack @sql_client_dirs@ \
@sql_server_dirs@ @libmysqld_dirs@ scripts man \ @sql_server_dirs@ @libmysqld_dirs@ scripts man \
......
...@@ -323,8 +323,7 @@ typedef struct st_io_cache_share ...@@ -323,8 +323,7 @@ typedef struct st_io_cache_share
int count; int count;
/* actual IO_CACHE that filled the buffer */ /* actual IO_CACHE that filled the buffer */
struct st_io_cache *active; struct st_io_cache *active;
/* the following will be implemented whenever the need arises */ #ifdef NOT_YET_IMPLEMENTED
#ifdef NOT_IMPLEMENTED
/* whether the structure should be free'd */ /* whether the structure should be free'd */
my_bool alloced; my_bool alloced;
#endif #endif
......
...@@ -358,7 +358,7 @@ typedef struct st_sort_info ...@@ -358,7 +358,7 @@ typedef struct st_sort_info
MI_CHECK *param; MI_CHECK *param;
enum data_file_type new_data_file_type; enum data_file_type new_data_file_type;
SORT_KEY_BLOCKS *key_block,*key_block_end; SORT_KEY_BLOCKS *key_block,*key_block_end;
uint kei, total_keys; uint current_key, total_keys;
my_off_t filelength,dupp,buff_length; my_off_t filelength,dupp,buff_length;
ha_rows max_records; ha_rows max_records;
char *buff; char *buff;
......
...@@ -49,7 +49,7 @@ sqlsources = convert.cc derror.cc field.cc field_conv.cc filesort.cc \ ...@@ -49,7 +49,7 @@ sqlsources = convert.cc derror.cc field.cc field_conv.cc filesort.cc \
repl_failsafe.cc slave.cc \ repl_failsafe.cc slave.cc \
sql_analyse.cc sql_base.cc sql_cache.cc sql_class.cc \ sql_analyse.cc sql_base.cc sql_cache.cc sql_class.cc \
sql_crypt.cc sql_db.cc sql_delete.cc sql_insert.cc sql_lex.cc \ sql_crypt.cc sql_db.cc sql_delete.cc sql_insert.cc sql_lex.cc \
sql_list.cc sql_manager.cc sql_map.cc sql_parse.cc \ sql_list.cc sql_manager.cc sql_map.cc sql_olap.cc sql_parse.cc \
sql_rename.cc sql_repl.cc sql_select.cc sql_do.cc sql_show.cc \ sql_rename.cc sql_repl.cc sql_select.cc sql_do.cc sql_show.cc \
sql_string.cc sql_table.cc sql_test.cc sql_udf.cc \ sql_string.cc sql_table.cc sql_test.cc sql_udf.cc \
sql_update.cc sql_yacc.cc table.cc thr_malloc.cc time.cc \ sql_update.cc sql_yacc.cc table.cc thr_malloc.cc time.cc \
......
...@@ -3223,7 +3223,7 @@ static int sort_delete_record(MI_SORT_PARAM *sort_param) ...@@ -3223,7 +3223,7 @@ static int sort_delete_record(MI_SORT_PARAM *sort_param)
old_file=info->dfile; old_file=info->dfile;
info->dfile=info->rec_cache.file; info->dfile=info->rec_cache.file;
if (sort_info->kei) if (sort_info->current_key)
{ {
key=info->lastkey+info->s->base.max_key_length; key=info->lastkey+info->s->base.max_key_length;
if ((error=(*info->s->read_rnd)(info,sort_param->record,info->lastpos,0)) && if ((error=(*info->s->read_rnd)(info,sort_param->record,info->lastpos,0)) &&
...@@ -3234,7 +3234,7 @@ static int sort_delete_record(MI_SORT_PARAM *sort_param) ...@@ -3234,7 +3234,7 @@ static int sort_delete_record(MI_SORT_PARAM *sort_param)
DBUG_RETURN(1); DBUG_RETURN(1);
} }
for (i=0 ; i < sort_info->kei ; i++) for (i=0 ; i < sort_info->current_key ; i++)
{ {
uint key_length=_mi_make_key(info,i,key,sort_param->record,info->lastpos); uint key_length=_mi_make_key(info,i,key,sort_param->record,info->lastpos);
if (_mi_ck_delete(info,i,key,key_length)) if (_mi_ck_delete(info,i,key,key_length))
......
...@@ -275,12 +275,12 @@ a b ...@@ -275,12 +275,12 @@ a b
1 2 1 2
drop table t3,t1,t2; drop table t3,t1,t2;
drop table if exists t6, t5, t4, t3, t2, t1; drop table if exists t6, t5, t4, t3, t2, t1;
create table t1 (a int not null, b int not null, key(a,b)); create table t1 (a int not null, b int not null auto_increment, primary key(a,b));
create table t2 (a int not null, b int not null, key(a,b)); create table t2 (a int not null, b int not null auto_increment, primary key(a,b));
create table t3 (a int not null, b int not null, key(a,b)) UNION=(t1,t2) INSERT_METHOD=NO; create table t3 (a int not null, b int not null, key(a,b)) UNION=(t1,t2) INSERT_METHOD=NO;
create table t4 (a int not null, b int not null, key(a,b)) TYPE=MERGE UNION=(t1,t2) INSERT_METHOD=NO; create table t4 (a int not null, b int not null, key(a,b)) TYPE=MERGE UNION=(t1,t2) INSERT_METHOD=NO;
create table t5 (a int not null, b int not null, key(a,b)) TYPE=MERGE UNION=(t1,t2) INSERT_METHOD=FIRST; create table t5 (a int not null, b int not null auto_increment, primary key(a,b)) TYPE=MERGE UNION=(t1,t2) INSERT_METHOD=FIRST;
create table t6 (a int not null, b int not null, key(a,b)) TYPE=MERGE UNION=(t1,t2) INSERT_METHOD=LAST; create table t6 (a int not null, b int not null auto_increment, primary key(a,b)) TYPE=MERGE UNION=(t1,t2) INSERT_METHOD=LAST;
show create table t3; show create table t3;
Table Create Table Table Create Table
t3 CREATE TABLE `t3` ( t3 CREATE TABLE `t3` (
...@@ -299,18 +299,18 @@ show create table t5; ...@@ -299,18 +299,18 @@ show create table t5;
Table Create Table Table Create Table
t5 CREATE TABLE `t5` ( t5 CREATE TABLE `t5` (
`a` int(11) NOT NULL default '0', `a` int(11) NOT NULL default '0',
`b` int(11) NOT NULL default '0', `b` int(11) NOT NULL auto_increment,
KEY `a` (`a`,`b`) PRIMARY KEY (`a`,`b`)
) TYPE=MRG_MyISAM INSERT_METHOD=FIRST UNION=(t1,t2) ) TYPE=MRG_MyISAM INSERT_METHOD=FIRST UNION=(t1,t2)
show create table t6; show create table t6;
Table Create Table Table Create Table
t6 CREATE TABLE `t6` ( t6 CREATE TABLE `t6` (
`a` int(11) NOT NULL default '0', `a` int(11) NOT NULL default '0',
`b` int(11) NOT NULL default '0', `b` int(11) NOT NULL auto_increment,
KEY `a` (`a`,`b`) PRIMARY KEY (`a`,`b`)
) TYPE=MRG_MyISAM INSERT_METHOD=LAST UNION=(t1,t2) ) TYPE=MRG_MyISAM INSERT_METHOD=LAST UNION=(t1,t2)
insert into t1 values (1,1),(1,2),(1,3),(1,4); insert into t1 values (1,NULL),(1,NULL),(1,NULL),(1,NULL);
insert into t2 values (2,1),(2,2),(2,3),(2,4); insert into t2 values (2,NULL),(2,NULL),(2,NULL),(2,NULL);
select * from t3 order by b,a limit 3; select * from t3 order by b,a limit 3;
a b a b
select * from t4 order by b,a limit 3; select * from t4 order by b,a limit 3;
...@@ -461,6 +461,73 @@ a b ...@@ -461,6 +461,73 @@ a b
5 2 5 2
6 1 6 1
6 2 6 2
select 1;
1
1
insert into t5 values (1,NULL),(5,NULL);
insert into t6 values (2,NULL),(6,NULL);
select * from t1 order by a,b;
a b
1 1
1 2
1 3
1 4
1 5
4 1
4 2
5 1
5 2
5 3
select * from t2 order by a,b;
a b
2 1
2 2
2 3
2 4
2 5
6 1
6 2
6 3
select * from t5 order by a,b;
a b
1 1
1 2
1 3
1 4
1 5
2 1
2 2
2 3
2 4
2 5
4 1
4 2
5 1
5 2
5 3
6 1
6 2
6 3
select * from t6 order by a,b;
a b
1 1
1 2
1 3
1 4
1 5
2 1
2 2
2 3
2 4
2 5
4 1
4 2
5 1
5 2
5 3
6 1
6 2
6 3
drop table if exists t6, t5, t4, t3, t2, t1; drop table if exists t6, t5, t4, t3, t2, t1;
CREATE TABLE t1 ( a int(11) NOT NULL default '0', b int(11) NOT NULL default '0', PRIMARY KEY (a,b)) TYPE=MyISAM; CREATE TABLE t1 ( a int(11) NOT NULL default '0', b int(11) NOT NULL default '0', PRIMARY KEY (a,b)) TYPE=MyISAM;
INSERT INTO t1 VALUES (1,1), (2,1); INSERT INTO t1 VALUES (1,1), (2,1);
......
...@@ -129,18 +129,18 @@ drop table t3,t1,t2; ...@@ -129,18 +129,18 @@ drop table t3,t1,t2;
drop table if exists t6, t5, t4, t3, t2, t1; drop table if exists t6, t5, t4, t3, t2, t1;
# first testing of common stuff with new parameters # first testing of common stuff with new parameters
create table t1 (a int not null, b int not null, key(a,b)); create table t1 (a int not null, b int not null auto_increment, primary key(a,b));
create table t2 (a int not null, b int not null, key(a,b)); create table t2 (a int not null, b int not null auto_increment, primary key(a,b));
create table t3 (a int not null, b int not null, key(a,b)) UNION=(t1,t2) INSERT_METHOD=NO; create table t3 (a int not null, b int not null, key(a,b)) UNION=(t1,t2) INSERT_METHOD=NO;
create table t4 (a int not null, b int not null, key(a,b)) TYPE=MERGE UNION=(t1,t2) INSERT_METHOD=NO; create table t4 (a int not null, b int not null, key(a,b)) TYPE=MERGE UNION=(t1,t2) INSERT_METHOD=NO;
create table t5 (a int not null, b int not null, key(a,b)) TYPE=MERGE UNION=(t1,t2) INSERT_METHOD=FIRST; create table t5 (a int not null, b int not null auto_increment, primary key(a,b)) TYPE=MERGE UNION=(t1,t2) INSERT_METHOD=FIRST;
create table t6 (a int not null, b int not null, key(a,b)) TYPE=MERGE UNION=(t1,t2) INSERT_METHOD=LAST; create table t6 (a int not null, b int not null auto_increment, primary key(a,b)) TYPE=MERGE UNION=(t1,t2) INSERT_METHOD=LAST;
show create table t3; show create table t3;
show create table t4; show create table t4;
show create table t5; show create table t5;
show create table t6; show create table t6;
insert into t1 values (1,1),(1,2),(1,3),(1,4); insert into t1 values (1,NULL),(1,NULL),(1,NULL),(1,NULL);
insert into t2 values (2,1),(2,2),(2,3),(2,4); insert into t2 values (2,NULL),(2,NULL),(2,NULL),(2,NULL);
select * from t3 order by b,a limit 3; select * from t3 order by b,a limit 3;
select * from t4 order by b,a limit 3; select * from t4 order by b,a limit 3;
select * from t5 order by b,a limit 3,3; select * from t5 order by b,a limit 3,3;
...@@ -167,7 +167,16 @@ select * from t2 order by a,b; ...@@ -167,7 +167,16 @@ select * from t2 order by a,b;
select * from t3 order by a,b; select * from t3 order by a,b;
select * from t4 order by a,b; select * from t4 order by a,b;
select * from t5 order by a,b; select * from t5 order by a,b;
# auto_increment
select 1;
insert into t5 values (1,NULL),(5,NULL);
insert into t6 values (2,NULL),(6,NULL);
select * from t1 order by a,b;
select * from t2 order by a,b;
select * from t5 order by a,b;
select * from t6 order by a,b;
drop table if exists t6, t5, t4, t3, t2, t1; drop table if exists t6, t5, t4, t3, t2, t1;
CREATE TABLE t1 ( a int(11) NOT NULL default '0', b int(11) NOT NULL default '0', PRIMARY KEY (a,b)) TYPE=MyISAM; CREATE TABLE t1 ( a int(11) NOT NULL default '0', b int(11) NOT NULL default '0', PRIMARY KEY (a,b)) TYPE=MyISAM;
INSERT INTO t1 VALUES (1,1), (2,1); INSERT INTO t1 VALUES (1,1), (2,1);
CREATE TABLE t2 ( a int(11) NOT NULL default '0', b int(11) NOT NULL default '0', PRIMARY KEY (a,b)) TYPE=MyISAM; CREATE TABLE t2 ( a int(11) NOT NULL default '0', b int(11) NOT NULL default '0', PRIMARY KEY (a,b)) TYPE=MyISAM;
......
...@@ -75,8 +75,7 @@ int ha_myisammrg::write_row(byte * buf) ...@@ -75,8 +75,7 @@ int ha_myisammrg::write_row(byte * buf)
if (table->time_stamp) if (table->time_stamp)
update_timestamp(buf+table->time_stamp-1); update_timestamp(buf+table->time_stamp-1);
if (table->next_number_field && buf == table->record[0]) if (table->next_number_field && buf == table->record[0])
return (my_errno=HA_ERR_WRONG_COMMAND); update_auto_increment();
// update_auto_increment(); - [phi] have to check this before allowing it
return myrg_write(file,buf); return myrg_write(file,buf);
} }
......
...@@ -34,7 +34,7 @@ class ha_myisammrg: public handler ...@@ -34,7 +34,7 @@ class ha_myisammrg: public handler
const char **bas_ext() const; const char **bas_ext() const;
ulong table_flags() const ulong table_flags() const
{ {
return (HA_REC_NOT_IN_SEQ | HA_READ_RND_SAME | return (HA_REC_NOT_IN_SEQ | HA_READ_RND_SAME | HA_AUTO_PART_KEY |
HA_KEYPOS_TO_RNDPOS | HA_LASTKEY_ORDER | HA_KEYPOS_TO_RNDPOS | HA_LASTKEY_ORDER |
HA_NULL_KEY | HA_BLOB_KEY); HA_NULL_KEY | HA_BLOB_KEY);
} }
......
...@@ -628,16 +628,29 @@ longlong handler::get_auto_increment() ...@@ -628,16 +628,29 @@ longlong handler::get_auto_increment()
{ {
longlong nr; longlong nr;
int error; int error;
(void) extra(HA_EXTRA_KEYREAD); (void) extra(HA_EXTRA_KEYREAD);
index_init(table->next_number_index); index_init(table->next_number_index);
error=index_last(table->record[1]); if (!table->next_number_key_offset)
{ // Autoincrement at key-start
error=index_last(table->record[1]);
}
else
{
byte key[MAX_KEY_LENGTH];
key_copy(key,table,table->next_number_index,
table->next_number_key_offset);
error=index_read(table->record[1], key, table->next_number_key_offset,
HA_READ_PREFIX_LAST);
}
if (error) if (error)
nr=1; nr=1;
else else
nr=(longlong) table->next_number_field-> nr=(longlong) table->next_number_field->
val_int_offset(table->rec_buff_length)+1; val_int_offset(table->rec_buff_length)+1;
(void) extra(HA_EXTRA_NO_KEYREAD);
index_end(); index_end();
(void) extra(HA_EXTRA_NO_KEYREAD);
return nr; return nr;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment