From: Date: April 17 2007 12:32pm Subject: bk commit into 5.0 tree (serg:1.2457) BUG#5507 List-Archive: http://lists.mysql.com/commits/24634 X-Bug: 5507 Message-Id: <20070417103207.6138.qmail@janus.mylan> Below is the list of changes that have just been committed into a local 5.0 repository of serg. When serg does a push these changes will be propagated to the main repository and, within 24 hours after the push, to the public repository. For information on how to access the public repository see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html ChangeSet@stripped, 2007-04-17 12:32:01+02:00, serg@stripped +4 -0 reverted the fix for Bug#5507 mysql-test/r/truncate.result@stripped, 2007-04-17 12:31:58+02:00, serg@stripped +3 -23 reverted the fix for Bug#5507 mysql-test/t/truncate.test@stripped, 2007-04-17 12:31:58+02:00, serg@stripped +8 -23 reverted the fix for Bug#5507 sql/sql_delete.cc@stripped, 2007-04-17 12:31:58+02:00, serg@stripped +3 -6 reverted the fix for Bug#5507 sql/sql_lex.cc@stripped, 2007-04-17 12:31:58+02:00, serg@stripped +0 -1 reverted the fix for Bug#5507 # This is a BitKeeper patch. What follows are the unified diffs for the # set of deltas contained in the patch. The rest of the patch, the part # that BitKeeper cares about, is below these diffs. # User: serg # Host: janus.mylan # Root: /usr/home/serg/Abk/mysql-5.0 --- 1.196/sql/sql_delete.cc 2007-04-17 12:32:07 +02:00 +++ 1.197/sql/sql_delete.cc 2007-04-17 12:32:07 +02:00 @@ -369,8 +369,6 @@ { Item *fake_conds= 0; SELECT_LEX *select_lex= &thd->lex->select_lex; - const char *operation = thd->lex->sql_command == SQLCOM_TRUNCATE ? - "TRUNCATE" : "DELETE"; DBUG_ENTER("mysql_prepare_delete"); List all_fields; @@ -385,14 +383,14 @@ DBUG_RETURN(TRUE); if (!table_list->updatable || check_key_in_view(thd, table_list)) { - my_error(ER_NON_UPDATABLE_TABLE, MYF(0), table_list->alias, operation); + my_error(ER_NON_UPDATABLE_TABLE, MYF(0), table_list->alias, "DELETE"); DBUG_RETURN(TRUE); } { TABLE_LIST *duplicate; if ((duplicate= unique_table(thd, table_list, table_list->next_global, 0))) { - update_non_unique_table_error(table_list, operation, duplicate); + update_non_unique_table_error(table_list, "DELETE", duplicate); DBUG_RETURN(TRUE); } } @@ -897,8 +895,7 @@ if (!dont_send_ok) { db_type table_type; - if (mysql_frm_type(thd, path, &table_type) == FRMTYPE_VIEW) - goto trunc_by_del; + mysql_frm_type(thd, path, &table_type); if (table_type == DB_TYPE_UNKNOWN) { my_error(ER_NO_SUCH_TABLE, MYF(0), --- 1.218/sql/sql_lex.cc 2007-04-17 12:32:07 +02:00 +++ 1.219/sql/sql_lex.cc 2007-04-17 12:32:07 +02:00 @@ -1834,7 +1834,6 @@ case SQLCOM_UPDATE_MULTI: case SQLCOM_DELETE: case SQLCOM_DELETE_MULTI: - case SQLCOM_TRUNCATE: case SQLCOM_INSERT: case SQLCOM_INSERT_SELECT: case SQLCOM_REPLACE: --- 1.12/mysql-test/r/truncate.result 2007-04-17 12:32:07 +02:00 +++ 1.13/mysql-test/r/truncate.result 2007-04-17 12:32:07 +02:00 @@ -57,26 +57,6 @@ insert into t1 (s1) values (1), (2), (3), (4), (5); create view v1 as select * from t1; truncate table v1; -select count(*) from t1; -count(*) -0 -insert into t1 (s1) values (1), (2), (3), (4), (5); -create view v2 as select * from t1 where s1 > 3; -truncate table v2; -select * from t1; -s1 -1 -2 -3 -select * from v2; -s1 -delete from t1; -create table t2 (s1 int, s2 int); -create view v3 as select a.s1, b.s2 from t1 a join t2 b on a.s1 = b.s1 where a.s1 > 3; -truncate table v3; -ERROR HY000: Can not delete from join view 'test.v3' -create view v4 as select * from t1 limit 1,1; -truncate table v4; -ERROR HY000: The target table v4 of the TRUNCATE is not updatable -drop view v1, v2, v3, v4; -drop table t1, t2; +ERROR 42S02: Table 'test.v1' doesn't exist +drop view v1; +drop table t1; --- 1.13/mysql-test/t/truncate.test 2007-04-17 12:32:07 +02:00 +++ 1.14/mysql-test/t/truncate.test 2007-04-17 12:32:07 +02:00 @@ -54,33 +54,18 @@ # End of 4.1 tests # Test for Bug#5507 "TRUNCATE should work with views" +# +# when it'll be fixed, the error should become 1347 +# (test.v1' is not BASE TABLE) +# create table t1 (s1 int); - insert into t1 (s1) values (1), (2), (3), (4), (5); create view v1 as select * from t1; +--error 1146 truncate table v1; -select count(*) from t1; - -insert into t1 (s1) values (1), (2), (3), (4), (5); -create view v2 as select * from t1 where s1 > 3; -truncate table v2; -select * from t1; -select * from v2; -delete from t1; - -# The following should fail -create table t2 (s1 int, s2 int); -create view v3 as select a.s1, b.s2 from t1 a join t2 b on a.s1 = b.s1 where a.s1 > 3; ---error 1395 -truncate table v3; - -# The following should fail -create view v4 as select * from t1 limit 1,1; ---error 1288 -truncate table v4; - -drop view v1, v2, v3, v4; -drop table t1, t2; +drop view v1; +drop table t1; # End of 5.0 tests +