Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
mariadb
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
mariadb
Commits
a58c0e7d
Commit
a58c0e7d
authored
Aug 21, 2005
by
jonas@eel.(none)
Browse files
Options
Browse Files
Download
Plain Diff
Merge joreland@bk-internal.mysql.com:/home/bk/mysql-4.1
into eel.(none):/home/jonas/src/mysql-4.1-push
parents
3aede000
d9e3ad09
Changes
22
Hide whitespace changes
Inline
Side-by-side
Showing
22 changed files
with
1316 additions
and
43 deletions
+1316
-43
.bzrignore
.bzrignore
+2
-0
heap/hp_delete.c
heap/hp_delete.c
+1
-1
include/my_sys.h
include/my_sys.h
+0
-1
mysql-test/r/ctype_cp932.result
mysql-test/r/ctype_cp932.result
+17
-0
mysql-test/r/distinct.result
mysql-test/r/distinct.result
+40
-0
mysql-test/r/rpl_drop_db.result
mysql-test/r/rpl_drop_db.result
+1035
-0
mysql-test/r/rpl_insert_select.result
mysql-test/r/rpl_insert_select.result
+17
-0
mysql-test/t/ctype_cp932.test
mysql-test/t/ctype_cp932.test
+22
-0
mysql-test/t/distinct.test
mysql-test/t/distinct.test
+17
-0
mysql-test/t/rpl_drop_db.test
mysql-test/t/rpl_drop_db.test
+52
-0
mysql-test/t/rpl_insert_select.test
mysql-test/t/rpl_insert_select.test
+19
-0
mysys/charset.c
mysys/charset.c
+0
-18
sql/item.cc
sql/item.cc
+7
-8
sql/item.h
sql/item.h
+2
-1
sql/log_event.cc
sql/log_event.cc
+1
-1
sql/log_event.h
sql/log_event.h
+1
-1
sql/mysqld.cc
sql/mysqld.cc
+1
-1
sql/sql_db.cc
sql/sql_db.cc
+69
-5
sql/sql_prepare.cc
sql/sql_prepare.cc
+6
-3
sql/sql_select.cc
sql/sql_select.cc
+1
-3
sql/sql_table.cc
sql/sql_table.cc
+3
-0
sql/table.h
sql/table.h
+3
-0
No files found.
.bzrignore
View file @
a58c0e7d
...
...
@@ -1054,3 +1054,5 @@ vio/test-sslclient
vio/test-sslserver
vio/viotest-ssl
ndb/tools/ndb_config
support-files/MacOSX/postflight
support-files/MacOSX/preflight
heap/hp_delete.c
View file @
a58c0e7d
...
...
@@ -80,7 +80,7 @@ int hp_rb_delete_key(HP_INFO *info, register HP_KEYDEF *keyinfo,
custom_arg
.
search_flag
=
SEARCH_SAME
;
old_allocated
=
keyinfo
->
rb_tree
.
allocated
;
res
=
tree_delete
(
&
keyinfo
->
rb_tree
,
info
->
recbuf
,
&
custom_arg
);
info
->
s
->
index_length
+=
(
keyinfo
->
rb_tree
.
allocated
-
old_
allocated
);
info
->
s
->
index_length
-=
(
old_allocated
-
keyinfo
->
rb_tree
.
allocated
);
return
res
;
}
...
...
include/my_sys.h
View file @
a58c0e7d
...
...
@@ -788,7 +788,6 @@ extern my_bool init_compiled_charsets(myf flags);
extern
void
add_compiled_collation
(
CHARSET_INFO
*
cs
);
extern
ulong
escape_string_for_mysql
(
CHARSET_INFO
*
charset_info
,
char
*
to
,
const
char
*
from
,
ulong
length
);
extern
char
*
bare_str_to_hex
(
char
*
to
,
const
char
*
from
,
uint
len
);
#ifdef __WIN__
#define BACKSLASH_MBTAIL
/* File system character set */
...
...
mysql-test/r/ctype_cp932.result
View file @
a58c0e7d
...
...
@@ -8576,6 +8576,23 @@ FC4B
DROP TABLE t1;
DROP TABLE t2;
DROP TABLE t3;
RESET MASTER;
CREATE TABLE t1(f1 blob);
PREPARE stmt1 FROM 'INSERT INTO t1 VALUES(?)';
SET @var1= x'8300';
EXECUTE stmt1 USING @var1;
SHOW BINLOG EVENTS;
Log_name Pos Event_type Server_id Orig_log_pos Info
master-bin.000001 # Start 1 # Server ver: 4.1.15-debug-log, Binlog ver: 3
master-bin.000001 # Query 1 # use `test`; SET ONE_SHOT CHARACTER_SET_CLIENT=95,COLLATION_CONNECTION=95,COLLATION_DATABASE=95,COLLATION_SERVER=8
master-bin.000001 # Query 1 # use `test`; CREATE TABLE t1(f1 blob)
master-bin.000001 # Query 1 # use `test`; SET ONE_SHOT CHARACTER_SET_CLIENT=95,COLLATION_CONNECTION=95,COLLATION_DATABASE=95,COLLATION_SERVER=8
master-bin.000001 # User var 1 # @`var1`=_binary 0x8300 COLLATE binary
master-bin.000001 # Query 1 # use `test`; INSERT INTO t1 VALUES(@'var1')
SELECT HEX(f1) FROM t1;
HEX(f1)
8300
DROP table t1;
SET collation_connection='cp932_japanese_ci';
create table t1 select repeat('a',4000) a;
delete from t1;
...
...
mysql-test/r/distinct.result
View file @
a58c0e7d
...
...
@@ -464,3 +464,43 @@ SELECT DISTINCT html,SUM(out)/(SUM(rin)+1) as 'prod' FROM t1 GROUP BY rin;
html prod
1 0.00
drop table t1;
CREATE TABLE t1 (a int);
INSERT INTO t1 VALUES (1),(2),(3),(4),(5);
SELECT DISTINCT a, 1 FROM t1;
a 1
1 1
2 1
3 1
4 1
5 1
SELECT DISTINCT 1, a FROM t1;
1 a
1 1
1 2
1 3
1 4
1 5
CREATE TABLE t2 (a int, b int);
INSERT INTO t2 VALUES (1,1),(2,2),(2,3),(2,4),(3,5);
SELECT DISTINCT a, b, 2 FROM t2;
a b 2
1 1 2
2 2 2
2 3 2
2 4 2
3 5 2
SELECT DISTINCT 2, a, b FROM t2;
2 a b
2 1 1
2 2 2
2 2 3
2 2 4
2 3 5
SELECT DISTINCT a, 2, b FROM t2;
a 2 b
1 2 1
2 2 2
2 2 3
2 2 4
3 2 5
DROP TABLE t1,t2;
mysql-test/r/rpl_drop_db.result
0 → 100644
View file @
a58c0e7d
stop slave;
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
reset master;
reset slave;
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
start slave;
drop database if exists d1;
create database d1;
create table d1.t1 (n int);
insert into d1.t1 values (1);
select * from d1.t1 into outfile 'd1/f1.txt';
create table d1.t2 (n int);
create table d1.t3 (n int);
drop database d1;
ERROR HY000: Error dropping database (can't rmdir './d1/', errno: 17)
use d1;
show tables;
Tables_in_d1
create table d1.t1000(n int);
create table d1.t999(n int);
create table d1.t998(n int);
create table d1.t997(n int);
create table d1.t996(n int);
create table d1.t995(n int);
create table d1.t994(n int);
create table d1.t993(n int);
create table d1.t992(n int);
create table d1.t991(n int);
create table d1.t990(n int);
create table d1.t989(n int);
create table d1.t988(n int);
create table d1.t987(n int);
create table d1.t986(n int);
create table d1.t985(n int);
create table d1.t984(n int);
create table d1.t983(n int);
create table d1.t982(n int);
create table d1.t981(n int);
create table d1.t980(n int);
create table d1.t979(n int);
create table d1.t978(n int);
create table d1.t977(n int);
create table d1.t976(n int);
create table d1.t975(n int);
create table d1.t974(n int);
create table d1.t973(n int);
create table d1.t972(n int);
create table d1.t971(n int);
create table d1.t970(n int);
create table d1.t969(n int);
create table d1.t968(n int);
create table d1.t967(n int);
create table d1.t966(n int);
create table d1.t965(n int);
create table d1.t964(n int);
create table d1.t963(n int);
create table d1.t962(n int);
create table d1.t961(n int);
create table d1.t960(n int);
create table d1.t959(n int);
create table d1.t958(n int);
create table d1.t957(n int);
create table d1.t956(n int);
create table d1.t955(n int);
create table d1.t954(n int);
create table d1.t953(n int);
create table d1.t952(n int);
create table d1.t951(n int);
create table d1.t950(n int);
create table d1.t949(n int);
create table d1.t948(n int);
create table d1.t947(n int);
create table d1.t946(n int);
create table d1.t945(n int);
create table d1.t944(n int);
create table d1.t943(n int);
create table d1.t942(n int);
create table d1.t941(n int);
create table d1.t940(n int);
create table d1.t939(n int);
create table d1.t938(n int);
create table d1.t937(n int);
create table d1.t936(n int);
create table d1.t935(n int);
create table d1.t934(n int);
create table d1.t933(n int);
create table d1.t932(n int);
create table d1.t931(n int);
create table d1.t930(n int);
create table d1.t929(n int);
create table d1.t928(n int);
create table d1.t927(n int);
create table d1.t926(n int);
create table d1.t925(n int);
create table d1.t924(n int);
create table d1.t923(n int);
create table d1.t922(n int);
create table d1.t921(n int);
create table d1.t920(n int);
create table d1.t919(n int);
create table d1.t918(n int);
create table d1.t917(n int);
create table d1.t916(n int);
create table d1.t915(n int);
create table d1.t914(n int);
create table d1.t913(n int);
create table d1.t912(n int);
create table d1.t911(n int);
create table d1.t910(n int);
create table d1.t909(n int);
create table d1.t908(n int);
create table d1.t907(n int);
create table d1.t906(n int);
create table d1.t905(n int);
create table d1.t904(n int);
create table d1.t903(n int);
create table d1.t902(n int);
create table d1.t901(n int);
create table d1.t900(n int);
create table d1.t899(n int);
create table d1.t898(n int);
create table d1.t897(n int);
create table d1.t896(n int);
create table d1.t895(n int);
create table d1.t894(n int);
create table d1.t893(n int);
create table d1.t892(n int);
create table d1.t891(n int);
create table d1.t890(n int);
create table d1.t889(n int);
create table d1.t888(n int);
create table d1.t887(n int);
create table d1.t886(n int);
create table d1.t885(n int);
create table d1.t884(n int);
create table d1.t883(n int);
create table d1.t882(n int);
create table d1.t881(n int);
create table d1.t880(n int);
create table d1.t879(n int);
create table d1.t878(n int);
create table d1.t877(n int);
create table d1.t876(n int);
create table d1.t875(n int);
create table d1.t874(n int);
create table d1.t873(n int);
create table d1.t872(n int);
create table d1.t871(n int);
create table d1.t870(n int);
create table d1.t869(n int);
create table d1.t868(n int);
create table d1.t867(n int);
create table d1.t866(n int);
create table d1.t865(n int);
create table d1.t864(n int);
create table d1.t863(n int);
create table d1.t862(n int);
create table d1.t861(n int);
create table d1.t860(n int);
create table d1.t859(n int);
create table d1.t858(n int);
create table d1.t857(n int);
create table d1.t856(n int);
create table d1.t855(n int);
create table d1.t854(n int);
create table d1.t853(n int);
create table d1.t852(n int);
create table d1.t851(n int);
create table d1.t850(n int);
create table d1.t849(n int);
create table d1.t848(n int);
create table d1.t847(n int);
create table d1.t846(n int);
create table d1.t845(n int);
create table d1.t844(n int);
create table d1.t843(n int);
create table d1.t842(n int);
create table d1.t841(n int);
create table d1.t840(n int);
create table d1.t839(n int);
create table d1.t838(n int);
create table d1.t837(n int);
create table d1.t836(n int);
create table d1.t835(n int);
create table d1.t834(n int);
create table d1.t833(n int);
create table d1.t832(n int);
create table d1.t831(n int);
create table d1.t830(n int);
create table d1.t829(n int);
create table d1.t828(n int);
create table d1.t827(n int);
create table d1.t826(n int);
create table d1.t825(n int);
create table d1.t824(n int);
create table d1.t823(n int);
create table d1.t822(n int);
create table d1.t821(n int);
create table d1.t820(n int);
create table d1.t819(n int);
create table d1.t818(n int);
create table d1.t817(n int);
create table d1.t816(n int);
create table d1.t815(n int);
create table d1.t814(n int);
create table d1.t813(n int);
create table d1.t812(n int);
create table d1.t811(n int);
create table d1.t810(n int);
create table d1.t809(n int);
create table d1.t808(n int);
create table d1.t807(n int);
create table d1.t806(n int);
create table d1.t805(n int);
create table d1.t804(n int);
create table d1.t803(n int);
create table d1.t802(n int);
create table d1.t801(n int);
create table d1.t800(n int);
create table d1.t799(n int);
create table d1.t798(n int);
create table d1.t797(n int);
create table d1.t796(n int);
create table d1.t795(n int);
create table d1.t794(n int);
create table d1.t793(n int);
create table d1.t792(n int);
create table d1.t791(n int);
create table d1.t790(n int);
create table d1.t789(n int);
create table d1.t788(n int);
create table d1.t787(n int);
create table d1.t786(n int);
create table d1.t785(n int);
create table d1.t784(n int);
create table d1.t783(n int);
create table d1.t782(n int);
create table d1.t781(n int);
create table d1.t780(n int);
create table d1.t779(n int);
create table d1.t778(n int);
create table d1.t777(n int);
create table d1.t776(n int);
create table d1.t775(n int);
create table d1.t774(n int);
create table d1.t773(n int);
create table d1.t772(n int);
create table d1.t771(n int);
create table d1.t770(n int);
create table d1.t769(n int);
create table d1.t768(n int);
create table d1.t767(n int);
create table d1.t766(n int);
create table d1.t765(n int);
create table d1.t764(n int);
create table d1.t763(n int);
create table d1.t762(n int);
create table d1.t761(n int);
create table d1.t760(n int);
create table d1.t759(n int);
create table d1.t758(n int);
create table d1.t757(n int);
create table d1.t756(n int);
create table d1.t755(n int);
create table d1.t754(n int);
create table d1.t753(n int);
create table d1.t752(n int);
create table d1.t751(n int);
create table d1.t750(n int);
create table d1.t749(n int);
create table d1.t748(n int);
create table d1.t747(n int);
create table d1.t746(n int);
create table d1.t745(n int);
create table d1.t744(n int);
create table d1.t743(n int);
create table d1.t742(n int);
create table d1.t741(n int);
create table d1.t740(n int);
create table d1.t739(n int);
create table d1.t738(n int);
create table d1.t737(n int);
create table d1.t736(n int);
create table d1.t735(n int);
create table d1.t734(n int);
create table d1.t733(n int);
create table d1.t732(n int);
create table d1.t731(n int);
create table d1.t730(n int);
create table d1.t729(n int);
create table d1.t728(n int);
create table d1.t727(n int);
create table d1.t726(n int);
create table d1.t725(n int);
create table d1.t724(n int);
create table d1.t723(n int);
create table d1.t722(n int);
create table d1.t721(n int);
create table d1.t720(n int);
create table d1.t719(n int);
create table d1.t718(n int);
create table d1.t717(n int);
create table d1.t716(n int);
create table d1.t715(n int);
create table d1.t714(n int);
create table d1.t713(n int);
create table d1.t712(n int);
create table d1.t711(n int);
create table d1.t710(n int);
create table d1.t709(n int);
create table d1.t708(n int);
create table d1.t707(n int);
create table d1.t706(n int);
create table d1.t705(n int);
create table d1.t704(n int);
create table d1.t703(n int);
create table d1.t702(n int);
create table d1.t701(n int);
create table d1.t700(n int);
create table d1.t699(n int);
create table d1.t698(n int);
create table d1.t697(n int);
create table d1.t696(n int);
create table d1.t695(n int);
create table d1.t694(n int);
create table d1.t693(n int);
create table d1.t692(n int);
create table d1.t691(n int);
create table d1.t690(n int);
create table d1.t689(n int);
create table d1.t688(n int);
create table d1.t687(n int);
create table d1.t686(n int);
create table d1.t685(n int);
create table d1.t684(n int);
create table d1.t683(n int);
create table d1.t682(n int);
create table d1.t681(n int);
create table d1.t680(n int);
create table d1.t679(n int);
create table d1.t678(n int);
create table d1.t677(n int);
create table d1.t676(n int);
create table d1.t675(n int);
create table d1.t674(n int);
create table d1.t673(n int);
create table d1.t672(n int);
create table d1.t671(n int);
create table d1.t670(n int);
create table d1.t669(n int);
create table d1.t668(n int);
create table d1.t667(n int);
create table d1.t666(n int);
create table d1.t665(n int);
create table d1.t664(n int);
create table d1.t663(n int);
create table d1.t662(n int);
create table d1.t661(n int);
create table d1.t660(n int);
create table d1.t659(n int);
create table d1.t658(n int);
create table d1.t657(n int);
create table d1.t656(n int);
create table d1.t655(n int);
create table d1.t654(n int);
create table d1.t653(n int);
create table d1.t652(n int);
create table d1.t651(n int);
create table d1.t650(n int);
create table d1.t649(n int);
create table d1.t648(n int);
create table d1.t647(n int);
create table d1.t646(n int);
create table d1.t645(n int);
create table d1.t644(n int);
create table d1.t643(n int);
create table d1.t642(n int);
create table d1.t641(n int);
create table d1.t640(n int);
create table d1.t639(n int);
create table d1.t638(n int);
create table d1.t637(n int);
create table d1.t636(n int);
create table d1.t635(n int);
create table d1.t634(n int);
create table d1.t633(n int);
create table d1.t632(n int);
create table d1.t631(n int);
create table d1.t630(n int);
create table d1.t629(n int);
create table d1.t628(n int);
create table d1.t627(n int);
create table d1.t626(n int);
create table d1.t625(n int);
create table d1.t624(n int);
create table d1.t623(n int);
create table d1.t622(n int);
create table d1.t621(n int);
create table d1.t620(n int);
create table d1.t619(n int);
create table d1.t618(n int);
create table d1.t617(n int);
create table d1.t616(n int);
create table d1.t615(n int);
create table d1.t614(n int);
create table d1.t613(n int);
create table d1.t612(n int);
create table d1.t611(n int);
create table d1.t610(n int);
create table d1.t609(n int);
create table d1.t608(n int);
create table d1.t607(n int);
create table d1.t606(n int);
create table d1.t605(n int);
create table d1.t604(n int);
create table d1.t603(n int);
create table d1.t602(n int);
create table d1.t601(n int);
create table d1.t600(n int);
create table d1.t599(n int);
create table d1.t598(n int);
create table d1.t597(n int);
create table d1.t596(n int);
create table d1.t595(n int);
create table d1.t594(n int);
create table d1.t593(n int);
create table d1.t592(n int);
create table d1.t591(n int);
create table d1.t590(n int);
create table d1.t589(n int);
create table d1.t588(n int);
create table d1.t587(n int);
create table d1.t586(n int);
create table d1.t585(n int);
create table d1.t584(n int);
create table d1.t583(n int);
create table d1.t582(n int);
create table d1.t581(n int);
create table d1.t580(n int);
create table d1.t579(n int);
create table d1.t578(n int);
create table d1.t577(n int);
create table d1.t576(n int);
create table d1.t575(n int);
create table d1.t574(n int);
create table d1.t573(n int);
create table d1.t572(n int);
create table d1.t571(n int);
create table d1.t570(n int);
create table d1.t569(n int);
create table d1.t568(n int);
create table d1.t567(n int);
create table d1.t566(n int);
create table d1.t565(n int);
create table d1.t564(n int);
create table d1.t563(n int);
create table d1.t562(n int);
create table d1.t561(n int);
create table d1.t560(n int);
create table d1.t559(n int);
create table d1.t558(n int);
create table d1.t557(n int);
create table d1.t556(n int);
create table d1.t555(n int);
create table d1.t554(n int);
create table d1.t553(n int);
create table d1.t552(n int);
create table d1.t551(n int);
create table d1.t550(n int);
create table d1.t549(n int);
create table d1.t548(n int);
create table d1.t547(n int);
create table d1.t546(n int);
create table d1.t545(n int);
create table d1.t544(n int);
create table d1.t543(n int);
create table d1.t542(n int);
create table d1.t541(n int);
create table d1.t540(n int);
create table d1.t539(n int);
create table d1.t538(n int);
create table d1.t537(n int);
create table d1.t536(n int);
create table d1.t535(n int);
create table d1.t534(n int);
create table d1.t533(n int);
create table d1.t532(n int);
create table d1.t531(n int);
create table d1.t530(n int);
create table d1.t529(n int);
create table d1.t528(n int);
create table d1.t527(n int);
create table d1.t526(n int);
create table d1.t525(n int);
create table d1.t524(n int);
create table d1.t523(n int);
create table d1.t522(n int);
create table d1.t521(n int);
create table d1.t520(n int);
create table d1.t519(n int);
create table d1.t518(n int);
create table d1.t517(n int);
create table d1.t516(n int);
create table d1.t515(n int);
create table d1.t514(n int);
create table d1.t513(n int);
create table d1.t512(n int);
create table d1.t511(n int);
create table d1.t510(n int);
create table d1.t509(n int);
create table d1.t508(n int);
create table d1.t507(n int);
create table d1.t506(n int);
create table d1.t505(n int);
create table d1.t504(n int);
create table d1.t503(n int);
create table d1.t502(n int);
create table d1.t501(n int);
create table d1.t500(n int);
create table d1.t499(n int);
create table d1.t498(n int);
create table d1.t497(n int);
create table d1.t496(n int);
create table d1.t495(n int);
create table d1.t494(n int);
create table d1.t493(n int);
create table d1.t492(n int);
create table d1.t491(n int);
create table d1.t490(n int);
create table d1.t489(n int);
create table d1.t488(n int);
create table d1.t487(n int);
create table d1.t486(n int);
create table d1.t485(n int);
create table d1.t484(n int);
create table d1.t483(n int);
create table d1.t482(n int);
create table d1.t481(n int);
create table d1.t480(n int);
create table d1.t479(n int);
create table d1.t478(n int);
create table d1.t477(n int);
create table d1.t476(n int);
create table d1.t475(n int);
create table d1.t474(n int);
create table d1.t473(n int);
create table d1.t472(n int);
create table d1.t471(n int);
create table d1.t470(n int);
create table d1.t469(n int);
create table d1.t468(n int);
create table d1.t467(n int);
create table d1.t466(n int);
create table d1.t465(n int);
create table d1.t464(n int);
create table d1.t463(n int);
create table d1.t462(n int);
create table d1.t461(n int);
create table d1.t460(n int);
create table d1.t459(n int);
create table d1.t458(n int);
create table d1.t457(n int);
create table d1.t456(n int);
create table d1.t455(n int);
create table d1.t454(n int);
create table d1.t453(n int);
create table d1.t452(n int);
create table d1.t451(n int);
create table d1.t450(n int);
create table d1.t449(n int);
create table d1.t448(n int);
create table d1.t447(n int);
create table d1.t446(n int);
create table d1.t445(n int);
create table d1.t444(n int);
create table d1.t443(n int);
create table d1.t442(n int);
create table d1.t441(n int);
create table d1.t440(n int);
create table d1.t439(n int);
create table d1.t438(n int);
create table d1.t437(n int);
create table d1.t436(n int);
create table d1.t435(n int);
create table d1.t434(n int);
create table d1.t433(n int);
create table d1.t432(n int);
create table d1.t431(n int);
create table d1.t430(n int);
create table d1.t429(n int);
create table d1.t428(n int);
create table d1.t427(n int);
create table d1.t426(n int);
create table d1.t425(n int);
create table d1.t424(n int);
create table d1.t423(n int);
create table d1.t422(n int);
create table d1.t421(n int);
create table d1.t420(n int);
create table d1.t419(n int);
create table d1.t418(n int);
create table d1.t417(n int);
create table d1.t416(n int);
create table d1.t415(n int);
create table d1.t414(n int);
create table d1.t413(n int);
create table d1.t412(n int);
create table d1.t411(n int);
create table d1.t410(n int);
create table d1.t409(n int);
create table d1.t408(n int);
create table d1.t407(n int);
create table d1.t406(n int);
create table d1.t405(n int);
create table d1.t404(n int);
create table d1.t403(n int);
create table d1.t402(n int);
create table d1.t401(n int);
create table d1.t400(n int);
create table d1.t399(n int);
create table d1.t398(n int);
create table d1.t397(n int);
create table d1.t396(n int);
create table d1.t395(n int);
create table d1.t394(n int);
create table d1.t393(n int);
create table d1.t392(n int);
create table d1.t391(n int);
create table d1.t390(n int);
create table d1.t389(n int);
create table d1.t388(n int);
create table d1.t387(n int);
create table d1.t386(n int);
create table d1.t385(n int);
create table d1.t384(n int);
create table d1.t383(n int);
create table d1.t382(n int);
create table d1.t381(n int);
create table d1.t380(n int);
create table d1.t379(n int);
create table d1.t378(n int);
create table d1.t377(n int);
create table d1.t376(n int);
create table d1.t375(n int);
create table d1.t374(n int);
create table d1.t373(n int);
create table d1.t372(n int);
create table d1.t371(n int);
create table d1.t370(n int);
create table d1.t369(n int);
create table d1.t368(n int);
create table d1.t367(n int);
create table d1.t366(n int);
create table d1.t365(n int);
create table d1.t364(n int);
create table d1.t363(n int);
create table d1.t362(n int);
create table d1.t361(n int);
create table d1.t360(n int);
create table d1.t359(n int);
create table d1.t358(n int);
create table d1.t357(n int);
create table d1.t356(n int);
create table d1.t355(n int);
create table d1.t354(n int);
create table d1.t353(n int);
create table d1.t352(n int);
create table d1.t351(n int);
create table d1.t350(n int);
create table d1.t349(n int);
create table d1.t348(n int);
create table d1.t347(n int);
create table d1.t346(n int);
create table d1.t345(n int);
create table d1.t344(n int);
create table d1.t343(n int);
create table d1.t342(n int);
create table d1.t341(n int);
create table d1.t340(n int);
create table d1.t339(n int);
create table d1.t338(n int);
create table d1.t337(n int);
create table d1.t336(n int);
create table d1.t335(n int);
create table d1.t334(n int);
create table d1.t333(n int);
create table d1.t332(n int);
create table d1.t331(n int);
create table d1.t330(n int);
create table d1.t329(n int);
create table d1.t328(n int);
create table d1.t327(n int);
create table d1.t326(n int);
create table d1.t325(n int);
create table d1.t324(n int);
create table d1.t323(n int);
create table d1.t322(n int);
create table d1.t321(n int);
create table d1.t320(n int);
create table d1.t319(n int);
create table d1.t318(n int);
create table d1.t317(n int);
create table d1.t316(n int);
create table d1.t315(n int);
create table d1.t314(n int);
create table d1.t313(n int);
create table d1.t312(n int);
create table d1.t311(n int);
create table d1.t310(n int);
create table d1.t309(n int);
create table d1.t308(n int);
create table d1.t307(n int);
create table d1.t306(n int);
create table d1.t305(n int);
create table d1.t304(n int);
create table d1.t303(n int);
create table d1.t302(n int);
create table d1.t301(n int);
create table d1.t300(n int);
create table d1.t299(n int);
create table d1.t298(n int);
create table d1.t297(n int);
create table d1.t296(n int);
create table d1.t295(n int);
create table d1.t294(n int);
create table d1.t293(n int);
create table d1.t292(n int);
create table d1.t291(n int);
create table d1.t290(n int);
create table d1.t289(n int);
create table d1.t288(n int);
create table d1.t287(n int);
create table d1.t286(n int);
create table d1.t285(n int);
create table d1.t284(n int);
create table d1.t283(n int);
create table d1.t282(n int);
create table d1.t281(n int);
create table d1.t280(n int);
create table d1.t279(n int);
create table d1.t278(n int);
create table d1.t277(n int);
create table d1.t276(n int);
create table d1.t275(n int);
create table d1.t274(n int);
create table d1.t273(n int);
create table d1.t272(n int);
create table d1.t271(n int);
create table d1.t270(n int);
create table d1.t269(n int);
create table d1.t268(n int);
create table d1.t267(n int);
create table d1.t266(n int);
create table d1.t265(n int);
create table d1.t264(n int);
create table d1.t263(n int);
create table d1.t262(n int);
create table d1.t261(n int);
create table d1.t260(n int);
create table d1.t259(n int);
create table d1.t258(n int);
create table d1.t257(n int);
create table d1.t256(n int);
create table d1.t255(n int);
create table d1.t254(n int);
create table d1.t253(n int);
create table d1.t252(n int);
create table d1.t251(n int);
create table d1.t250(n int);
create table d1.t249(n int);
create table d1.t248(n int);
create table d1.t247(n int);
create table d1.t246(n int);
create table d1.t245(n int);
create table d1.t244(n int);
create table d1.t243(n int);
create table d1.t242(n int);
create table d1.t241(n int);
create table d1.t240(n int);
create table d1.t239(n int);
create table d1.t238(n int);
create table d1.t237(n int);
create table d1.t236(n int);
create table d1.t235(n int);
create table d1.t234(n int);
create table d1.t233(n int);
create table d1.t232(n int);
create table d1.t231(n int);
create table d1.t230(n int);
create table d1.t229(n int);
create table d1.t228(n int);
create table d1.t227(n int);
create table d1.t226(n int);
create table d1.t225(n int);
create table d1.t224(n int);
create table d1.t223(n int);
create table d1.t222(n int);
create table d1.t221(n int);
create table d1.t220(n int);
create table d1.t219(n int);
create table d1.t218(n int);
create table d1.t217(n int);
create table d1.t216(n int);
create table d1.t215(n int);
create table d1.t214(n int);
create table d1.t213(n int);
create table d1.t212(n int);
create table d1.t211(n int);
create table d1.t210(n int);
create table d1.t209(n int);
create table d1.t208(n int);
create table d1.t207(n int);
create table d1.t206(n int);
create table d1.t205(n int);
create table d1.t204(n int);
create table d1.t203(n int);
create table d1.t202(n int);
create table d1.t201(n int);
create table d1.t200(n int);
create table d1.t199(n int);
create table d1.t198(n int);
create table d1.t197(n int);
create table d1.t196(n int);
create table d1.t195(n int);
create table d1.t194(n int);
create table d1.t193(n int);
create table d1.t192(n int);
create table d1.t191(n int);
create table d1.t190(n int);
create table d1.t189(n int);
create table d1.t188(n int);
create table d1.t187(n int);
create table d1.t186(n int);
create table d1.t185(n int);
create table d1.t184(n int);
create table d1.t183(n int);
create table d1.t182(n int);
create table d1.t181(n int);
create table d1.t180(n int);
create table d1.t179(n int);
create table d1.t178(n int);
create table d1.t177(n int);
create table d1.t176(n int);
create table d1.t175(n int);
create table d1.t174(n int);
create table d1.t173(n int);
create table d1.t172(n int);
create table d1.t171(n int);
create table d1.t170(n int);
create table d1.t169(n int);
create table d1.t168(n int);
create table d1.t167(n int);
create table d1.t166(n int);
create table d1.t165(n int);
create table d1.t164(n int);
create table d1.t163(n int);
create table d1.t162(n int);
create table d1.t161(n int);
create table d1.t160(n int);
create table d1.t159(n int);
create table d1.t158(n int);
create table d1.t157(n int);
create table d1.t156(n int);
create table d1.t155(n int);
create table d1.t154(n int);
create table d1.t153(n int);
create table d1.t152(n int);
create table d1.t151(n int);
create table d1.t150(n int);
create table d1.t149(n int);
create table d1.t148(n int);
create table d1.t147(n int);
create table d1.t146(n int);
create table d1.t145(n int);
create table d1.t144(n int);
create table d1.t143(n int);
create table d1.t142(n int);
create table d1.t141(n int);
create table d1.t140(n int);
create table d1.t139(n int);
create table d1.t138(n int);
create table d1.t137(n int);
create table d1.t136(n int);
create table d1.t135(n int);
create table d1.t134(n int);
create table d1.t133(n int);
create table d1.t132(n int);
create table d1.t131(n int);
create table d1.t130(n int);
create table d1.t129(n int);
create table d1.t128(n int);
create table d1.t127(n int);
create table d1.t126(n int);
create table d1.t125(n int);
create table d1.t124(n int);
create table d1.t123(n int);
create table d1.t122(n int);
create table d1.t121(n int);
create table d1.t120(n int);
create table d1.t119(n int);
create table d1.t118(n int);
create table d1.t117(n int);
create table d1.t116(n int);
create table d1.t115(n int);
create table d1.t114(n int);
create table d1.t113(n int);
create table d1.t112(n int);
create table d1.t111(n int);
create table d1.t110(n int);
create table d1.t109(n int);
create table d1.t108(n int);
create table d1.t107(n int);
create table d1.t106(n int);
create table d1.t105(n int);
create table d1.t104(n int);
create table d1.t103(n int);
create table d1.t102(n int);
create table d1.t101(n int);
create table d1.t100(n int);
create table d1.t99(n int);
create table d1.t98(n int);
create table d1.t97(n int);
create table d1.t96(n int);
create table d1.t95(n int);
create table d1.t94(n int);
create table d1.t93(n int);
create table d1.t92(n int);
create table d1.t91(n int);
create table d1.t90(n int);
create table d1.t89(n int);
create table d1.t88(n int);
create table d1.t87(n int);
create table d1.t86(n int);
create table d1.t85(n int);
create table d1.t84(n int);
create table d1.t83(n int);
create table d1.t82(n int);
create table d1.t81(n int);
create table d1.t80(n int);
create table d1.t79(n int);
create table d1.t78(n int);
create table d1.t77(n int);
create table d1.t76(n int);
create table d1.t75(n int);
create table d1.t74(n int);
create table d1.t73(n int);
create table d1.t72(n int);
create table d1.t71(n int);
create table d1.t70(n int);
create table d1.t69(n int);
create table d1.t68(n int);
create table d1.t67(n int);
create table d1.t66(n int);
create table d1.t65(n int);
create table d1.t64(n int);
create table d1.t63(n int);
create table d1.t62(n int);
create table d1.t61(n int);
create table d1.t60(n int);
create table d1.t59(n int);
create table d1.t58(n int);
create table d1.t57(n int);
create table d1.t56(n int);
create table d1.t55(n int);
create table d1.t54(n int);
create table d1.t53(n int);
create table d1.t52(n int);
create table d1.t51(n int);
create table d1.t50(n int);
create table d1.t49(n int);
create table d1.t48(n int);
create table d1.t47(n int);
create table d1.t46(n int);
create table d1.t45(n int);
create table d1.t44(n int);
create table d1.t43(n int);
create table d1.t42(n int);
create table d1.t41(n int);
create table d1.t40(n int);
create table d1.t39(n int);
create table d1.t38(n int);
create table d1.t37(n int);
create table d1.t36(n int);
create table d1.t35(n int);
create table d1.t34(n int);
create table d1.t33(n int);
create table d1.t32(n int);
create table d1.t31(n int);
create table d1.t30(n int);
create table d1.t29(n int);
create table d1.t28(n int);
create table d1.t27(n int);
create table d1.t26(n int);
create table d1.t25(n int);
create table d1.t24(n int);
create table d1.t23(n int);
create table d1.t22(n int);
create table d1.t21(n int);
create table d1.t20(n int);
create table d1.t19(n int);
create table d1.t18(n int);
create table d1.t17(n int);
create table d1.t16(n int);
create table d1.t15(n int);
create table d1.t14(n int);
create table d1.t13(n int);
create table d1.t12(n int);
create table d1.t11(n int);
create table d1.t10(n int);
create table d1.t9(n int);
create table d1.t8(n int);
create table d1.t7(n int);
create table d1.t6(n int);
create table d1.t5(n int);
create table d1.t4(n int);
create table d1.t3(n int);
create table d1.t2(n int);
create table d1.t1(n int);
drop database d1;
ERROR HY000: Error dropping database (can't rmdir './d1/', errno: 17)
use d1;
show tables;
Tables_in_d1
use test;
create table t1 (n int);
insert into t1 values (1234);
use d1;
show tables;
Tables_in_d1
use test;
select * from t1;
n
1234
drop table t1;
stop slave;
mysql-test/r/rpl_insert_select.result
0 → 100644
View file @
a58c0e7d
stop slave;
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
reset master;
reset slave;
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
start slave;
create table t1 (n int not null primary key);
insert into t1 values (1);
create table t2 (n int);
insert into t2 values (1);
insert ignore into t1 select * from t2;
insert into t1 values (2);
select * from t1;
n
1
2
drop table t1,t2;
mysql-test/t/ctype_cp932.test
View file @
a58c0e7d
...
...
@@ -401,6 +401,28 @@ DROP TABLE t2;
DROP
TABLE
t3
;
#DROP TABLE t4;
# Test prepared statement with 0x8300 sequence in parameter while
# running with cp932 client character set.
RESET
MASTER
;
CREATE
TABLE
t1
(
f1
blob
);
PREPARE
stmt1
FROM
'INSERT INTO t1 VALUES(?)'
;
SET
@
var1
=
x
'8300'
;
# TODO: Note that this doesn't actually test the code which was added for
# bug#11338 because this syntax for prepared statements causes the PS to
# be replicated differently than if we executed the PS from C or Java.
# Using this syntax, variable names are inserted into the binlog instead
# of values. The real goal of this test is to check the code that was
# added to Item_param::query_val_str() in order to do hex encoding of
# PS parameters when the client character set is cp932;
# Bug#11338 has an example java program which can be used to verify this
# code (and I have used it to test the fix) until there is some way to
# exercise this code from mysql-test-run.
EXECUTE
stmt1
USING
@
var1
;
--
replace_column
2
# 5 #
SHOW
BINLOG
EVENTS
;
SELECT
HEX
(
f1
)
FROM
t1
;
DROP
table
t1
;
# end test for bug#11338
SET
collation_connection
=
'cp932_japanese_ci'
;
--
source
include
/
ctype_filesort
.
inc
...
...
mysql-test/t/distinct.test
View file @
a58c0e7d
...
...
@@ -333,4 +333,21 @@ INSERT INTO t1 VALUES ('1',1,0);
SELECT
DISTINCT
html
,
SUM
(
out
)
/
(
SUM
(
rin
)
+
1
)
as
'prod'
FROM
t1
GROUP
BY
rin
;
drop
table
t1
;
#
# Test cases for #12625: DISTINCT for a list with constants
#
CREATE
TABLE
t1
(
a
int
);
INSERT
INTO
t1
VALUES
(
1
),(
2
),(
3
),(
4
),(
5
);
SELECT
DISTINCT
a
,
1
FROM
t1
;
SELECT
DISTINCT
1
,
a
FROM
t1
;
CREATE
TABLE
t2
(
a
int
,
b
int
);
INSERT
INTO
t2
VALUES
(
1
,
1
),(
2
,
2
),(
2
,
3
),(
2
,
4
),(
3
,
5
);
SELECT
DISTINCT
a
,
b
,
2
FROM
t2
;
SELECT
DISTINCT
2
,
a
,
b
FROM
t2
;
SELECT
DISTINCT
a
,
2
,
b
FROM
t2
;
DROP
TABLE
t1
,
t2
;
# End of 4.1 tests
mysql-test/t/rpl_drop_db.test
0 → 100644
View file @
a58c0e7d
# test case for BUG#4680 -- if there are extra files in the db directory
# dropping the db on the master causes replication problems
--
source
include
/
master
-
slave
.
inc
connection
master
;
--
disable_warnings
drop
database
if
exists
d1
;
--
enable_warnings
create
database
d1
;
create
table
d1
.
t1
(
n
int
);
insert
into
d1
.
t1
values
(
1
);
select
*
from
d1
.
t1
into
outfile
'd1/f1.txt'
;
create
table
d1
.
t2
(
n
int
);
create
table
d1
.
t3
(
n
int
);
--
error
1010
drop
database
d1
;
use
d1
;
show
tables
;
# test the branch of the code that deals with the query buffer overflow
let
$
1
=
1000
;
while
(
$
1
)
{
eval
create
table
d1
.
t
$
1
(
n
int
);
dec
$
1
;
}
--
error
1010
drop
database
d1
;
use
d1
;
show
tables
;
use
test
;
create
table
t1
(
n
int
);
insert
into
t1
values
(
1234
);
sync_slave_with_master
;
connection
slave
;
use
d1
;
show
tables
;
use
test
;
select
*
from
t1
;
connection
master
;
drop
table
t1
;
sync_slave_with_master
;
#cleanup
connection
slave
;
stop
slave
;
system
rm
-
rf
var
/
master
-
data
/
d1
;
mysql-test/t/rpl_insert_select.test
0 → 100644
View file @
a58c0e7d
# Testcase for BUG#10456 - INSERT INTO ... SELECT violating a primary key
# breaks replication
--
source
include
/
master
-
slave
.
inc
connection
master
;
create
table
t1
(
n
int
not
null
primary
key
);
insert
into
t1
values
(
1
);
create
table
t2
(
n
int
);
insert
into
t2
values
(
1
);
insert
ignore
into
t1
select
*
from
t2
;
insert
into
t1
values
(
2
);
sync_slave_with_master
;
connection
slave
;
select
*
from
t1
;
connection
master
;
drop
table
t1
,
t2
;
sync_slave_with_master
;
mysys/charset.c
View file @
a58c0e7d
...
...
@@ -663,21 +663,3 @@ CHARSET_INFO *fs_character_set()
return
fs_cset_cache
;
}
#endif
/*
Transforms a string into hex form.
*/
char
*
bare_str_to_hex
(
char
*
to
,
const
char
*
from
,
uint
len
)
{
char
*
p
=
to
;
uint
i
;
for
(
i
=
0
;
i
<
len
;
i
++
,
p
+=
2
)
{
/* val[i] is char. Casting to uchar helps greatly if val[i] < 0 */
uint
tmp
=
(
uint
)
(
uchar
)
from
[
i
];
p
[
0
]
=
_dig_vec_upper
[
tmp
>>
4
];
p
[
1
]
=
_dig_vec_upper
[
tmp
&
15
];
}
*
p
=
0
;
return
p
;
// pointer to end 0 of 'to'
}
sql/item.cc
View file @
a58c0e7d
...
...
@@ -1230,7 +1230,7 @@ bool Item_param::set_from_user_var(THD *thd, const user_var_entry *entry)
CHARSET_INFO
*
tocs
=
thd
->
variables
.
collation_connection
;
uint32
dummy_offset
;
value
.
cs_info
.
character_set_
client
=
fromcs
;
value
.
cs_info
.
character_set_
of_placeholder
=
fromcs
;
/*
Setup source and destination character sets so that they
are different only if conversion is necessary: this will
...
...
@@ -1443,7 +1443,7 @@ String *Item_param::val_str(String* str)
and avoid one more memcpy/alloc between str and log string.
*/
const
String
*
Item_param
::
query_val_str
(
String
*
str
,
THD
*
thd
)
const
const
String
*
Item_param
::
query_val_str
(
String
*
str
)
const
{
switch
(
state
)
{
case
INT_VALUE
:
...
...
@@ -1482,18 +1482,17 @@ const String *Item_param::query_val_str(String* str, THD *thd) const
buf
=
str
->
c_ptr_quick
();
ptr
=
buf
;
if
(
thd
->
charset
()
->
escape_with_backslash_is_dangerous
)
if
(
value
.
cs_info
.
character_set_client
->
escape_with_backslash_is_dangerous
)
{
ptr
=
strmov
(
ptr
,
"x
\'
"
);
ptr
=
bare_str_to_hex
(
ptr
,
str_value
.
ptr
(),
str_value
.
length
());
ptr
=
str_to_hex
(
ptr
,
str_value
.
ptr
(),
str_value
.
length
());
}
else
{
*
ptr
++=
'\''
;
ptr
+=
escape_string_for_mysql
(
str_value
.
charset
(),
ptr
,
str_value
.
ptr
(),
str_value
.
length
());
*
ptr
++=
'\''
;
}
*
ptr
++=
'\''
;
str
->
length
(
ptr
-
buf
);
break
;
}
...
...
@@ -1523,10 +1522,10 @@ bool Item_param::convert_str_value(THD *thd)
here only if conversion is really necessary.
*/
if
(
value
.
cs_info
.
final_character_set_of_str_value
!=
value
.
cs_info
.
character_set_
client
)
value
.
cs_info
.
character_set_
of_placeholder
)
{
rc
=
thd
->
convert_string
(
&
str_value
,
value
.
cs_info
.
character_set_
client
,
value
.
cs_info
.
character_set_
of_placeholder
,
value
.
cs_info
.
final_character_set_of_str_value
);
}
else
...
...
sql/item.h
View file @
a58c0e7d
...
...
@@ -532,6 +532,7 @@ public:
struct
CONVERSION_INFO
{
CHARSET_INFO
*
character_set_client
;
CHARSET_INFO
*
character_set_of_placeholder
;
/*
This points at character set of connection if conversion
to it is required (i. e. if placeholder typecode is not BLOB).
...
...
@@ -591,7 +592,7 @@ public:
*/
void
(
*
set_param_func
)(
Item_param
*
param
,
uchar
**
pos
,
ulong
len
);
const
String
*
query_val_str
(
String
*
str
,
THD
*
thd
)
const
;
const
String
*
query_val_str
(
String
*
str
)
const
;
bool
convert_str_value
(
THD
*
thd
);
...
...
sql/log_event.cc
View file @
a58c0e7d
...
...
@@ -207,7 +207,7 @@ static inline int read_str(char * &buf, char *buf_end, char * &str,
/*
Transforms a string into "" or its expression in 0x... form.
*/
static
char
*
str_to_hex
(
char
*
to
,
char
*
from
,
uint
len
)
char
*
str_to_hex
(
char
*
to
,
const
char
*
from
,
uint
len
)
{
char
*
p
=
to
;
if
(
len
)
...
...
sql/log_event.h
View file @
a58c0e7d
...
...
@@ -1069,5 +1069,5 @@ public:
bool
is_valid
()
{
return
1
;
}
};
#endif
char
*
str_to_hex
(
char
*
to
,
const
char
*
from
,
uint
len
);
#endif
/* _log_event_h */
sql/mysqld.cc
View file @
a58c0e7d
...
...
@@ -4328,7 +4328,7 @@ Disable with --skip-bdb (will save memory).",
(
gptr
*
)
&
default_collation_name
,
(
gptr
*
)
&
default_collation_name
,
0
,
GET_STR
,
REQUIRED_ARG
,
0
,
0
,
0
,
0
,
0
,
0
},
{
"default-storage-engine"
,
OPT_STORAGE_ENGINE
,
"Set the default storage engine (table ty
o
e) for tables."
,
0
,
0
,
"Set the default storage engine (table ty
p
e) for tables."
,
0
,
0
,
0
,
GET_STR
,
REQUIRED_ARG
,
0
,
0
,
0
,
0
,
0
,
0
},
{
"default-table-type"
,
OPT_STORAGE_ENGINE
,
"(deprecated) Use --default-storage-engine."
,
0
,
0
,
...
...
sql/sql_db.cc
View file @
a58c0e7d
...
...
@@ -25,14 +25,20 @@
#include <direct.h>
#endif
#define MAX_DROP_TABLE_Q_LEN 1024
const
char
*
del_exts
[]
=
{
".frm"
,
".BAK"
,
".TMD"
,
".opt"
,
NullS
};
static
TYPELIB
deletable_extentions
=
{
array_elements
(
del_exts
)
-
1
,
"del_exts"
,
del_exts
,
NULL
};
static
long
mysql_rm_known_files
(
THD
*
thd
,
MY_DIR
*
dirp
,
const
char
*
db
,
const
char
*
path
,
uint
level
);
const
char
*
db
,
const
char
*
path
,
uint
level
,
TABLE_LIST
**
dropped_tables
);
static
inline
void
write_to_binlog
(
THD
*
thd
,
char
*
query
,
uint
q_len
,
char
*
db
,
uint
db_len
);
/* Database options hash */
static
HASH
dboptions
;
static
my_bool
dboptions_init
=
0
;
...
...
@@ -57,6 +63,19 @@ static byte* dboptions_get_key(my_dbopt_t *opt, uint *length,
return
(
byte
*
)
opt
->
name
;
}
/*
Helper function to write a query to binlog used by mysql_rm_db()
*/
static
inline
void
write_to_binlog
(
THD
*
thd
,
char
*
query
,
uint
q_len
,
char
*
db
,
uint
db_len
)
{
Query_log_event
qinfo
(
thd
,
query
,
q_len
,
0
,
0
);
qinfo
.
error_code
=
0
;
qinfo
.
db
=
db
;
qinfo
.
db_len
=
db_len
;
mysql_bin_log
.
write
(
&
qinfo
);
}
/*
Function to free dboptions hash element
...
...
@@ -585,6 +604,7 @@ int mysql_rm_db(THD *thd,char *db,bool if_exists, bool silent)
char
path
[
FN_REFLEN
+
16
],
tmp_db
[
NAME_LEN
+
1
];
MY_DIR
*
dirp
;
uint
length
;
TABLE_LIST
*
dropped_tables
=
0
;
DBUG_ENTER
(
"mysql_rm_db"
);
VOID
(
pthread_mutex_lock
(
&
LOCK_mysql_create_db
));
...
...
@@ -621,8 +641,10 @@ int mysql_rm_db(THD *thd,char *db,bool if_exists, bool silent)
remove_db_from_cache
(
db
);
pthread_mutex_unlock
(
&
LOCK_open
);
error
=
-
1
;
if
((
deleted
=
mysql_rm_known_files
(
thd
,
dirp
,
db
,
path
,
0
))
>=
0
)
if
((
deleted
=
mysql_rm_known_files
(
thd
,
dirp
,
db
,
path
,
0
,
&
dropped_tables
))
>=
0
)
{
ha_drop_database
(
path
);
query_cache_invalidate1
(
db
);
...
...
@@ -672,6 +694,45 @@ int mysql_rm_db(THD *thd,char *db,bool if_exists, bool silent)
send_ok
(
thd
,
(
ulong
)
deleted
);
thd
->
server_status
&=
~
SERVER_STATUS_DB_DROPPED
;
}
else
if
(
mysql_bin_log
.
is_open
())
{
char
*
query
=
thd
->
alloc
(
MAX_DROP_TABLE_Q_LEN
);
if
(
!
query
)
goto
exit
;
/* not much else we can do */
char
*
p
=
strmov
(
query
,
"drop table "
);
char
*
p_end
=
query
+
MAX_DROP_TABLE_Q_LEN
;
TABLE_LIST
*
tbl
;
bool
last_query_needs_write
=
0
;
uint
db_len
=
strlen
(
db
);
for
(
tbl
=
dropped_tables
;
tbl
;
tbl
=
tbl
->
next
)
{
if
(
!
tbl
->
was_dropped
)
continue
;
/* 3 for the quotes and the comma*/
uint
tbl_name_len
=
strlen
(
tbl
->
real_name
)
+
3
;
if
(
p
+
tbl_name_len
+
1
>=
p_end
)
{
*--
p
=
0
;
/* kill , */
write_to_binlog
(
thd
,
query
,
p
-
query
,
db
,
db_len
);
p
=
query
+
11
;
/* reuse the initial "drop table" */
}
*
p
++
=
'`'
;
p
=
strmov
(
p
,
tbl
->
real_name
);
*
p
++
=
'`'
;
*
p
++
=
','
;
last_query_needs_write
=
1
;
}
if
(
last_query_needs_write
)
{
*--
p
=
0
;
write_to_binlog
(
thd
,
query
,
p
-
query
,
db
,
db_len
);
}
}
exit:
start_waiting_global_read_lock
(
thd
);
...
...
@@ -716,7 +777,7 @@ exit2:
*/
static
long
mysql_rm_known_files
(
THD
*
thd
,
MY_DIR
*
dirp
,
const
char
*
db
,
const
char
*
org_path
,
uint
level
)
const
char
*
org_path
,
uint
level
,
TABLE_LIST
**
dropped_tables
)
{
long
deleted
=
0
;
ulong
found_other_files
=
0
;
...
...
@@ -758,7 +819,7 @@ static long mysql_rm_known_files(THD *thd, MY_DIR *dirp, const char *db,
if
((
new_dirp
=
my_dir
(
newpath
,
MYF
(
MY_DONT_SORT
))))
{
DBUG_PRINT
(
"my"
,(
"New subdir found: %s"
,
newpath
));
if
((
mysql_rm_known_files
(
thd
,
new_dirp
,
NullS
,
newpath
,
1
))
<
0
)
if
((
mysql_rm_known_files
(
thd
,
new_dirp
,
NullS
,
newpath
,
1
,
0
))
<
0
)
goto
err
;
if
(
!
(
copy_of_path
=
thd
->
memdup
(
newpath
,
length
+
1
))
||
!
(
dir
=
new
(
thd
->
mem_root
)
String
(
copy_of_path
,
length
,
...
...
@@ -818,6 +879,9 @@ static long mysql_rm_known_files(THD *thd, MY_DIR *dirp, const char *db,
}
my_dirend
(
dirp
);
if
(
dropped_tables
)
*
dropped_tables
=
tot_list
;
/*
If the directory is a symbolic link, remove the link first, then
remove the directory the symbolic link pointed at
...
...
sql/sql_prepare.cc
View file @
a58c0e7d
...
...
@@ -528,7 +528,9 @@ static void setup_one_conversion_function(THD *thd, Item_param *param,
case
MYSQL_TYPE_LONG_BLOB
:
case
MYSQL_TYPE_BLOB
:
param
->
set_param_func
=
set_param_str
;
param
->
value
.
cs_info
.
character_set_client
=
&
my_charset_bin
;
param
->
value
.
cs_info
.
character_set_of_placeholder
=
&
my_charset_bin
;
param
->
value
.
cs_info
.
character_set_client
=
thd
->
variables
.
character_set_client
;
param
->
value
.
cs_info
.
final_character_set_of_str_value
=
&
my_charset_bin
;
param
->
item_type
=
Item
::
STRING_ITEM
;
param
->
item_result_type
=
STRING_RESULT
;
...
...
@@ -544,6 +546,7 @@ static void setup_one_conversion_function(THD *thd, Item_param *param,
CHARSET_INFO
*
tocs
=
thd
->
variables
.
collation_connection
;
uint32
dummy_offset
;
param
->
value
.
cs_info
.
character_set_of_placeholder
=
fromcs
;
param
->
value
.
cs_info
.
character_set_client
=
fromcs
;
/*
...
...
@@ -601,7 +604,7 @@ static bool insert_params_withlog(Prepared_statement *stmt, uchar *null_array,
param
->
set_param_func
(
param
,
&
read_pos
,
data_end
-
read_pos
);
}
}
res
=
param
->
query_val_str
(
&
str
,
thd
);
res
=
param
->
query_val_str
(
&
str
);
if
(
param
->
convert_str_value
(
thd
))
DBUG_RETURN
(
1
);
/* out of memory */
...
...
@@ -749,7 +752,7 @@ static bool emb_insert_params_withlog(Prepared_statement *stmt, String *query)
client_param
->
buffer_length
);
}
}
res
=
param
->
query_val_str
(
&
str
,
thd
);
res
=
param
->
query_val_str
(
&
str
);
if
(
param
->
convert_str_value
(
thd
))
DBUG_RETURN
(
1
);
/* out of memory */
...
...
sql/sql_select.cc
View file @
a58c0e7d
...
...
@@ -8517,9 +8517,7 @@ create_distinct_group(THD *thd, Item **ref_pointer_array,
li
.
rewind
();
while
((
item
=
li
++
))
{
if
(
item
->
const_item
()
||
item
->
with_sum_func
)
continue
;
if
(
!
item
->
marker
)
if
(
!
item
->
const_item
()
&&
!
item
->
with_sum_func
&&
!
item
->
marker
)
{
ORDER
*
ord
=
(
ORDER
*
)
thd
->
calloc
(
sizeof
(
ORDER
));
if
(
!
ord
)
...
...
sql/sql_table.cc
View file @
a58c0e7d
...
...
@@ -220,6 +220,7 @@ int mysql_rm_table_part2(THD *thd, TABLE_LIST *tables, bool if_exists,
for
(
table
=
tables
;
table
;
table
=
table
->
next
)
{
char
*
db
=
table
->
db
;
table
->
was_dropped
=
0
;
mysql_ha_flush
(
thd
,
table
,
MYSQL_HA_CLOSE_FINAL
);
if
(
!
close_temporary_table
(
thd
,
db
,
table
->
real_name
))
{
...
...
@@ -280,6 +281,8 @@ int mysql_rm_table_part2(THD *thd, TABLE_LIST *tables, bool if_exists,
wrong_tables
.
append
(
','
);
wrong_tables
.
append
(
String
(
table
->
real_name
,
system_charset_info
));
}
else
table
->
was_dropped
=
1
;
}
thd
->
tmp_table_used
=
tmp_table_deleted
;
error
=
0
;
...
...
sql/table.h
View file @
a58c0e7d
...
...
@@ -235,6 +235,9 @@ typedef struct st_table_list
bool
cacheable_table
;
/* stop PS caching */
/* used in multi-upd privelege check */
bool
table_in_update_from_clause
;
/* used for proper partially successful DROP DATABASE binlogging */
bool
was_dropped
;
}
TABLE_LIST
;
typedef
struct
st_changed_table_list
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment