diff options
author | unknown <msvensson@neptunus.(none)> | 2005-09-28 11:34:53 +0200 |
---|---|---|
committer | unknown <msvensson@neptunus.(none)> | 2005-09-28 11:34:53 +0200 |
commit | 69bfcd9c400e0b00fe53aaee8da0b38b0bf5f9ad (patch) | |
tree | 5b0761b29daf8c864538d0fb55e20e9b54758e47 /sql | |
parent | 59041a2b356943bda95d38c10e9ba01f7b2c7a73 (diff) | |
parent | e4fe90bfa767366a4784adb4e7c65bca7c5c0537 (diff) | |
download | mariadb-git-69bfcd9c400e0b00fe53aaee8da0b38b0bf5f9ad.tar.gz |
Merge neptunus.(none):/home/msvensson/mysql/mysql-4.1
into neptunus.(none):/home/msvensson/mysql/mysql-5.0
client/mysql.cc:
Auto merged
client/mysqltest.c:
Auto merged
mysql-test/mysql-test-run.pl:
Auto merged
mysql-test/r/mysqltest.result:
Auto merged
mysql-test/t/mysqltest.test:
Auto merged
mysys/my_init.c:
Auto merged
sql/sql_update.cc:
Auto merged
Makefile.am:
Manual merge
mysql-test/r/cast.result:
Manual merge
mysql-test/t/cast.test:
Manual merge
ndb/src/kernel/blocks/dbdict/printSchemaFile.cpp:
Manual merge
sql/ha_ndbcluster.cc:
Manual merge
sql/item.h:
Manual merge
sql/opt_sum.cc:
Manual merge
sql/sql_delete.cc:
Manual merge
sql/sql_lex.cc:
Manual merge
sql/sql_load.cc:
Manual merge
sql/sql_prepare.cc:
Manual merge
Diffstat (limited to 'sql')
-rw-r--r-- | sql/item.h | 1 | ||||
-rw-r--r-- | sql/opt_sum.cc | 10 | ||||
-rw-r--r-- | sql/sql_delete.cc | 1 | ||||
-rw-r--r-- | sql/sql_lex.cc | 1 | ||||
-rw-r--r-- | sql/sql_load.cc | 2 | ||||
-rw-r--r-- | sql/sql_update.cc | 1 |
6 files changed, 10 insertions, 6 deletions
diff --git a/sql/item.h b/sql/item.h index 381ba98e193..10c1eec2db9 100644 --- a/sql/item.h +++ b/sql/item.h @@ -1502,6 +1502,7 @@ public: my_decimal *val_decimal(my_decimal *); int save_in_field(Field *field, bool no_conversions); enum Item_result result_type () const { return STRING_RESULT; } + enum Item_result cast_to_int_type() const { return INT_RESULT; } enum_field_types field_type() const { return MYSQL_TYPE_VARCHAR; } // to prevent drop fixed flag (no need parent cleanup call) void cleanup() {} diff --git a/sql/opt_sum.cc b/sql/opt_sum.cc index 2f54cce0275..37acce2934b 100644 --- a/sql/opt_sum.cc +++ b/sql/opt_sum.cc @@ -108,7 +108,7 @@ int opt_sum_query(TABLE_LIST *tables, List<Item> &all_fields,COND *conds) WHERE t2.field IS NULL; */ if (tl->table->map & where_tables) - const_result= 0; + return 0; } else used_tables|= tl->table->map; @@ -119,7 +119,10 @@ int opt_sum_query(TABLE_LIST *tables, List<Item> &all_fields,COND *conds) may be used as the real count. */ if (tl->table->file->table_flags() & HA_NOT_EXACT_COUNT) + { is_exact_count= FALSE; + count= 1; // ensure count != 0 + } else { tl->table->file->info(HA_STATUS_VARIABLE | HA_STATUS_NO_LOCK); @@ -127,9 +130,6 @@ int opt_sum_query(TABLE_LIST *tables, List<Item> &all_fields,COND *conds) } } - if (!const_result) - return 0; - /* Iterate through all items in the SELECT clause and replace COUNT(), MIN() and MAX() with constants (if possible). @@ -250,7 +250,7 @@ int opt_sum_query(TABLE_LIST *tables, List<Item> &all_fields,COND *conds) } if (!count) { - /* If count != 1, then we know that is_exact_count == TRUE. */ + /* If count == 0, then we know that is_exact_count == TRUE. */ ((Item_sum_min*) item_sum)->clear(); /* Set to NULL. */ } else diff --git a/sql/sql_delete.cc b/sql/sql_delete.cc index 7e99a5c65ee..4001a51f459 100644 --- a/sql/sql_delete.cc +++ b/sql/sql_delete.cc @@ -313,6 +313,7 @@ bool mysql_prepare_delete(THD *thd, TABLE_LIST *table_list, Item **conds) SELECT_LEX *select_lex= &thd->lex->select_lex; DBUG_ENTER("mysql_prepare_delete"); + thd->allow_sum_func= 0; if (setup_tables(thd, &thd->lex->select_lex.context, &thd->lex->select_lex.top_join_list, table_list, conds, &select_lex->leaf_tables, diff --git a/sql/sql_lex.cc b/sql/sql_lex.cc index 32178a0a07d..b7a2b6b0624 100644 --- a/sql/sql_lex.cc +++ b/sql/sql_lex.cc @@ -171,7 +171,6 @@ void lex_start(THD *thd, uchar *buf,uint length) lex->sql_command= lex->orig_sql_command= SQLCOM_END; lex->duplicates= DUP_ERROR; lex->ignore= 0; - thd->allow_sum_func= 0; lex->sphead= NULL; lex->spcont= NULL; lex->proc_list.first= 0; diff --git a/sql/sql_load.cc b/sql/sql_load.cc index 30398375360..ff2be0ae6fb 100644 --- a/sql/sql_load.cc +++ b/sql/sql_load.cc @@ -564,6 +564,8 @@ read_fixed_length(THD *thd, COPY_INFO &info, TABLE_LIST *table_list, { uint length; byte save_chr; + if (field == table->next_number_field) + table->auto_increment_field_not_null= TRUE; if ((length=(uint) (read_info.row_end-pos)) > field->field_length) length=field->field_length; diff --git a/sql/sql_update.cc b/sql/sql_update.cc index efdf1291305..f85ef355752 100644 --- a/sql/sql_update.cc +++ b/sql/sql_update.cc @@ -571,6 +571,7 @@ bool mysql_prepare_update(THD *thd, TABLE_LIST *table_list, bzero((char*) &tables,sizeof(tables)); // For ORDER BY tables.table= table; tables.alias= table_list->alias; + thd->allow_sum_func= 0; if (setup_tables(thd, &select_lex->context, &select_lex->top_join_list, table_list, conds, &select_lex->leaf_tables, |