From 31815f3ad31c88dc0cb20ee792ced4b8dd72092f Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 19 Jun 2003 22:06:51 +0500 Subject: [PATCH 1/2] Bug #570 fixed sql/sql_update.cc: field_list_in_tables needs TABLE_LIST::alias to be initialized --- sql/sql_update.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sql/sql_update.cc b/sql/sql_update.cc index b4e7750addf..3179c8e0f24 100644 --- a/sql/sql_update.cc +++ b/sql/sql_update.cc @@ -86,7 +86,8 @@ int mysql_update(THD *thd, table->grant.want_privilege=(SELECT_ACL & ~table->grant.privilege); bzero((char*) &tables,sizeof(tables)); // For ORDER BY - tables.table = table; + tables.table= table; + tables.alias= table_list->alias; if (setup_tables(table_list) || setup_conds(thd,table_list,&conds) || setup_order(thd, &tables, all_fields, all_fields, order) || From b170d899e8772ea513a04fe8ae9c1f1ec125ea1c Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 3 Jul 2003 19:01:01 +0500 Subject: [PATCH 2/2] Test case for #570 added mysql-test/r/alias.result: Appropriate test result mysql-test/t/alias.test: Testcase for #570 --- mysql-test/r/alias.result | 11 +++++++++++ mysql-test/t/alias.test | 19 +++++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/mysql-test/r/alias.result b/mysql-test/r/alias.result index 3954c2d0170..55397705bdf 100644 --- a/mysql-test/r/alias.result +++ b/mysql-test/r/alias.result @@ -59,3 +59,14 @@ SELECT ELT(FIELD(kundentyp,'PP','PPA','PG','PGA','FK','FKA','FP','FPA','K','KA', Kundentyp kategorie Privat (Private Nutzung) Mobilfunk drop table t1; +CREATE TABLE t1 ( +AUFNR varchar(12) NOT NULL default '', +PLNFL varchar(6) NOT NULL default '', +VORNR varchar(4) NOT NULL default '', +xstatus_vor smallint(5) unsigned NOT NULL default '0', +); +INSERT INTO t1 VALUES ('40004712','000001','0010',9); +INSERT INTO t1 VALUES ('40004712','000001','0020',0); +UPDATE t1 SET t1.xstatus_vor = Greatest(t1.xstatus_vor,1) WHERE t1.aufnr = +"40004712" AND t1.plnfl = "000001" AND t1.vornr > "0010" ORDER BY t1.vornr +ASC LIMIT 1; diff --git a/mysql-test/t/alias.test b/mysql-test/t/alias.test index 5c6813d93aa..0dafc62430e 100644 --- a/mysql-test/t/alias.test +++ b/mysql-test/t/alias.test @@ -62,3 +62,22 @@ INSERT INTO t1 VALUES (3359362,406,3359362,'Mustermann Musterfrau',7001,'2000-05 SELECT ELT(FIELD(kundentyp,'PP','PPA','PG','PGA','FK','FKA','FP','FPA','K','KA','V','VA',''), 'Privat (Private Nutzung)','Privat (Private Nutzung) Sitz im Ausland','Privat (geschaeftliche Nutzung)','Privat (geschaeftliche Nutzung) Sitz im Ausland','Firma (Kapitalgesellschaft)','Firma (Kapitalgesellschaft) Sitz im Ausland','Firma (Personengesellschaft)','Firma (Personengesellschaft) Sitz im Ausland','oeff. rechtl. Koerperschaft','oeff. rechtl. Koerperschaft Sitz im Ausland','Eingetragener Verein','Eingetragener Verein Sitz im Ausland','Typ unbekannt') AS Kundentyp ,kategorie FROM t1 WHERE hdl_nr < 2000000 AND kategorie IN ('Prepaid','Mobilfunk') AND st_klasse = 'Workflow' GROUP BY kundentyp ORDER BY kategorie; drop table t1; + +# +# test case for #570 +# + +CREATE TABLE t1 ( + AUFNR varchar(12) NOT NULL default '', + PLNFL varchar(6) NOT NULL default '', + VORNR varchar(4) NOT NULL default '', + xstatus_vor smallint(5) unsigned NOT NULL default '0', + +); + +INSERT INTO t1 VALUES ('40004712','000001','0010',9); +INSERT INTO t1 VALUES ('40004712','000001','0020',0); + +UPDATE t1 SET t1.xstatus_vor = Greatest(t1.xstatus_vor,1) WHERE t1.aufnr = +"40004712" AND t1.plnfl = "000001" AND t1.vornr > "0010" ORDER BY t1.vornr +ASC LIMIT 1;