Loading Docs/manual.texi +3 −0 Original line number Diff line number Diff line Loading @@ -41442,6 +41442,9 @@ not yet 100 % confident in this code. @appendixsubsec Changes in release 3.23.34 @itemize @bullet @item Fixed problem in automatic repair that could let some threads in state @code{Waiting for table}. @item @code{SHOW CREATE TABLE} now dumps the @code{UNION()} for @code{MERGE} tables. @item Fixed bug when replicating timestamps. include/thr_lock.h +1 −0 Original line number Diff line number Diff line Loading @@ -32,6 +32,7 @@ extern ulong locks_immediate,locks_waited ; enum thr_lock_type { TL_IGNORE=-1, TL_UNLOCK, /* UNLOCK ANY LOCK */ TL_READ, /* Read lock */ TL_READ_WITH_SHARED_LOCKS, /* High prior. than TL_WRITE. Allow concurrent insert */ TL_READ_HIGH_PRIORITY, /* READ, Don't allow concurrent insert */ Loading mysql-test/r/update.result +37 −0 Original line number Diff line number Diff line a 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 145 146 place_id shows 1 1 mysql-test/t/update.test +10 −0 Original line number Diff line number Diff line Loading @@ -7,6 +7,16 @@ create table t1 (a int auto_increment , primary key (a)); insert into t1 values (NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL); update t1 set a=a+10 where a > 34; update t1 set a=a+100 where a > 0; # Some strange updates to test some otherwise unused code update t1 set a=a+100 where a=1 and a=2; --error 1054 update t1 set a=b+100 where a=1 and a=2; --error 1054 update t1 set a=b+100 where c=1 and a=2; --error 1054 update t1 set d=a+100 where a=1; select * from t1; drop table t1; CREATE TABLE t1 Loading mysys/getvar.c +11 −3 Original line number Diff line number Diff line Loading @@ -52,11 +52,17 @@ my_bool set_changeable_var(my_string str,CHANGEABLE_VAR *vars) fprintf(stderr,"Can't find '=' in expression '%s' to option -O\n",str); else { uint length=(uint) (end-str),found_count=0; CHANGEABLE_VAR *var,*found; uint length,found_count=0; CHANGEABLE_VAR *var,*found, *var_end; const char *name; long num; /* Skip end space from variable */ for (var_end=end ; end > str && is_space(end[-1]) ; end--) ; length=(uint) (var_end-str); /* Skip start space from argument */ for (end++ ; is_space(*end) ; end++) ; for (var=vars,found=0 ; (name=var->name) ; var++) { if (!my_casecmp(name,str,length)) Loading @@ -80,11 +86,13 @@ my_bool set_changeable_var(my_string str,CHANGEABLE_VAR *vars) DBUG_RETURN(1); } num=(long) atol(end+1); endchar=strend(end+1)[-1]; num=(long) atol(end); endchar=strend(end)[-1]; if (endchar == 'k' || endchar == 'K') num*=1024; else if (endchar == 'm' || endchar == 'M') num*=1024L*1024L; else if (endchar == 'g' || endchar == 'G') num*=1024L*1024L*1024L; else if (!isdigit(endchar)) { fprintf(stderr,"Unknown prefix used for variable value '%s'\n",str); Loading Loading
Docs/manual.texi +3 −0 Original line number Diff line number Diff line Loading @@ -41442,6 +41442,9 @@ not yet 100 % confident in this code. @appendixsubsec Changes in release 3.23.34 @itemize @bullet @item Fixed problem in automatic repair that could let some threads in state @code{Waiting for table}. @item @code{SHOW CREATE TABLE} now dumps the @code{UNION()} for @code{MERGE} tables. @item Fixed bug when replicating timestamps.
include/thr_lock.h +1 −0 Original line number Diff line number Diff line Loading @@ -32,6 +32,7 @@ extern ulong locks_immediate,locks_waited ; enum thr_lock_type { TL_IGNORE=-1, TL_UNLOCK, /* UNLOCK ANY LOCK */ TL_READ, /* Read lock */ TL_READ_WITH_SHARED_LOCKS, /* High prior. than TL_WRITE. Allow concurrent insert */ TL_READ_HIGH_PRIORITY, /* READ, Don't allow concurrent insert */ Loading
mysql-test/r/update.result +37 −0 Original line number Diff line number Diff line a 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 145 146 place_id shows 1 1
mysql-test/t/update.test +10 −0 Original line number Diff line number Diff line Loading @@ -7,6 +7,16 @@ create table t1 (a int auto_increment , primary key (a)); insert into t1 values (NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL); update t1 set a=a+10 where a > 34; update t1 set a=a+100 where a > 0; # Some strange updates to test some otherwise unused code update t1 set a=a+100 where a=1 and a=2; --error 1054 update t1 set a=b+100 where a=1 and a=2; --error 1054 update t1 set a=b+100 where c=1 and a=2; --error 1054 update t1 set d=a+100 where a=1; select * from t1; drop table t1; CREATE TABLE t1 Loading
mysys/getvar.c +11 −3 Original line number Diff line number Diff line Loading @@ -52,11 +52,17 @@ my_bool set_changeable_var(my_string str,CHANGEABLE_VAR *vars) fprintf(stderr,"Can't find '=' in expression '%s' to option -O\n",str); else { uint length=(uint) (end-str),found_count=0; CHANGEABLE_VAR *var,*found; uint length,found_count=0; CHANGEABLE_VAR *var,*found, *var_end; const char *name; long num; /* Skip end space from variable */ for (var_end=end ; end > str && is_space(end[-1]) ; end--) ; length=(uint) (var_end-str); /* Skip start space from argument */ for (end++ ; is_space(*end) ; end++) ; for (var=vars,found=0 ; (name=var->name) ; var++) { if (!my_casecmp(name,str,length)) Loading @@ -80,11 +86,13 @@ my_bool set_changeable_var(my_string str,CHANGEABLE_VAR *vars) DBUG_RETURN(1); } num=(long) atol(end+1); endchar=strend(end+1)[-1]; num=(long) atol(end); endchar=strend(end)[-1]; if (endchar == 'k' || endchar == 'K') num*=1024; else if (endchar == 'm' || endchar == 'M') num*=1024L*1024L; else if (endchar == 'g' || endchar == 'G') num*=1024L*1024L*1024L; else if (!isdigit(endchar)) { fprintf(stderr,"Unknown prefix used for variable value '%s'\n",str); Loading