ALTER DATABASE test CHARACTER SET latin1 COLLATE latin1_swedish_ci; set @save_optimizer_switch_jcl6=@@optimizer_switch; set @@optimizer_switch='optimize_join_buffer_size=on'; set @@optimizer_switch='semijoin_with_cache=on'; set @@optimizer_switch='outer_join_with_cache=on'; set @@optimizer_switch='mrr=on,mrr_sort_keys=on,index_condition_pushdown=on'; set join_cache_level=6;
show variables like 'join_cache_level';
Variable_name Value
join_cache_level 6 set @optimizer_switch_for_select_test=@@optimizer_switch; set @join_cache_level_for_select_test=@@join_cache_level;
ALTER DATABASE test CHARACTER SET latin1 COLLATE latin1_swedish_ci;
drop table if exists t1,t2,t3,t4,t11;
drop table if exists t1_1,t1_2,t9_1,t9_2,t1aa,t2aa;
drop view if exists v1; SET optimizer_switch=ifnull(@optimizer_switch_for_select_test,'outer_join_with_cache=off'); set join_cache_level=@join_cache_level_for_select_test;
CREATE TABLE t1 (
Period smallint(4) unsigned zerofill DEFAULT '0000'NOT NULL,
Varor_period smallint(4) unsigned DEFAULT '0'NOT NULL
);
INSERT INTO t1 VALUES (9410,9412);
select period from t1;
period 9410
select * from t1;
Period Varor_period 94109412
select t1.* from t1;
Period Varor_period 94109412
CREATE TABLE t2 (
auto int not null auto_increment,
fld1 int(6) unsigned zerofill DEFAULT '000000'NOT NULL,
companynr tinyint(2) unsigned zerofill DEFAULT '00'NOT NULL,
fld3 char(30) DEFAULT ''NOT NULL,
fld4 char(35) DEFAULT ''NOT NULL,
fld5 char(35) DEFAULT ''NOT NULL,
fld6 char(4) DEFAULT ''NOT NULL,
UNIQUE fld1 (fld1),
KEY fld3 (fld3),
PRIMARY KEY (auto)
);
select t2.fld3 from t2 where companynr = 58and fld3 like "%imaginable%";
fld3
imaginable
select fld3 from t2 where fld3 like "%cultivation";
fld3
cultivation
select t2.fld3,companynr from t2 where companynr = 57+1 order by fld3;
fld3 companynr
concoct 58
druggists 58
engrossing 58
Eurydice 58
exclaimers 58
ferociousness 58
hopelessness 58
Huey 58
imaginable 58
judges 58
merging 58
ostrich 58
peering 58
Phelps 58
presumes 58
Ruth 58
sentences 58
Shylock 58
straggled 58
synergy 58
thanking 58
tying 58
unlocks 58
select fld3,companynr from t2 where companynr = 58 order by fld3;
fld3 companynr
concoct 58
druggists 58
engrossing 58
Eurydice 58
exclaimers 58
ferociousness 58
hopelessness 58
Huey 58
imaginable 58
judges 58
merging 58
ostrich 58
peering 58
Phelps 58
presumes 58
Ruth 58
sentences 58
Shylock 58
straggled 58
synergy 58
thanking 58
tying 58
unlocks 58
select fld3 from t2 order by fld3 desc limit 10;
fld3
youthfulness
yelped
Wotan
workers
Witt
witchcraft
Winsett
Willy
willed
wildcats
select fld3 from t2 order by fld3 desc limit 5;
fld3
youthfulness
yelped
Wotan
workers
Witt
select fld3 from t2 order by fld3 desc limit 5,5;
fld3
witchcraft
Winsett
Willy
willed
wildcats
select t2.fld3 from t2 where fld3 = 'honeysuckle';
fld3
honeysuckle
select t2.fld3 from t2 where fld3 LIKE 'honeysuckl_';
fld3
honeysuckle
select t2.fld3 from t2 where fld3 LIKE 'hon_ysuckl_';
fld3
honeysuckle
select t2.fld3 from t2 where fld3 LIKE 'honeysuckle%';
fld3
honeysuckle
select t2.fld3 from t2 where fld3 LIKE 'h%le';
fld3
honeysuckle
select t2.fld3 from t2 where fld3 LIKE 'honeysuckle_';
fld3
select t2.fld3 from t2 where fld3 LIKE 'don_t_find_me_please%';
fld3
explain select t2.fld3 from t2 where fld3 = 'honeysuckle';
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t2 ref fld3 fld3 30 const 1 Using where; Using index
explain select fld3 from t2 ignore index (fld3) where fld3 = 'honeysuckle';
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t2 ALL NULL NULL NULL NULL 1199 Using where
explain select fld3 from t2 use index (fld1) where fld3 = 'honeysuckle';
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t2 ALL NULL NULL NULL NULL 1199 Using where
explain select fld3 from t2 use index (fld3) where fld3 = 'honeysuckle';
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t2 ref fld3 fld3 30 const 1 Using where; Using index
explain select fld3 from t2 use index (fld1,fld3) where fld3 = 'honeysuckle';
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t2 ref fld3 fld3 30 const 1 Using where; Using index
explain select fld3 from t2 ignore index (fld3,not_used); ERROR42000: Key 'not_used' doesn't exist in table 't2'
explain select fld3 from t2 use index (not_used); ERROR42000: Key 'not_used' doesn't exist in table 't2'
select t2.fld3 from t2 where fld3 >= 'honeysuckle'and fld3 <= 'honoring' order by fld3;
fld3
honeysuckle
honoring
explain select t2.fld3 from t2 where fld3 >= 'honeysuckle'and fld3 <= 'honoring' order by fld3;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t2 range fld3 fld3 30 NULL 2 Using where; Using index
select fld1,fld3 from t2 where fld3="Colombo"or fld3 = "nondecreasing" order by fld3;
fld1 fld3 148504 Colombo 068305 Colombo 000000 nondecreasing
select fld1,fld3 from t2 where companynr = 37and fld3 = 'appendixes';
fld1 fld3 232605 appendixes 1232605 appendixes 1232606 appendixes 1232607 appendixes 1232608 appendixes 1232609 appendixes
select fld1 from t2 where fld1=250501or fld1="250502";
fld1 250501 250502
explain select fld1 from t2 where fld1=250501or fld1="250502";
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t2 range fld1 fld1 4 NULL 2 Using where; Using index
select fld1 from t2 where fld1=250501or fld1=250502or fld1 >= 250505and fld1 <= 250601or fld1 between 250501and250502;
fld1 250501 250502 250505 250601
explain select fld1 from t2 where fld1=250501or fld1=250502or fld1 >= 250505and fld1 <= 250601or fld1 between 250501and250502;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t2 range fld1 fld1 4 NULL 4 Using where; Using index
select fld1,fld3 from t2 where companynr = 37and fld3 like 'f%';
fld1 fld3 012001 flanking 013602 foldout 013606 fingerings 018007 fanatic 018017 featherweight 018054 fetters 018103 flint 018104 flopping 036002 funereal 038017 fetched 038205 firearm 058004 Fenton 088303 feminine 186002 freakish 188007 flurried 188505 fitting 198006 furthermore 202301 Fitzpatrick 208101 fiftieth 208113 freest 218008 finishers 218022 feed 218401 faithful 226205 foothill 226209 furnishings 228306 forthcoming 228311 fated 231315 freezes 232102 forgivably 238007 filial 238008 fixedly
select fld3 from t2 where fld3 like "L%"and fld3 = "ok";
fld3
select fld3 from t2 where (fld3 like "C%"and fld3 = "Chantilly");
fld3
Chantilly
select fld1,fld3 from t2 where fld1 like "25050%";
fld1 fld3 250501 poisoning 250502 Iraqis 250503 heaving 250504 population 250505 bomb
select fld1,fld3 from t2 where fld1 like "25050_";
fld1 fld3 250501 poisoning 250502 Iraqis 250503 heaving 250504 population 250505 bomb
select distinct companynr from t2;
companynr 00 37 36 50 58 29 40 53 65 41 34 68
select distinct companynr from t2 order by companynr;
companynr 00 29 34 36 37 40 41 50 53 58 65 68
select distinct companynr from t2 order by companynr desc;
companynr 68 65 58 53 50 41 40 37 36 34 29 00
select distinct t2.fld3,period from t2,t1 where companynr=37and fld3 like "O%";
fld3 period
obliterates 9410
offload 9410
opaquely 9410
organizer 9410
overestimating 9410
overlay 9410
select distinct fld3 from t2 where companynr = 34 order by fld3;
fld3
absentee
accessed
ahead
alphabetic
Asiaticizations
attitude
aye
bankruptcies
belays
Blythe
bomb
boulevard
bulldozes
cannot
caressing
charcoal
checksumming
chess
clubroom
colorful
cosy
creator
crying
Darius
diffusing
duality
Eiffel
Epiphany
Ernestine
explorers
exterminated
famine
forked
Gershwins
heaving
Hodges
Iraqis
Italianization
Lagos
landslide
libretto
Majorca
mastering
narrowed
occurred
offerers
Palestine
Peruvianizes
pharmaceutic
poisoning
population
Pygmalion
rats
realest
recording
regimented
retransmitting
reviver
rouses
scars
sicker
sleepwalk
stopped
sugars
translatable
uncles
unexpected
uprisings
versatility
vest
select distinct fld3 from t2 limit 10;
fld3
abates
abiding
Abraham
abrogating
absentee
abut
accessed
accruing
accumulating
accuracies
select distinct fld3 from t2 having fld3 like "A%" limit 10;
fld3
abates
abiding
Abraham
abrogating
absentee
abut
accessed
accruing
accumulating
accuracies
select distinct substring(fld3,1,3) from t2 where fld3 like "A%";
substring(fld3,1,3)
aba
abi
Abr
abs
abu
acc
acq
acu
Ade
adj
Adl
adm
Ado
ads
adv
aer
aff
afi
afl
afo
agi
ahe
aim
air
Ald
alg
ali
all
alp
alr
ama
ame
amm
ana and
ane
Ang
ani
Ann
Ant
api
app
aqu
Ara
arc
Arm
arr
Art
Asi
ask
asp
ass
ast
att
aud
Aug
aut
ave
avo
awe
aye
Azt
select distinct substring(fld3,1,3) as a from t2 having a like "A%" order by a limit 10;
a
aba
abi
Abr
abs
abu
acc
acq
acu
Ade
adj
select distinct substring(fld3,1,3) from t2 where fld3 like "A%" limit 10;
substring(fld3,1,3)
aba
abi
Abr
abs
abu
acc
acq
acu
Ade
adj
select distinct substring(fld3,1,3) as a from t2 having a like "A%" limit 10;
a
aba
abi
Abr
abs
abu
acc
acq
acu
Ade
adj
create table t3 (
period int not null,
name char(32) not null,
companynr int not null,
price double(11,0),
price2 double(11,0),
key (period),
key (name)
);
create temporary table tmp engine = myisam select * from t3;
insert into t3 select * from tmp;
insert into tmp select * from t3;
insert into t3 select * from tmp;
insert into tmp select * from t3;
insert into t3 select * from tmp;
insert into tmp select * from t3;
insert into t3 select * from tmp;
insert into tmp select * from t3;
insert into t3 select * from tmp;
insert into tmp select * from t3;
insert into t3 select * from tmp;
insert into tmp select * from t3;
insert into t3 select * from tmp;
insert into tmp select * from t3;
insert into t3 select * from tmp;
insert into tmp select * from t3;
insert into t3 select * from tmp;
alter table t3 add t2nr int not null auto_increment primary key first;
drop table tmp; set tmp_memory_table_size=0;
select distinct concat(fld3," ",fld3) as namn from t2,t3 where t2.fld1=t3.t2nr order by namn limit 10;
namn
Abraham Abraham
abrogating abrogating
admonishing admonishing
Adolph Adolph
afield afield
aging aging
ammonium ammonium
analyzable analyzable
animals animals
animized animized set tmp_memory_table_size=default;
select distinct concat(fld3," ",fld3) from t2,t3 where t2.fld1=t3.t2nr order by fld3 limit 10;
concat(fld3," ",fld3)
Abraham Abraham
abrogating abrogating
admonishing admonishing
Adolph Adolph
afield afield
aging aging
ammonium ammonium
analyzable analyzable
animals animals
animized animized
select distinct fld5 from t2 limit 10;
fld5
neat
Steinberg
jarring
tinily
balled
persist
attainments
fanatic
measures
rightfulness
select distinct fld3,count(*) from t2 group by companynr,fld3 limit 10;
fld3 count(*)
affixed 1 and1
annoyers 1
Anthony 1
assayed 1
assurers 1
attendants 1
bedlam 1
bedpost 1
boasted 1 set tmp_memory_table_size=0;
select distinct fld3,count(*) from t2 group by companynr,fld3 limit 10;
fld3 count(*)
affixed 1 and1
annoyers 1
Anthony 1
assayed 1
assurers 1
attendants 1
bedlam 1
bedpost 1
boasted 1 set tmp_memory_table_size=default;
select distinct fld3,repeat("a",length(fld3)),count(*) from t2 group by companynr,fld3 limit 100,10;
fld3 repeat("a",length(fld3)) count(*)
circus aaaaaa 1
cited aaaaa 1
Colombo aaaaaaa 1
congresswoman aaaaaaaaaaaaa 1
contrition aaaaaaaaaa 1
corny aaaaa 1
cultivation aaaaaaaaaaa 1
definiteness aaaaaaaaaaaa 1
demultiplex aaaaaaaaaaa 1
disappointing aaaaaaaaaaaaa 1
select distinct companynr,rtrim(space(512+companynr)) from t3 order by 1,2;
companynr rtrim(space(512+companynr)) 37 78 101 154 311 447 512
select distinct fld3 from t2,t3 where t2.companynr = 34and t2.fld1=t3.t2nr order by fld3;
fld3
explain select t3.t2nr,fld3 from t2,t3 where t2.companynr = 34and t2.fld1=t3.t2nr order by t3.t2nr,fld3;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t2 ALL fld1 NULL NULL NULL 1199 Using where; Using temporary; Using filesort 1 SIMPLE t3 eq_ref PRIMARY PRIMARY 4 test.t2.fld1 1 Using where; Using index
#
# Some test with ORDER BY and limit
#
explain select count(*) from t3 as t1,t3 where t1.period=t3.period order by t3.period;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 index period period 4 NULL 41810 Using where; Using index 1 SIMPLE t3 ref period period 4 test.t1.period 4181 Using index
explain select sum(t1.price+t3.price) from t3 as t1,t3 where t1.period=t3.period order by t3.period;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 ALL period NULL NULL NULL 41810 1 SIMPLE t3 ALL period NULL NULL NULL 41810 Using where; Using join buffer (flat, BNL join)
explain select * from t3 as t1,t3 where t1.period=t3.period order by t3.period;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 ALL period NULL NULL NULL 41810 Using temporary; Using filesort 1 SIMPLE t3 ALL period NULL NULL NULL 41810 Using where; Using join buffer (flat, BNL join)
explain select * from t3 as t1,t3 where t1.period=t3.period order by t3.period limit 10;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t3 ALL period NULL NULL NULL 41810 Using temporary; Using filesort 1 SIMPLE t1 ALL period NULL NULL NULL 41810 Using where; Using join buffer (flat, BNL join)
explain select * from t3 as t1,t3 where t1.period=t3.period order by t1.period limit 10;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 ALL period NULL NULL NULL 41810 Using temporary; Using filesort 1 SIMPLE t3 ALL period NULL NULL NULL 41810 Using where; Using join buffer (flat, BNL join) set @save_join_cache_level=@@join_cache_level; set @@join_cache_level=0;
explain select * from t3 as t1,t3 where t1.period=t3.period order by t3.period;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 ALL period NULL NULL NULL 41810 Using filesort 1 SIMPLE t3 ref period period 4 test.t1.period 4181
explain select * from t3 as t1,t3 where t1.period=t3.period order by t3.period limit 10;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t3 index period period 4 NULL 1 1 SIMPLE t1 ref period period 4 test.t3.period 4181
explain select * from t3 as t1,t3 where t1.period=t3.period order by t1.period limit 10;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 index period period 4 NULL 1 1 SIMPLE t3 ref period period 4 test.t1.period 4181 set @@join_cache_level=@save_join_cache_level;
#
# Search with a constant table.
#
select period from t1;
period 9410
select period from t1 where period=1900;
period
select fld3,period from t1,t2 where fld1 = 011401 order by period;
fld3 period
breaking 9410
select fld3,period from t2,t3 where t2.fld1 = 011401and t2.fld1=t3.t2nr and t3.period=1001;
fld3 period
breaking 1001
explain select fld3,period from t2,t3 where t2.fld1 = 011401and t3.t2nr=t2.fld1 and1001 = t3.period;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t2 const fld1 fld1 4 const 1 1 SIMPLE t3 const PRIMARY,period PRIMARY 4 const 1
select fld3,period from t2,t1 where companynr*10 = 37*10;
fld3 period
breaking 9410
Romans 9410
intercepted 9410
bewilderingly 9410
astound 9410
admonishing 9410
sumac 9410
flanking 9410
combed 9410
subjective 9410
scatterbrain 9410
Eulerian 9410
Kane 9410
overlay 9410
perturb 9410
goblins 9410
annihilates 9410
Wotan 9410
snatching 9410
concludes 9410
laterally 9410
yelped 9410
grazing 9410
Baird 9410
celery 9410
misunderstander 9410
handgun 9410
foldout 9410
mystic 9410
succumbed 9410
Nabisco 9410
fingerings 9410
aging 9410
afield 9410
ammonium 9410
boat 9410
intelligibility 9410
Augustine 9410
teethe 9410
dreaded 9410
scholastics 9410
audiology 9410
wallet 9410
parters 9410
eschew 9410
quitter 9410
neat 9410
Steinberg 9410
jarring 9410
tinily 9410
balled 9410
persist 9410
attainments 9410
fanatic 9410
measures 9410
rightfulness 9410
capably 9410
impulsive 9410
starlet 9410
terminators 9410
untying 9410
announces 9410
featherweight 9410
pessimist 9410
daughter 9410
decliner 9410
lawgiver 9410
stated 9410
readable 9410
attrition 9410
cascade 9410
motors 9410
interrogate 9410
pests 9410
stairway 9410
dopers 9410
testicle 9410
Parsifal 9410
leavings 9410
postulation 9410
squeaking 9410
contrasted 9410
leftover 9410
whiteners 9410
erases 9410
Punjab 9410
Merritt 9410
Quixotism 9410
sweetish 9410
dogging 9410
scornfully 9410
bellow 9410
bills 9410
cupboard 9410
sureties 9410
puddings 9410
fetters 9410
bivalves 9410
incurring 9410
Adolph 9410
pithed 9410
Miles 9410
trimmings 9410
tragedies 9410
skulking 9410
flint 9410
flopping 9410
relaxing 9410
offload 9410
suites 9410
lists 9410
animized 9410
multilayer 9410
standardizes 9410
Judas 9410
vacuuming 9410
dentally 9410
humanness 9410
inch 9410
Weissmuller 9410
irresponsibly 9410
luckily 9410
culled 9410
medical 9410
bloodbath 9410
subschema 9410
animals 9410
Micronesia 9410
repetitions 9410
Antares 9410
ventilate 9410
pityingly 9410
interdependent 9410
Graves 9410
neonatal 9410
chafe 9410
honoring 9410
realtor 9410
elite 9410
funereal 9410
abrogating 9410
sorters 9410
Conley 9410
lectured 9410
Abraham 9410
Hawaii 9410
cage 9410
hushes 9410
Simla 9410
reporters 9410
Dutchman 9410
descendants 9410
groupings 9410
dissociate 9410
coexist 9410
Beebe 9410
Taoism 9410
Connally 9410
fetched 9410
checkpoints 9410
rusting 9410
galling 9410
obliterates 9410
traitor 9410
resumes 9410
analyzable 9410
terminator 9410
gritty 9410
firearm 9410
minima 9410
Selfridge 9410
disable 9410
witchcraft 9410
betroth 9410
Manhattanize 9410
imprint 9410
peeked 9410
swelling 9410
interrelationships 9410
riser 9410
Gandhian 9410
peacock 9410
bee 9410
kanji 9410
dental 9410
scarf 9410
chasm 9410
insolence 9410
syndicate 9410
alike 9410
imperial 9410
convulsion 9410
railway 9410
validate 9410
normalizes 9410
comprehensive 9410
chewing 9410
denizen 9410
schemer 9410
chronicle 9410
Kline 9410
Anatole 9410
partridges 9410
brunch 9410
recruited 9410
dimensions 9410
Chicana 9410
announced 9410
praised 9410
employing 9410
linear 9410
quagmire 9410
western 9410
relishing 9410
serving 9410
scheduling 9410
lore 9410
eventful 9410
arteriole 9410
disentangle 9410
cured 9410
Fenton 9410
avoidable 9410
drains 9410
detectably 9410
husky 9410
impelling 9410
undoes 9410
evened 9410
squeezes 9410
destroyer 9410
rudeness 9410
beaner 9410
boorish 9410
Everhart 9410
encompass 9410
mushrooms 9410
Alison 9410
externally 9410
pellagra 9410
cult 9410
creek 9410
Huffman 9410
Majorca 9410
governing 9410
gadfly 9410
reassigned 9410
intentness 9410
craziness 9410
psychic 9410
squabbled 9410
burlesque 9410
capped 9410
extracted 9410
DiMaggio 9410
exclamation 9410
subdirectory 9410
Gothicism 9410
feminine 9410
metaphysically 9410
sanding 9410
Miltonism 9410
freakish 9410
index 9410
straight 9410
flurried 9410
denotative 9410
coming 9410
commencements 9410
gentleman 9410
gifted 9410
Shanghais 9410
sportswriting 9410
sloping 9410
navies 9410
leaflet 9410
shooter 9410
Joplin 9410
babies 9410
assails 9410
admiring 9410
swaying 9410
Goldstine 9410
fitting 9410
Norwalk 9410
analogy 9410
deludes 9410
cokes 9410
Clayton 9410
exhausts 9410
causality 9410
sating 9410
icon 9410
throttles 9410
communicants 9410
dehydrate 9410
priceless 9410
publicly 9410
incidentals 9410
commonplace 9410
mumbles 9410
furthermore 9410
cautioned 9410
parametrized 9410
registration 9410
sadly 9410
positioning 9410
babysitting 9410
eternal 9410
hoarder 9410
congregates 9410
rains 9410
workers 9410
sags 9410
unplug 9410
garage 9410
boulder 9410
specifics 9410
Teresa 9410
Winsett 9410
convenient 9410
buckboards 9410
amenities 9410
resplendent 9410
sews 9410
participated 9410
Simon 9410
certificates 9410
Fitzpatrick 9410
Evanston 9410
misted 9410
textures 9410
save 9410
count 9410
rightful 9410
chaperone 9410
Lizzy 9410
clenched 9410
effortlessly 9410
accessed 9410
beaters 9410
Hornblower 9410
vests 9410
indulgences 9410
infallibly 9410
unwilling 9410
excrete 9410
spools 9410
crunches 9410
overestimating 9410
ineffective 9410
humiliation 9410
sophomore 9410
star 9410
rifles 9410
dialysis 9410
arriving 9410
indulge 9410
clockers 9410
languages 9410
Antarctica 9410
percentage 9410
ceiling 9410
specification 9410
regimented 9410
ciphers 9410
pictures 9410
serpents 9410
allot 9410
realized 9410
mayoral 9410
opaquely 9410
hostess 9410
fiftieth 9410
incorrectly 9410
decomposition 9410
stranglings 9410
mixture 9410
electroencephalography 9410
similarities 9410
charges 9410
freest 9410
Greenberg 9410
tinting 9410
expelled 9410
warm 9410
smoothed 9410
deductions 9410
Romano 9410
bitterroot 9410
corset 9410
securing 9410
environing 9410
cute 9410
Crays 9410
heiress 9410
inform 9410
avenge 9410
universals 9410
Kinsey 9410
ravines 9410
bestseller 9410
equilibrium 9410
extents 9410
relatively 9410
pressure 9410
critiques 9410
befouled 9410
rightfully 9410
mechanizing 9410
Latinizes 9410
timesharing 9410
Aden 9410
embassies 9410
males 9410
shapelessly 9410
mastering 9410
Newtonian 9410
finishers 9410
abates 9410
teem 9410
kiting 9410
stodgy 9410
feed 9410
guitars 9410
airships 9410
store 9410
denounces 9410
Pyle 9410
Saxony 9410
serializations 9410
Peruvian 9410
taxonomically 9410
kingdom 9410
stint 9410
Sault 9410
faithful 9410
Ganymede 9410
tidiness 9410
gainful 9410
contrary 9410
Tipperary 9410
tropics 9410
theorizers 9410
renew 9410
already 9410
terminal 9410
Hegelian 9410
hypothesizer 9410
warningly 9410
journalizing 9410
nested 9410
Lars 9410
saplings 9410
foothill 9410
labeled 9410
imperiously 9410
reporters 9410
furnishings 9410
precipitable 9410
discounts 9410
excises 9410
Stalin 9410
despot 9410
ripeness 9410
Arabia 9410
unruly 9410
mournfulness 9410
boom 9410
slaughter 9410
Sabine 9410
handy 9410
rural 9410
organizer 9410
shipyard 9410
civics 9410
inaccuracy 9410
rules 9410
juveniles 9410
comprised 9410
investigations 9410
stabilizes 9410
seminaries 9410
Hunter 9410
sporty 9410
test 9410
weasels 9410
CERN 9410
tempering 9410
afore 9410
Galatean 9410
techniques 9410 error9410
veranda 9410
severely 9410
Cassites 9410
forthcoming 9410
guides 9410
vanish 9410
lied 9410
sawtooth 9410
fated 9410
gradually 9410
widens 9410
preclude 9410
evenhandedly 9410
percentage 9410
disobedience 9410
humility 9410
gleaning 9410
petted 9410
bloater 9410
minion 9410
marginal 9410
apiary 9410
measures 9410
precaution 9410
repelled 9410
primary 9410
coverings 9410
Artemia 9410
navigate 9410
spatial 9410
Gurkha 9410
meanwhile 9410
Melinda 9410
Butterfield 9410
Aldrich 9410
previewing 9410
glut 9410
unaffected 9410
inmate 9410
mineral 9410
impending 9410
meditation 9410
ideas 9410
miniaturizes 9410
lewdly 9410
title 9410
youthfulness 9410
creak 9410
Chippewa 9410
clamored 9410
freezes 9410
forgivably 9410
reduce 9410
McGovern 9410
Nazis 9410
epistle 9410
socializes 9410
conceptions 9410
Kevin 9410
uncovering 9410
chews 9410
appendixes 9410
appendixes 9410
appendixes 9410
appendixes 9410
appendixes 9410
appendixes 9410
raining 9410
infest 9410
compartment 9410
minting 9410
ducks 9410
roped 9410
waltz 9410
Lillian 9410
repressions 9410
chillingly 9410
noncritical 9410
lithograph 9410
spongers 9410
parenthood 9410
posed 9410
instruments 9410
filial 9410
fixedly 9410
relives 9410
Pandora 9410
watering 9410
ungrateful 9410
secures 9410
poison 9410
dusted 9410
encompasses 9410
presentation 9410
Kantian 9410
select fld3,period,price,price2 from t2,t3 where t2.fld1=t3.t2nr and period >= 1001and period <= 1002and t2.companynr = 37 order by fld3,period, price;
fld3 period price price2
admonishing 1002283578328723648
analyzable 1002283578328723648
annihilates 10015987435234724
Antares 1002283578328723648
astound 10015987435234724
audiology 10015987435234724
Augustine 1002283578328723648
Baird 1002283578328723648
bewilderingly 10015987435234724
breaking 10015987435234724
Conley 10015987435234724
dentally 1002283578328723648
dissociate 1002283578328723648
elite 10015987435234724
eschew 10015987435234724
Eulerian 10015987435234724
flanking 10015987435234724
foldout 1002283578328723648
funereal 1002283578328723648
galling 1002283578328723648
Graves 10015987435234724
grazing 10015987435234724
groupings 10015987435234724
handgun 10015987435234724
humility 1002283578328723648
impulsive 1002283578328723648
inch 10015987435234724
intelligibility 10015987435234724
jarring 10015987435234724
lawgiver 10015987435234724
lectured 1002283578328723648
Merritt 1002283578328723648
neonatal 10015987435234724
offload 1002283578328723648
parters 1002283578328723648
pityingly 1002283578328723648
puddings 1002283578328723648
Punjab 10015987435234724
quitter 1002283578328723648
realtor 10015987435234724
relaxing 10015987435234724
repetitions 10015987435234724
resumes 10015987435234724
Romans 1002283578328723648
rusting 10015987435234724
scholastics 10015987435234724
skulking 1002283578328723648
stated 1002283578328723648
suites 1002283578328723648
sureties 10015987435234724
testicle 1002283578328723648
tinily 1002283578328723648
tragedies 10015987435234724
trimmings 10015987435234724
vacuuming 10015987435234724
ventilate 10015987435234724
wallet 10015987435234724
Weissmuller 1002283578328723648
Wotan 1002283578328723648
select t2.fld1,fld3,period,price,price2 from t2,t3 where t2.fld1>= 18201and t2.fld1 <= 18811and t2.fld1=t3.t2nr and period = 1001and t2.companynr = 37;
fld1 fld3 period price price2 018201 relaxing 10015987435234724 018601 vacuuming 10015987435234724 018801 inch 10015987435234724 018811 repetitions 10015987435234724
create table t4 (
companynr tinyint(2) unsigned zerofill NOT NULL default '00',
companyname char(30) NOT NULL default '',
PRIMARY KEY (companynr),
UNIQUE KEY companyname(companyname)
) ENGINE=MyISAM MAX_ROWS=50 PACK_KEYS=1 COMMENT='companynames';
select STRAIGHT_JOIN t2.companynr,companyname from t4,t2 where t2.companynr=t4.companynr group by t2.companynr;
companynr companyname 00 Unknown 29 company 1 34 company 2 36 company 3 37 company 4 40 company 5 41 company 6 50 company 11 53 company 7 58 company 8 65 company 9 68 company 10
select SQL_SMALL_RESULT t2.companynr,companyname from t4,t2 where t2.companynr=t4.companynr group by t2.companynr;
companynr companyname 00 Unknown 29 company 1 34 company 2 36 company 3 37 company 4 40 company 5 41 company 6 50 company 11 53 company 7 58 company 8 65 company 9 68 company 10
select * from t1,t1 t12;
Period Varor_period Period Varor_period 9410941294109412
select t2.fld1,t22.fld1 from t2,t2 t22 where t2.fld1 >= 250501and t2.fld1 <= 250505and t22.fld1 >= 250501and t22.fld1 <= 250505;
fld1 fld1 250501250501 250502250501 250503250501 250504250501 250505250501 250501250502 250502250502 250503250502 250504250502 250505250502 250501250503 250502250503 250503250503 250504250503 250505250503 250501250504 250502250504 250503250504 250504250504 250505250504 250501250505 250502250505 250503250505 250504250505 250505250505
insert into t2 (fld1, companynr) values (999999,99);
select t2.companynr,companyname from t2 left join t4 using (companynr) where t4.companynr is null;
companynr companyname 99 NULL
select count(*) from t2 left join t4 using (companynr) where t4.companynr is not null;
count(*) 1199
explain select t2.companynr,companyname from t2 left join t4 using (companynr) where t4.companynr is null;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t2 ALL NULL NULL NULL NULL 1200 1 SIMPLE t4 eq_ref PRIMARY PRIMARY 1 test.t2.companynr 1 Using where; Not exists; Using join buffer (flat, BKA join); Key-ordered Rowid-ordered scan
explain select t2.companynr,companyname from t4 left join t2 using (companynr) where t2.companynr is null;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t4 ALL NULL NULL NULL NULL 12 1 SIMPLE t2 hash_ALL NULL #hash#$hj 1 test.t4.companynr 1200 Using where; Not exists; Using join buffer (flat, BNLH join)
select companynr,companyname from t2 left join t4 using (companynr) where companynr is null;
companynr companyname
select count(*) from t2 left join t4 using (companynr) where companynr is not null;
count(*) 1200
explain select companynr,companyname from t2 left join t4 using (companynr) where companynr is null;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible WHERE
explain select companynr,companyname from t4 left join t2 using (companynr) where companynr is null;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible WHERE
delete from t2 where fld1=999999;
#
# Test left join optimization
# set @save_join_cache_level=@@join_cache_level; set @@join_cache_level=0;
explain select t2.companynr,companyname from t4 left join t2 using (companynr) where t2.companynr > 0;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t4 ALL PRIMARY NULL NULL NULL 12 Using where 1 SIMPLE t2 ALL NULL NULL NULL NULL 1199 Using where
explain select t2.companynr,companyname from t4 left join t2 using (companynr) where t2.companynr > 0or t2.companynr < 0;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t2 ALL NULL NULL NULL NULL 1199 Using where 1 SIMPLE t4 eq_ref PRIMARY PRIMARY 1 test.t2.companynr 1
explain select t2.companynr,companyname from t4 left join t2 using (companynr) where t2.companynr > 0and t4.companynr > 0;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t4 ALL PRIMARY NULL NULL NULL 12 Using where 1 SIMPLE t2 ALL NULL NULL NULL NULL 1199 Using where set @@join_cache_level=@save_join_cache_level;
explain select t2.companynr,companyname from t4 left join t2 using (companynr) where t2.companynr > 0or t2.companynr < 0;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t4 ALL PRIMARY NULL NULL NULL 12 Using where 1 SIMPLE t2 hash_ALL NULL #hash#$hj 1 test.t4.companynr 1199 Using where; Using join buffer (flat, BNLH join)
explain select companynr,companyname from t4 left join t2 using (companynr) where companynr > 0;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t4 ALL PRIMARY NULL NULL NULL 12 Using where 1 SIMPLE t2 hash_ALL NULL #hash#$hj 1 test.t4.companynr 1199 Using where; Using join buffer (flat, BNLH join)
explain select companynr,companyname from t4 left join t2 using (companynr) where companynr > 0or companynr < 0;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t4 ALL PRIMARY NULL NULL NULL 12 Using where 1 SIMPLE t2 hash_ALL NULL #hash#$hj 1 test.t4.companynr 1199 Using where; Using join buffer (flat, BNLH join)
explain select companynr,companyname from t4 left join t2 using (companynr) where companynr > 0and companynr > 0;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t4 ALL PRIMARY NULL NULL NULL 12 Using where 1 SIMPLE t2 hash_ALL NULL #hash#$hj 1 test.t4.companynr 1199 Using where; Using join buffer (flat, BNLH join)
explain select t2.companynr,companyname from t4 left join t2 using (companynr) where t2.companynr > 0or t2.companynr is null;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t4 ALL NULL NULL NULL NULL 12 1 SIMPLE t2 hash_ALL NULL #hash#$hj 1 test.t4.companynr 1199 Using where; Using join buffer (flat, BNLH join)
explain select t2.companynr,companyname from t4 left join t2 using (companynr) where t2.companynr > 0or t2.companynr < 0or t4.companynr > 0;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t4 ALL PRIMARY NULL NULL NULL 12 1 SIMPLE t2 hash_ALL NULL #hash#$hj 1 test.t4.companynr 1199 Using where; Using join buffer (flat, BNLH join)
explain select t2.companynr,companyname from t4 left join t2 using (companynr) where ifnull(t2.companynr,1)>0;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t4 ALL NULL NULL NULL NULL 12 1 SIMPLE t2 hash_ALL NULL #hash#$hj 1 test.t4.companynr 1199 Using where; Using join buffer (flat, BNLH join)
explain select companynr,companyname from t4 left join t2 using (companynr) where companynr > 0or companynr is null;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t4 ALL PRIMARY NULL NULL NULL 12 Using where 1 SIMPLE t2 hash_ALL NULL #hash#$hj 1 test.t4.companynr 1199 Using where; Using join buffer (flat, BNLH join)
explain select companynr,companyname from t4 left join t2 using (companynr) where companynr > 0or companynr < 0or companynr > 0;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t4 ALL PRIMARY NULL NULL NULL 12 Using where 1 SIMPLE t2 hash_ALL NULL #hash#$hj 1 test.t4.companynr 1199 Using where; Using join buffer (flat, BNLH join)
explain select companynr,companyname from t4 left join t2 using (companynr) where ifnull(companynr,1)>0;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t4 ALL NULL NULL NULL NULL 12 Using where 1 SIMPLE t2 hash_ALL NULL #hash#$hj 1 test.t4.companynr 1199 Using where; Using join buffer (flat, BNLH join)
#
# Joins with forms.
#
select distinct t2.companynr,t4.companynr from t2,t4 where t2.companynr=t4.companynr+1;
companynr companynr 3736 4140
explain select distinct t2.companynr,t4.companynr from t2,t4 where t2.companynr=t4.companynr+1;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t4 index NULL PRIMARY 1 NULL 12 Using index; Using temporary 1 SIMPLE t2 hash_ALL NULL #hash#$hj 1 func 1199 Using where; Using join buffer (flat, BNLH join)
select t2.fld1,t2.companynr,fld3,period from t3,t2 where t2.fld1 = 38208and t2.fld1=t3.t2nr and period = 1008or t2.fld1 = 38008and t2.fld1 =t3.t2nr and period = 1008;
fld1 companynr fld3 period 03800837 reporters 1008 03820837 Selfridge 1008
select t2.fld1,t2.companynr,fld3,period from t3,t2 where (t2.fld1 = 38208or t2.fld1 = 38008) and t2.fld1=t3.t2nr and period>=1008and period<=1009;
fld1 companynr fld3 period 03800837 reporters 1008 03820837 Selfridge 1008
select t2.fld1,t2.companynr,fld3,period from t3,t2 where (t3.t2nr = 38208or t3.t2nr = 38008) and t2.fld1=t3.t2nr and period>=1008and period<=1009;
fld1 companynr fld3 period 03800837 reporters 1008 03820837 Selfridge 1008
select period from t1 where (((period > 0) or period < 10000or (period = 1900)) and (period=1900and period <= 1901) or (period=1903and (period=1903)) and period>=1902) or ((period=1904or period=1905) or (period=1906or period>1907)) or (period=1908and period = 1909);
period 9410
select period from t1 where ((period > 0and period < 1) or (((period > 0and period < 100) and (period > 10)) or (period > 10)) or (period > 0and (period > 5or period > 6)));
period 9410
select a.fld1 from t2 as a,t2 b where ((a.fld1 = 250501and a.fld1=b.fld1) or a.fld1=250502or a.fld1=250503or (a.fld1=250505and a.fld1<=b.fld1 and b.fld1>=a.fld1)) and a.fld1=b.fld1;
fld1 250501 250502 250503 250505
select fld1 from t2 where fld1 in (250502,98005,98006,250503,250605,250606) and fld1 >=250502and fld1 not in (250605,250606);
fld1 250502 250503
select fld1 from t2 where fld1 between 250502and250504;
fld1 250502 250503 250504
select fld3 from t2 where (((fld3 like "_%L%" ) or (fld3 like "%ok%")) and ( fld3 like "L%"or fld3 like "G%")) and fld3 like "L%";
fld3
label
labeled
labeled
landslide
laterally
leaflet
lewdly
Lillian
luckily
select count(*) from t1;
count(*) 1
select companynr,count(*),sum(fld1) from t2 group by companynr;
companynr count(*) sum(fld1) 008210355753 299514473298 347017788966 3621522786296 3758883602098 40376618386 415212816335 50111595438 534793210 58232254293 65102284055 68123097288
select companynr,count(*) from t2 group by companynr order by companynr desc limit 5;
companynr count(*) 6812 6510 5823 534 5011
select count(*),min(fld4),max(fld4),sum(fld1),avg(fld1),std(fld1),variance(fld1) from t2 where companynr = 34and fld4<>"";
count(*) min(fld4) max(fld4) sum(fld1) avg(fld1) std(fld1) variance(fld1) 70 absentee vest 17788966254128.08573272.594010709871.3069
explain extended select count(*),min(fld4),max(fld4),sum(fld1),avg(fld1),std(fld1),variance(fld1) from t2 where companynr = 34and fld4<>"";
id select_type table type possible_keys key key_len ref rows filtered Extra 1 SIMPLE t2 ALL NULL NULL NULL NULL 1199100.00 Using where
Warnings:
Note 1003 select count(0) AS `count(*)`,min(`test`.`t2`.`fld4`) AS `min(fld4)`,max(`test`.`t2`.`fld4`) AS `max(fld4)`,sum(`test`.`t2`.`fld1`) AS `sum(fld1)`,avg(`test`.`t2`.`fld1`) AS `avg(fld1)`,std(`test`.`t2`.`fld1`) AS `std(fld1)`,variance(`test`.`t2`.`fld1`) AS `variance(fld1)` from `test`.`t2` where `test`.`t2`.`companynr` = 34and `test`.`t2`.`fld4` <> ''
select companynr,count(*),min(fld4),max(fld4),sum(fld1),avg(fld1),std(fld1),variance(fld1) from t2 group by companynr limit 3;
companynr count(*) min(fld4) max(fld4) sum(fld1) avg(fld1) std(fld1) variance(fld1) 0082 Anthony windmills 10355753126289.6707115550.975713352027981.7087 2995 abut wetness 14473298152350.50538368.548070032594.9026 3470 absentee vest 17788966254128.08573272.594010709871.3069
select companynr,t2nr,count(price),sum(price),min(price),max(price),avg(price) from t3 where companynr = 37 group by companynr,t2nr limit 10;
companynr t2nr count(price) sum(price) min(price) max(price) avg(price) 37115987435598743559874355987435.0000 372128357832283578322835783228357832.0000 373139654943396549433965494339654943.0000 371115987435598743559874355987435.0000 3712128357832283578322835783228357832.0000 3713139654943396549433965494339654943.0000 372115987435598743559874355987435.0000 3722128357832283578322835783228357832.0000 3723139654943396549433965494339654943.0000 373115987435598743559874355987435.0000
select /*! SQL_SMALL_RESULT */ companynr,t2nr,count(price),sum(price),min(price),max(price),avg(price) from t3 where companynr = 37 group by companynr,t2nr limit 10;
companynr t2nr count(price) sum(price) min(price) max(price) avg(price) 37115987435598743559874355987435.0000 372128357832283578322835783228357832.0000 373139654943396549433965494339654943.0000 371115987435598743559874355987435.0000 3712128357832283578322835783228357832.0000 3713139654943396549433965494339654943.0000 372115987435598743559874355987435.0000 3722128357832283578322835783228357832.0000 3723139654943396549433965494339654943.0000 373115987435598743559874355987435.0000
select companynr,count(price),sum(price),min(price),max(price),avg(price) from t3 group by companynr ;
companynr count(price) sum(price) min(price) max(price) avg(price) 371254330939487801059874353965494324666736.6667 7883624146110892927264989843903449582766.0000 10141813489454238834598834598834598.0000 15441814112197254950983543950983543950983543950.0000 3114181979599938234298234298234298.0000 44741819929180954237483423748342374834.0000 51241813288532102786542786542786542.0000
select distinct mod(companynr,10) from t4 group by companynr;
mod(companynr,10) 0 9 4 6 7 1 3 8 5
select distinct 1 from t4 group by companynr; 1 1
select count(distinct fld1) from t2;
count(distinct fld1) 1199
select companynr,count(distinct fld1) from t2 group by companynr;
companynr count(distinct fld1) 0082 2995 3470 36215 37588 4037 4152 5011 534 5823 6510 6812
select companynr,count(*) from t2 group by companynr;
companynr count(*) 0082 2995 3470 36215 37588 4037 4152 5011 534 5823 6510 6812
select companynr,count(distinct concat(fld1,repeat(65,1000))) from t2 group by companynr;
companynr count(distinct concat(fld1,repeat(65,1000))) 0082 2995 3470 36215 37588 4037 4152 5011 534 5823 6510 6812
select companynr,count(distinct concat(fld1,repeat(65,200))) from t2 group by companynr;
companynr count(distinct concat(fld1,repeat(65,200))) 0082 2995 3470 36215 37588 4037 4152 5011 534 5823 6510 6812
select companynr,count(distinct floor(fld1/100)) from t2 group by companynr;
companynr count(distinct floor(fld1/100)) 0047 2935 3414 3669 37108 4016 4111 509 531 581 651 681
select companynr,count(distinct concat(repeat(65,1000),floor(fld1/100))) from t2 group by companynr;
companynr count(distinct concat(repeat(65,1000),floor(fld1/100))) 0047 2935 3414 3669 37108 4016 4111 509 531 581 651 681
select sum(fld1),fld3 from t2 where fld3="Romans" group by fld1 limit 10;
sum(fld1) fld3 11402 Romans
select name,count(*) from t3 where name='cloakroom' group by name;
name count(*)
cloakroom 4181
select name,count(*) from t3 where name='cloakroom'and price>10 group by name;
name count(*)
cloakroom 4181
select count(*) from t3 where name='cloakroom'and price2=823742;
count(*) 4181
select name,count(*) from t3 where name='cloakroom'and price2=823742 group by name;
name count(*)
cloakroom 4181
select name,count(*) from t3 where name >= "extramarital"and price <= 39654943 group by name;
name count(*)
extramarital 4181
gazer 4181
gems 4181
Iranizes 4181
spates 4181
tucked 4181
violinist 4181
select t2.fld3,count(*) from t2,t3 where t2.fld1=158402and t3.name=t2.fld3 group by t3.name;
fld3 count(*)
spates 4181
select companynr|0,companyname from t4 group by 1;
companynr|0 companyname 0 Unknown 29 company 1 34 company 2 36 company 3 37 company 4 40 company 5 41 company 6 50 company 11 53 company 7 58 company 8 65 company 9 68 company 10
select t2.companynr,companyname,count(*) from t2,t4 where t2.companynr=t4.companynr group by t2.companynr order by companyname;
companynr companyname count(*) 29 company 195 68 company 1012 50 company 1111 34 company 270 36 company 3215 37 company 4588 40 company 537 41 company 652 53 company 74 58 company 823 65 company 910 00 Unknown 82
select t2.fld1,count(*) from t2,t3 where t2.fld1=158402and t3.name=t2.fld3 group by t3.name;
fld1 count(*) 1584024181
select sum(Period)/count(*) from t1;
sum(Period)/count(*) 9410.0000
select companynr,count(price) as "count",sum(price) as "sum" ,abs(sum(price)/count(price)-avg(price)) as "diff",(0+count(price))*companynr as func from t3 group by companynr;
companynr count sum diff func 37125433093948780100.0000464091 7883624146110892920.0000652236 101418134894542380.0000422281 154418141121972549500.0000643874 31141819795999380.00001300291 447418199291809540.00001868907 512418132885321020.00002140672
select companynr,sum(price)/count(price) as avg from t3 group by companynr having avg > 70000000 order by avg;
companynr avg 154983543950.0000
select companynr,count(*) from t2 group by companynr order by 2 desc;
companynr count(*) 37588 36215 2995 0082 3470 4152 4037 5823 6812 5011 6510 534
select companynr,count(*) from t2 where companynr > 40 group by companynr order by 2 desc;
companynr count(*) 4152 5823 6812 5011 6510 534
select t2.fld4,t2.fld1,count(price),sum(price),min(price),max(price),avg(price) from t3,t2 where t3.companynr = 37and t2.fld1 = t3.t2nr group by fld1,t2.fld4;
fld4 fld1 count(price) sum(price) min(price) max(price) avg(price)
teethe 00000115987435598743559874355987435.0000
dreaded 01140115987435598743559874355987435.0000
scholastics 011402128357832283578322835783228357832.0000
audiology 011403139654943396549433965494339654943.0000
wallet 01150115987435598743559874355987435.0000
parters 01170115987435598743559874355987435.0000
eschew 011702128357832283578322835783228357832.0000
quitter 011703139654943396549433965494339654943.0000
neat 01200115987435598743559874355987435.0000
Steinberg 012003139654943396549433965494339654943.0000
balled 01230115987435598743559874355987435.0000
persist 012302128357832283578322835783228357832.0000
attainments 012303139654943396549433965494339654943.0000
capably 01250115987435598743559874355987435.0000
impulsive 012602128357832283578322835783228357832.0000
starlet 012603139654943396549433965494339654943.0000
featherweight 01270115987435598743559874355987435.0000
pessimist 012702128357832283578322835783228357832.0000
daughter 012703139654943396549433965494339654943.0000
lawgiver 01360115987435598743559874355987435.0000
stated 013602128357832283578322835783228357832.0000
readable 013603139654943396549433965494339654943.0000
testicle 01380115987435598743559874355987435.0000
Parsifal 013802128357832283578322835783228357832.0000
leavings 013803139654943396549433965494339654943.0000
squeaking 01390115987435598743559874355987435.0000
contrasted 01600115987435598743559874355987435.0000
leftover 01620115987435598743559874355987435.0000
whiteners 016202128357832283578322835783228357832.0000
erases 01630115987435598743559874355987435.0000
Punjab 016302128357832283578322835783228357832.0000
Merritt 016303139654943396549433965494339654943.0000
sweetish 01800115987435598743559874355987435.0000
dogging 018002128357832283578322835783228357832.0000
scornfully 018003139654943396549433965494339654943.0000
fetters 018012128357832283578322835783228357832.0000
bivalves 018013139654943396549433965494339654943.0000
skulking 01802115987435598743559874355987435.0000
flint 018022128357832283578322835783228357832.0000
flopping 018023139654943396549433965494339654943.0000
Judas 018032128357832283578322835783228357832.0000
vacuuming 018033139654943396549433965494339654943.0000
medical 01804115987435598743559874355987435.0000
bloodbath 018042128357832283578322835783228357832.0000
subschema 018043139654943396549433965494339654943.0000
interdependent 01805115987435598743559874355987435.0000
Graves 018052128357832283578322835783228357832.0000
neonatal 018053139654943396549433965494339654943.0000
sorters 01806115987435598743559874355987435.0000
epistle 018062128357832283578322835783228357832.0000
Conley 01810115987435598743559874355987435.0000
lectured 018102128357832283578322835783228357832.0000
Abraham 018103139654943396549433965494339654943.0000
cage 01820115987435598743559874355987435.0000
hushes 018202128357832283578322835783228357832.0000
Simla 018402128357832283578322835783228357832.0000
reporters 018403139654943396549433965494339654943.0000
coexist 01860115987435598743559874355987435.0000
Beebe 018602128357832283578322835783228357832.0000
Taoism 018603139654943396549433965494339654943.0000
Connally 01880115987435598743559874355987435.0000
fetched 018802128357832283578322835783228357832.0000
checkpoints 018803139654943396549433965494339654943.0000
gritty 01881115987435598743559874355987435.0000
firearm 018812128357832283578322835783228357832.0000
minima 01910115987435598743559874355987435.0000
Selfridge 019102128357832283578322835783228357832.0000
disable 019103139654943396549433965494339654943.0000
witchcraft 01920115987435598743559874355987435.0000
betroth 03050115987435598743559874355987435.0000
Manhattanize 030502128357832283578322835783228357832.0000
imprint 030503139654943396549433965494339654943.0000
swelling 03190115987435598743559874355987435.0000
interrelationships 03600115987435598743559874355987435.0000
riser 036002128357832283578322835783228357832.0000
bee 03800115987435598743559874355987435.0000
kanji 038002128357832283578322835783228357832.0000
dental 038003139654943396549433965494339654943.0000
railway 03801115987435598743559874355987435.0000
validate 038012128357832283578322835783228357832.0000
normalizes 038013139654943396549433965494339654943.0000
Kline 03810115987435598743559874355987435.0000
Anatole 038102128357832283578322835783228357832.0000
partridges 038103139654943396549433965494339654943.0000
recruited 03820115987435598743559874355987435.0000
dimensions 038202128357832283578322835783228357832.0000
Chicana 038203139654943396549433965494339654943.0000
select t3.companynr,fld3,sum(price) from t3,t2 where t2.fld1 = t3.t2nr and t3.companynr = 512 group by companynr,fld3;
companynr fld3 sum(price) 512 boat 786542 512 capably 786542 512 cupboard 786542 512 decliner 786542 512 descendants 786542 512 dopers 786542 512 erases 786542 512 Micronesia 786542 512 Miles 786542 512 skies 786542
select t2.companynr,count(*),min(fld3),max(fld3),sum(price),avg(price) from t2,t3 where t3.companynr >= 30and t3.companynr <= 58and t3.t2nr = t2.fld1 and1+1=2 group by t2.companynr;
companynr count(*) min(fld3) max(fld3) sum(price) avg(price) 001 Omaha Omaha 59874355987435.0000 361 dubbed dubbed 2835783228357832.0000 3783 Abraham Wotan 190897801622999735.1325 502 scribbled tapestry 6801277534006387.5000
select t3.companynr+0,t3.t2nr,fld3,sum(price) from t3,t2 where t2.fld1 = t3.t2nr and t3.companynr = 37 group by 1,t3.t2nr,fld3,fld3,fld3,fld3,fld3 order by fld1;
t3.companynr+0 t2nr fld3 sum(price) 371 Omaha 5987435 3711401 breaking 5987435 3711402 Romans 28357832 3711403 intercepted 39654943 3711501 bewilderingly 5987435 3711701 astound 5987435 3711702 admonishing 28357832 3711703 sumac 39654943 3712001 flanking 5987435 3712003 combed 39654943 3712301 Eulerian 5987435 3712302 dubbed 28357832 3712303 Kane 39654943 3712501 annihilates 5987435 3712602 Wotan 28357832 3712603 snatching 39654943 3712701 grazing 5987435 3712702 Baird 28357832 3712703 celery 39654943 3713601 handgun 5987435 3713602 foldout 28357832 3713603 mystic 39654943 3713801 intelligibility 5987435 3713802 Augustine 28357832 3713803 teethe 39654943 3713901 scholastics 5987435 3716001 audiology 5987435 3716201 wallet 5987435 3716202 parters 28357832 3716301 eschew 5987435 3716302 quitter 28357832 3716303 neat 39654943 3718001 jarring 5987435 3718002 tinily 28357832 3718003 balled 39654943 3718012 impulsive 28357832 3718013 starlet 39654943 3718021 lawgiver 5987435 3718022 stated 28357832 3718023 readable 39654943 3718032 testicle 28357832 3718033 Parsifal 39654943 3718041 Punjab 5987435 3718042 Merritt 28357832 3718043 Quixotism 39654943 3718051 sureties 5987435 3718052 puddings 28357832 3718053 tapestry 39654943 3718061 trimmings 5987435 3718062 humility 28357832 3718101 tragedies 5987435 3718102 skulking 28357832 3718103 flint 39654943 3718201 relaxing 5987435 3718202 offload 28357832 3718402 suites 28357832 3718403 lists 39654943 3718601 vacuuming 5987435 3718602 dentally 28357832 3718603 humanness 39654943 3718801 inch 5987435 3718802 Weissmuller 28357832 3718803 irresponsibly 39654943 3718811 repetitions 5987435 3718812 Antares 28357832 3719101 ventilate 5987435 3719102 pityingly 28357832 3719103 interdependent 39654943 3719201 Graves 5987435 3730501 neonatal 5987435 3730502 scribbled 28357832 3730503 chafe 39654943 3731901 realtor 5987435 3736001 elite 5987435 3736002 funereal 28357832 3738001 Conley 5987435 3738002 lectured 28357832 3738003 Abraham 39654943 3738011 groupings 5987435 3738012 dissociate 28357832 3738013 coexist 39654943 3738101 rusting 5987435 3738102 galling 28357832 3738103 obliterates 39654943 3738201 resumes 5987435 3738202 analyzable 28357832 3738203 terminator 39654943
select sum(price) from t3,t2 where t2.fld1 = t3.t2nr and t3.companynr = 512and t3.t2nr = 38008and t2.fld1 = 38008or t2.fld1= t3.t2nr and t3.t2nr = 38008and t2.fld1 = 38008;
sum(price) 234298
select t2.fld1,sum(price) from t3,t2 where t2.fld1 = t3.t2nr and t3.companynr = 512and t3.t2nr = 38008and t2.fld1 = 38008or t2.fld1 = t3.t2nr and t3.t2nr = 38008and t2.fld1 = 38008or t3.t2nr = t2.fld1 and t2.fld1 = 38008 group by t2.fld1;
fld1 sum(price) 038008234298
explain select fld3 from t2 where 1>2or2>3;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible WHERE
explain select fld3 from t2 where fld1=fld1;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t2 ALL NULL NULL NULL NULL 1199
select companynr,fld1 from t2 HAVING fld1=250501or fld1=250502;
companynr fld1 34250501 34250502
select companynr,fld1 from t2 WHERE fld1>=250501 HAVING fld1<=250502;
companynr fld1 34250501 34250502
select companynr,count(*) as count,sum(fld1) as sum from t2 group by companynr having count > 40and sum/count >= 120000;
companynr count sum 008210355753 299514473298 347017788966 3758883602098 415212816335
select companynr from t2 group by companynr having count(*) > 40and sum(fld1)/count(*) >= 120000;
companynr 00 29 34 37 41
select t2.companynr,companyname,count(*) from t2,t4 where t2.companynr=t4.companynr group by companyname having t2.companynr >= 40;
companynr companyname count(*) 68 company 1012 50 company 1111 40 company 537 41 company 652 53 company 74 58 company 823 65 company 910
select count(*) from t2;
count(*) 1199
select count(*) from t2 where fld1 < 098024;
count(*) 387
select min(fld1) from t2 where fld1>= 098024; min(fld1) 98024
select max(fld1) from t2 where fld1>= 098024; max(fld1) 1232609
select count(*) from t3 where price2=76234234;
count(*) 4181
select count(*) from t3 where companynr=512and price2=76234234;
count(*) 4181
explain select min(fld1),max(fld1),count(*) from t2;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Select tables optimized away
select min(fld1),max(fld1),count(*) from t2; min(fld1) max(fld1) count(*) 012326091199
select min(t2nr),max(t2nr) from t3 where t2nr=2115and price2=823742; min(t2nr) max(t2nr) 21152115
select count(*),min(t2nr),max(t2nr) from t3 where name='spates'and companynr=78;
count(*) min(t2nr) max(t2nr) 4181441804
select t2nr,count(*) from t3 where name='gems' group by t2nr limit 20;
t2nr count(*) 91 191 291 391 491 591 691 791 891 991 1091 1191 1291 1391 1491 1591 1691 1791 1891 1991
select max(t2nr) from t3 where price=983543950; max(t2nr) 41807
select t1.period from t3 = t1 limit 1;
period 1001
select t1.period from t1 as t1 limit 1;
period 9410
select t1.period as "Nuvarande period" from t1 as t1 limit 1;
Nuvarande period 9410
select period as ok_period from t1 limit 1;
ok_period 9410
select period as ok_period from t1 group by ok_period limit 1;
ok_period 9410
select 1+1 as summa from t1 group by summa limit 1;
summa 2
select period as "Nuvarande period" from t1 group by "Nuvarande period" limit 1;
Nuvarande period 9410
show tables;
Tables_in_test
t1
t2
t3
t4
show tables from test like "s%";
Tables_in_test (s%)
show tables from test like "t?";
Tables_in_test (t?)
show full columns from t2;
Field Type Collation Null Key Default Extra Privileges Comment
auto int(11) NULL NO PRI NULL auto_increment #
fld1 int(6) unsigned zerofill NULL NO UNI 000000 #
companynr tinyint(2) unsigned zerofill NULL NO 00 #
fld3 char(30) latin1_swedish_ci NO MUL #
fld4 char(35) latin1_swedish_ci NO #
fld5 char(35) latin1_swedish_ci NO #
fld6 char(4) latin1_swedish_ci NO #
show full columns from t2 from test like 'f%';
Field Type Collation Null Key Default Extra Privileges Comment
fld1 int(6) unsigned zerofill NULL NO UNI 000000 #
fld3 char(30) latin1_swedish_ci NO MUL #
fld4 char(35) latin1_swedish_ci NO #
fld5 char(35) latin1_swedish_ci NO #
fld6 char(4) latin1_swedish_ci NO #
show full columns from t2 from test like 's%';
Field Type Collation Null Key Default Extra Privileges Comment
show keys from t2;
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment Ignored
t2 0 PRIMARY 1 auto A 1199 NULL NULL BTREE NO
t2 0 fld1 1 fld1 A 1199 NULL NULL BTREE NO
t2 1 fld3 1 fld3 A NULL NULL NULL BTREE NO
drop table t4, t3, t2, t1;
DO 1;
DO benchmark(100,1+1),1,1;
do default; ERROR42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 1
do foobar; ERROR42S22: Unknown column 'foobar' in 'DO'
CREATE TABLE t1 (
id mediumint(8) unsigned NOT NULL auto_increment,
pseudo varchar(35) NOT NULL default '',
PRIMARY KEY (id),
UNIQUE KEY pseudo (pseudo)
);
INSERT INTO t1 (pseudo) VALUES ('test');
INSERT INTO t1 (pseudo) VALUES ('test1');
SELECT 1 as rnd1 from t1 where rand() > 2;
rnd1
DROP TABLE t1;
CREATE TABLE t1 (gvid int(10) unsigned default NULL, hmid int(10) unsigned default NULL, volid int(10) unsigned default NULL, mmid int(10) unsigned default NULL, hdid int(10) unsigned default NULL, fsid int(10) unsigned default NULL, ctid int(10) unsigned default NULL, dtid int(10) unsigned default NULL, cost int(10) unsigned default NULL, performance int(10) unsigned default NULL, serialnumber bigint(20) unsigned default NULL, monitored tinyint(3) unsigned default '1', removed tinyint(3) unsigned default '0', target tinyint(3) unsigned default '0', dt_modified timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, name varchar(255) binary default NULL, description varchar(255) default NULL, UNIQUE KEY hmid (hmid,volid)) ENGINE=MyISAM;
INSERT INTO t1 VALUES (200001,2,1,1,100,1,1,1,0,0,0,1,0,1,20020425060057,'\\\\ARKIVIO-TESTPDC\\E$',''),(200002,2,2,1,101,1,1,1,0,0,0,1,0,1,20020425060057,'\\\\ARKIVIO-TESTPDC\\C$',''),(200003,1,3,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,0,1,20020425060427,'c:',NULL);
CREATE TABLE t2 ( hmid int(10) unsigned default NULL, volid int(10) unsigned default NULL, sampletid smallint(5) unsigned default NULL, sampletime datetime default NULL, samplevalue bigint(20) unsigned default NULL, KEY idx1 (hmid,volid,sampletid,sampletime)) ENGINE=MyISAM;
INSERT INTO t2 VALUES (1,3,10,'2002-06-01 08:00:00',35),(1,3,1010,'2002-06-01 12:00:01',35);
SELECT a.gvid, (SUM(CASE b.sampletid WHEN 140 THEN b.samplevalue ELSE 0 END)) as the_success,(SUM(CASE b.sampletid WHEN 141 THEN b.samplevalue ELSE 0 END)) as the_fail,(SUM(CASE b.sampletid WHEN 142 THEN b.samplevalue ELSE 0 END)) as the_size,(SUM(CASE b.sampletid WHEN 143 THEN b.samplevalue ELSE 0 END)) as the_time FROM t1 a, t2 b WHERE a.hmid = b.hmid AND a.volid = b.volid AND b.sampletime >= 'wrong-date-value'AND b.sampletime < 'wrong-date-value'AND b.sampletid IN (140, 141, 142, 143) GROUP BY a.gvid;
gvid the_success the_fail the_size the_time
Warnings:
Warning 1292 Truncated incorrect datetime value: 'wrong-date-value'
Warning 1292 Truncated incorrect datetime value: 'wrong-date-value'
SELECT a.gvid, (SUM(CASE b.sampletid WHEN 140 THEN b.samplevalue ELSE 0 END)) as the_success,(SUM(CASE b.sampletid WHEN 141 THEN b.samplevalue ELSE 0 END)) as the_fail,(SUM(CASE b.sampletid WHEN 142 THEN b.samplevalue ELSE 0 END)) as the_size,(SUM(CASE b.sampletid WHEN 143 THEN b.samplevalue ELSE 0 END)) as the_time FROM t1 a, t2 b WHERE a.hmid = b.hmid AND a.volid = b.volid AND b.sampletime >= NULL AND b.sampletime < NULL AND b.sampletid IN (140, 141, 142, 143) GROUP BY a.gvid;
gvid the_success the_fail the_size the_time
DROP TABLE t1,t2;
create table t1 ( A_Id bigint(20) NOT NULL default '0', A_UpdateBy char(10) NOT NULL default '', A_UpdateDate bigint(20) NOT NULL default '0', A_UpdateSerial int(11) NOT NULL default '0', other_types bigint(20) NOT NULL default '0', wss_type bigint(20) NOT NULL default '0');
INSERT INTO t1 VALUES (102935998719055004,'brade',1029359987,2,102935229116544068,102935229216544093);
select wss_type from t1 where wss_type ='102935229216544106';
wss_type
select wss_type from t1 where wss_type ='102935229216544105';
wss_type
select wss_type from t1 where wss_type ='102935229216544104';
wss_type
select wss_type from t1 where wss_type ='102935229216544093';
wss_type 102935229216544093
select wss_type from t1 where wss_type =102935229216544093;
wss_type 102935229216544093
drop table t1;
select 1+2,"aaaa",3.13*2.0 into @a,@b,@c;
select @a;
@a 3
select @b;
@b
aaaa
select @c;
@c 6.260
create table t1 (a int not null auto_increment primary key);
insert into t1 values ();
insert into t1 values ();
insert into t1 values ();
select * from (t1 as t2 left join t1 as t3 using (a)), t1;
a a 11 21 31 12 22 32 13 23 33
select * from t1, (t1 as t2 left join t1 as t3 using (a));
a a 11 21 31 12 22 32 13 23 33
select * from (t1 as t2 left join t1 as t3 using (a)) straight_join t1;
a a 11 21 31 12 22 32 13 23 33
select * from t1 straight_join (t1 as t2 left join t1 as t3 using (a));
a a 11 21 31 12 22 32 13 23 33
select * from (t1 as t2 left join t1 as t3 using (a)) inner join t1 on t1.a>1;
a a 12 13 22 23 32 33
select * from t1 inner join (t1 as t2 left join t1 as t3 using (a)) on t1.a>1;
a a 21 31 22 32 23 33
select * from (t1 as t2 left join t1 as t3 using (a)) inner join t1 using ( a );
a 1 2 3
select * from t1 inner join (t1 as t2 left join t1 as t3 using (a)) using ( a );
a 1 2 3
select * from (t1 as t2 left join t1 as t3 using (a)) left outer join t1 on t1.a>1;
a a 12 13 22 23 32 33
select * from t1 left outer join (t1 as t2 left join t1 as t3 using (a)) on t1.a>1;
a a 1 NULL 21 22 23 31 32 33
select * from (t1 as t2 left join t1 as t3 using (a)) left join t1 using ( a );
a 1 2 3
select * from t1 left join (t1 as t2 left join t1 as t3 using (a)) using ( a );
a 1 2 3
select * from (t1 as t2 left join t1 as t3 using (a)) natural left join t1;
a 1 2 3
select * from t1 natural left join (t1 as t2 left join t1 as t3 using (a));
a 1 2 3
select * from (t1 as t2 left join t1 as t3 using (a)) right join t1 on t1.a>1;
a a 12 13 22 23 32 33
NULL 1
select * from t1 right join (t1 as t2 left join t1 as t3 using (a)) on t1.a>1;
a a 21 22 23 31 32 33
select * from (t1 as t2 left join t1 as t3 using (a)) right outer join t1 using ( a );
a 1 2 3
select * from t1 right outer join (t1 as t2 left join t1 as t3 using (a)) using ( a );
a 1 2 3
select * from (t1 as t2 left join t1 as t3 using (a)) natural right join t1;
a 1 2 3
select * from t1 natural right join (t1 as t2 left join t1 as t3 using (a));
a 1 2 3
select * from t1 natural join (t1 as t2 left join t1 as t3 using (a));
a 1 2 3
select * from (t1 as t2 left join t1 as t3 using (a)) natural join t1;
a 1 2 3
drop table t1;
CREATE TABLE t1 ( aa char(2), id int(11) NOT NULL auto_increment, t2_id int(11) NOT NULL default '0', PRIMARY KEY (id), KEY replace_id (t2_id)) ENGINE=MyISAM;
INSERT INTO t1 VALUES ("1",8264,2506),("2",8299,2517),("3",8301,2518),("4",8302,2519),("5",8303,2520),("6",8304,2521),("7",8305,2522);
CREATE TABLE t2 ( id int(11) NOT NULL auto_increment, PRIMARY KEY (id)) ENGINE=MyISAM;
INSERT INTO t2 VALUES (2517), (2518), (2519), (2520), (2521), (2522);
select * from t1, t2 WHERE t1.t2_id = t2.id and t1.t2_id > 0 order by t1.id LIMIT 0, 5;
aa id t2_id id 2829925172517 3830125182518 4830225192519 5830325202520 6830425212521
drop table t1,t2;
create table t1 (id1 int NOT NULL);
create table t2 (id2 int NOT NULL);
create table t3 (id3 int NOT NULL);
create table t4 (id4 int NOT NULL, id44 int NOT NULL, KEY (id4));
insert into t1 values (1);
insert into t1 values (2);
insert into t2 values (1);
insert into t4 values (1,1);
explain select * from t1 left join t2 on id1 = id2 left join t3 on id1 = id3
left join t4 on id3 = id4 where id2 = 1or id4 = 1;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t3 system NULL NULL NULL NULL 0 Const row not found 1 SIMPLE t4 const id4 NULL NULL NULL 1 1 SIMPLE t1 ALL NULL NULL NULL NULL 2 1 SIMPLE t2 hash_ALL NULL #hash#$hj 4 test.t1.id1 1 Using where; Using join buffer (flat, BNLH join)
select * from t1 left join t2 on id1 = id2 left join t3 on id1 = id3
left join t4 on id3 = id4 where id2 = 1or id4 = 1;
id1 id2 id3 id4 id44 11 NULL NULL NULL
drop table t1,t2,t3,t4;
create table t1(s varchar(10) not null);
create table t2(s varchar(10) not null primary key);
create table t3(s varchar(10) not null primary key);
insert into t1 values ('one\t'), ('two\t');
insert into t2 values ('one\r'), ('two\t');
insert into t3 values ('one '), ('two\t');
select * from t1 where s = 'one';
s
select * from t2 where s = 'one';
s
select * from t3 where s = 'one';
s
one
select * from t1,t2 where t1.s = t2.s;
s s
two two
select * from t2,t3 where t2.s = t3.s;
s s
two two
drop table t1, t2, t3;
create table t1 (a integer, b integer, index(a), index(b));
create table t2 (c integer, d integer, index(c), index(d));
insert into t1 values (1,2), (2,2), (3,2), (4,2);
insert into t2 values (1,3), (2,3), (3,4), (4,4);
explain select * from t1 left join t2 on a=c where d in (4);
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t2 ref c,d d 5 const 2 Using where 1 SIMPLE t1 ref a a 5 test.t2.c 1 Using join buffer (flat, BKA join); Key-ordered Rowid-ordered scan
select * from t1 left join t2 on a=c where d in (4);
a b c d 3234 4244
explain select * from t1 left join t2 on a=c where d = 4;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t2 ref c,d d 5 const 2 Using where 1 SIMPLE t1 ref a a 5 test.t2.c 1 Using join buffer (flat, BKA join); Key-ordered Rowid-ordered scan
select * from t1 left join t2 on a=c where d = 4;
a b c d 3234 4244
drop table t1, t2;
CREATE TABLE t1 (
i int(11) NOT NULL default '0',
c char(10) NOT NULL default '',
PRIMARY KEY (i),
UNIQUE KEY c (c)
) ENGINE=MyISAM;
INSERT INTO t1 VALUES (1,'a');
INSERT INTO t1 VALUES (2,'b');
INSERT INTO t1 VALUES (3,'c');
EXPLAIN SELECT i FROM t1 WHERE i=1;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 const PRIMARY PRIMARY 4 const 1 Using index
DROP TABLE t1;
CREATE TABLE t1 ( a BLOB, INDEX (a(20)) );
CREATE TABLE t2 ( a BLOB, INDEX (a(20)) );
INSERT INTO t1 VALUES ('one'),('two'),('three'),('four'),('five');
INSERT INTO t2 VALUES ('one'),('two'),('three'),('four'),('five');
INSERT INTO t2 VALUES ('one'),('two'),('three'),('four'),('five');
EXPLAIN SELECT * FROM t1 LEFT JOIN t2 USE INDEX (a) ON t1.a=t2.a;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 ALL NULL NULL NULL NULL 5 1 SIMPLE t2 ref a a 23 test.t1.a 1 Using where
EXPLAIN SELECT * FROM t1 LEFT JOIN t2 FORCE INDEX (a) ON t1.a=t2.a;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 ALL NULL NULL NULL NULL 5 1 SIMPLE t2 ref a a 23 test.t1.a 1 Using where
DROP TABLE t1, t2;
CREATE TABLE t1 ( city char(30) );
INSERT INTO t1 VALUES ('London');
INSERT INTO t1 VALUES ('Paris');
SELECT * FROM t1 WHERE city='London';
city
London
SELECT * FROM t1 WHERE city='london';
city
London
EXPLAIN SELECT * FROM t1 WHERE city='London'AND city='london';
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 ALL NULL NULL NULL NULL 2 Using where
SELECT * FROM t1 WHERE city='London'AND city='london';
city
London
EXPLAIN SELECT * FROM t1 WHERE city LIKE '%london%'AND city='London';
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 ALL NULL NULL NULL NULL 2 Using where
SELECT * FROM t1 WHERE city LIKE '%london%'AND city='London';
city
London
DROP TABLE t1;
create table t1 (a int(11) unsigned, b int(11) unsigned);
insert into t1 values (1,0), (1,1), (18446744073709551615,0);
Warnings:
Warning 1264 Out of range value for column 'a' at row 3
select a-b from t1 order by 1;
a-b 0 1 4294967295
select a-b , (a-b < 0) from t1 order by 1;
a-b (a-b < 0) 00 10 42949672950
select a-b as d, (a-b >= 0), b from t1 group by b having d >= 0;
d (a-b >= 0) b 110 011
select cast((a - b) as unsigned) from t1 order by 1;
cast((a - b) as unsigned) 0 1 4294967295
drop table t1;
create table t1 (a int(11));
select all all * from t1;
a
select distinct distinct * from t1;
a
select all distinct * from t1; ERROR HY000: Incorrect usage of ALL and DISTINCT
select distinct all * from t1; ERROR HY000: Incorrect usage of ALL and DISTINCT
drop table t1;
CREATE TABLE t1 (
kunde_intern_id int(10) unsigned NOT NULL default '0',
kunde_id int(10) unsigned NOT NULL default '0',
FK_firma_id int(10) unsigned NOT NULL default '0',
aktuell enum('Ja','Nein') NOT NULL default 'Ja',
vorname varchar(128) NOT NULL default '',
nachname varchar(128) NOT NULL default '',
geloescht enum('Ja','Nein') NOT NULL default 'Nein',
firma varchar(128) NOT NULL default ''
);
INSERT INTO t1 VALUES
(3964,3051,1,'Ja','Vorname1','1Nachname','Nein','Print Schau XXXX'),
(3965,3051111,1,'Ja','Vorname1111','1111Nachname','Nein','Print Schau XXXX');
SELECT kunde_id ,FK_firma_id ,aktuell, vorname, nachname, geloescht FROM t1
WHERE
(
(
( '' != ''AND firma LIKE CONCAT('%', '', '%')) OR
(vorname LIKE CONCAT('%', 'Vorname1', '%') AND
nachname LIKE CONCAT('%', '1Nachname', '%') AND 'Vorname1' != ''AND'xxxx' != '')
) AND
(
aktuell = 'Ja'AND geloescht = 'Nein'AND FK_firma_id = 2
)
) ;
kunde_id FK_firma_id aktuell vorname nachname geloescht
SELECT kunde_id ,FK_firma_id ,aktuell, vorname, nachname,
geloescht FROM t1
WHERE
(
(
aktuell = 'Ja'AND geloescht = 'Nein'AND FK_firma_id = 2
) AND
(
( '' != ''AND firma LIKE CONCAT('%', '', '%') ) OR
( vorname LIKE CONCAT('%', 'Vorname1', '%') AND
nachname LIKE CONCAT('%', '1Nachname', '%') AND'Vorname1' != ''AND 'xxxx' != '')
)
) ;
kunde_id FK_firma_id aktuell vorname nachname geloescht
SELECT COUNT(*) FROM t1 WHERE
( 0OR (vorname LIKE '%Vorname1%'AND nachname LIKE '%1Nachname%'AND1)) AND FK_firma_id = 2;
COUNT(*) 0
drop table t1;
CREATE TABLE t1 (b BIGINT(20) UNSIGNED NOT NULL, PRIMARY KEY (b));
INSERT INTO t1 VALUES (0x8000000000000000);
SELECT b FROM t1 WHERE b=0x8000000000000000;
b 9223372036854775808
DROP TABLE t1;
CREATE TABLE `t1` ( `gid` int(11) default NULL, `uid` int(11) default NULL);
CREATE TABLE `t2` ( `ident` int(11) default NULL, `level` char(16) default NULL);
INSERT INTO `t2` VALUES (0,'READ');
CREATE TABLE `t3` ( `id` int(11) default NULL, `name` char(16) default NULL);
INSERT INTO `t3` VALUES (1,'fs');
select * from t3 left join t1 on t3.id = t1.uid, t2 where t2.ident in (0, t1.gid, t3.id, 0);
id name gid uid ident level 1 fs NULL NULL 0 READ
drop table t1,t2,t3;
CREATE TABLE t1 (
acct_id int(11) NOT NULL default '0',
profile_id smallint(6) default NULL,
UNIQUE KEY t1$acct_id (acct_id),
KEY t1$profile_id (profile_id)
);
INSERT INTO t1 VALUES (132,17),(133,18);
CREATE TABLE t2 (
profile_id smallint(6) default NULL,
queue_id int(11) default NULL,
seq int(11) default NULL,
KEY t2$queue_id (queue_id)
);
INSERT INTO t2 VALUES (17,31,4),(17,30,3),(17,36,2),(17,37,1);
CREATE TABLE t3 (
id int(11) NOT NULL default '0',
qtype int(11) default NULL,
seq int(11) default NULL,
warn_lvl int(11) default NULL,
crit_lvl int(11) default NULL,
rr1 tinyint(4) NOT NULL default '0',
rr2 int(11) default NULL,
default_queue tinyint(4) NOT NULL default '0',
KEY t3$qtype (qtype),
KEY t3$id (id)
);
INSERT INTO t3 VALUES (30,1,29,NULL,NULL,0,NULL,0),(31,1,28,NULL,NULL,0,NULL,0),
(36,1,34,NULL,NULL,0,NULL,0),(37,1,35,NULL,NULL,0,121,0);
SELECT COUNT(*) FROM t1 a STRAIGHT_JOIN t2 pq STRAIGHT_JOIN t3 q
WHERE
(pq.profile_id = a.profile_id) AND (a.acct_id = 132) AND
(pq.queue_id = q.id) AND (q.rr1 <> 1);
COUNT(*) 4
drop table t1,t2,t3;
create table t1 (f1 int);
insert into t1 values (1),(NULL);
create table t2 (f2 int, f3 int, f4 int);
create index idx1 on t2 (f4);
insert into t2 values (1,2,3),(2,4,6);
select A.f2 from t1 left join t2 A on A.f2 = f1 where A.f3=(select min(f3)
from t2 C where A.f4 = C.f4) or A.f3 IS NULL;
f2 1
NULL
drop table t1,t2;
create table t2 (a tinyint unsigned);
create index t2i on t2(a);
insert into t2 values (0), (254), (255);
explain select * from t2 where a > -1;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t2 index t2i t2i 2 NULL 3 Using where; Using index
select * from t2 where a > -1;
a 0 254 255
drop table t2;
CREATE TABLE t1 (a int, b int, c int);
INSERT INTO t1
SELECT 50, 3, 3 FROM DUAL
WHERE NOT EXISTS
(SELECT * FROM t1 WHERE a = 50AND b = 3);
SELECT * FROM t1;
a b c 5033
INSERT INTO t1
SELECT 50, 3, 3 FROM DUAL
WHERE NOT EXISTS
(SELECT * FROM t1 WHERE a = 50AND b = 3);
select found_rows();
found_rows() 0
SELECT * FROM t1;
a b c 5033
select count(*) from t1;
count(*) 1
select found_rows();
found_rows() 1
select count(*) from t1 limit 2,3;
count(*)
select found_rows();
found_rows() 0
select SQL_CALC_FOUND_ROWS count(*) from t1 limit 2,3;
count(*)
select found_rows();
found_rows() 1
DROP TABLE t1;
CREATE TABLE t1 (a INT, b INT);
(SELECT a, b AS c FROM t1) ORDER BY c+1;
a c
(SELECT a, b AS c FROM t1) ORDER BY b+1;
a c
SELECT a, b AS c FROM t1 ORDER BY c+1;
a c
SELECT a, b AS c FROM t1 ORDER BY b+1;
a c
drop table t1;
create table t1(f1 int, f2 int);
create table t2(f3 int);
select f1 from t1,t2 where f1=f2 and (f1,f2) = ((1,1));
f1
select f1 from t1,t2 where f1=f2 and (f1,NULL) = ((1,1));
f1
select f1 from t1,t2 where f1=f2 and (f1,f2) = ((1,NULL));
f1
insert into t1 values(1,1),(2,null);
insert into t2 values(2);
select * from t1,t2 where f1=f3 and (f1,f2) = (2,null);
f1 f2 f3
select * from t1,t2 where f1=f3 and (f1,f2) <=> (2,null);
f1 f2 f3 2 NULL 2
drop table t1,t2;
create table t1 (f1 int not null auto_increment primary key, f2 varchar(10));
create table t11 like t1;
insert into t1 values(1,""),(2,"");
show table status like 't1%';
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment Max_index_length Temporary
t1 MyISAM 10 Dynamic 220 X X X X X X X X latin1_swedish_ci NULL X N
t11 MyISAM 10 Dynamic 00 X X X X X X X X latin1_swedish_ci NULL X N
select 123 as a from t1 where f1 is null;
a
drop table t1,t11;
CREATE TABLE t1 ( a INT NOT NULL, b INT NOT NULL, UNIQUE idx (a,b) );
INSERT INTO t1 VALUES (1,1),(1,2),(1,3),(1,4);
CREATE TABLE t2 ( a INT NOT NULL, b INT NOT NULL, e INT );
INSERT INTO t2 VALUES ( 1,10,1), (1,10,2), (1,11,1), (1,11,2), (1,2,1), (1,2,2),(1,2,3);
SELECT t2.a, t2.b, IF(t1.b IS NULL,'',e) AS c, COUNT(*) AS d FROM t2 LEFT JOIN
t1 ON t2.a = t1.a AND t2.b = t1.b GROUP BY a, b, c;
a b c d 1211 1221 1231 1102 1112
SELECT t2.a, t2.b, IF(t1.b IS NULL,'',e) AS c, COUNT(*) AS d FROM t2 LEFT JOIN
t1 ON t2.a = t1.a AND t2.b = t1.b GROUP BY t1.a, t1.b, c;
a b c d 1104 1211 1221 1231
SELECT t2.a, t2.b, IF(t1.b IS NULL,'',e) AS c, COUNT(*) AS d FROM t2 LEFT JOIN
t1 ON t2.a = t1.a AND t2.b = t1.b GROUP BY t2.a, t2.b, c;
a b c d 1211 1221 1231 1102 1112
SELECT t2.a, t2.b, IF(t1.b IS NULL,'',e) AS c, COUNT(*) AS d FROM t2,t1
WHERE t2.a = t1.a AND t2.b = t1.b GROUP BY a, b, c;
a b c d 1211 1221 1231
DROP TABLE IF EXISTS t1, t2;
create table t1 (f1 int primary key, f2 int);
create table t2 (f3 int, f4 int, primary key(f3,f4));
insert into t1 values (1,1);
insert into t2 values (1,1),(1,2);
select distinct count(f2) >0 from t1 left join t2 on f1=f3 group by f1;
count(f2) >0 1
drop table t1,t2;
create table t1 (f1 int,f2 int);
insert into t1 values(1,1);
create table t2 (f3 int, f4 int, primary key(f3,f4));
insert into t2 values(1,1);
select * from t1 where f1 in (select f3 from t2 where (f3,f4)= (select f3,f4 from t2));
f1 f2 11
drop table t1,t2;
CREATE TABLE t1(a int, b int, c int, KEY b(b), KEY c(c));
insert into t1 values (1,0,0),(2,0,0);
CREATE TABLE t2 (a int, b varchar(2), c varchar(2), PRIMARY KEY(a));
insert into t2 values (1,'',''), (2,'','');
CREATE TABLE t3 (a int, b int, PRIMARY KEY (a,b), KEY a (a), KEY b (b));
insert into t3 values (1,1),(1,2);
explain select straight_join DISTINCT t2.a,t2.b, t1.c from t1, t3, t2
where (t1.c=t2.a or (t1.c=t3.a and t2.a=t3.b)) and t1.b=556476786and
t2.b like '%%' order by t2.b limit 0,1;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 ref b,c b 5 const 1 Using temporary; Using filesort 1 SIMPLE t3 index PRIMARY,a,b PRIMARY 8 NULL 2 Using index; Using join buffer (flat, BNL join) 1 SIMPLE t2 ALL PRIMARY NULL NULL NULL 2 Range checked for each record (index map: 0x1)
DROP TABLE t1,t2,t3;
CREATE TABLE t1 (a int, INDEX idx(a));
INSERT INTO t1 VALUES (2), (3), (1);
EXPLAIN SELECT * FROM t1 IGNORE INDEX (idx);
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 ALL NULL NULL NULL NULL 3
EXPLAIN SELECT * FROM t1 IGNORE INDEX (a); ERROR42000: Key 'a' doesn't exist in table 't1'
EXPLAIN SELECT * FROM t1 FORCE INDEX (a); ERROR42000: Key 'a' doesn't exist in table 't1'
DROP TABLE t1;
CREATE TABLE t1 (a int, b int);
INSERT INTO t1 VALUES (1,1), (2,1), (4,10);
CREATE TABLE t2 (a int PRIMARY KEY, b int, KEY b (b));
INSERT INTO t2 VALUES (1,NULL), (2,10);
ALTER TABLE t1 ENABLE KEYS;
EXPLAIN SELECT STRAIGHT_JOIN SQL_NO_CACHE COUNT(*) FROM t2, t1 WHERE t1.b = t2.b OR t2.b IS NULL;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t2 index b b 5 NULL 2 Using index 1 SIMPLE t1 ALL NULL NULL NULL NULL 3 Using where; Using join buffer (flat, BNL join)
SELECT STRAIGHT_JOIN SQL_NO_CACHE * FROM t2, t1 WHERE t1.b = t2.b OR t2.b IS NULL;
a b a b 1 NULL 11 1 NULL 21 1 NULL 410 210410
EXPLAIN SELECT STRAIGHT_JOIN SQL_NO_CACHE COUNT(*) FROM t2, t1 WHERE t1.b = t2.b OR t2.b IS NULL;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t2 index b b 5 NULL 2 Using index 1 SIMPLE t1 ALL NULL NULL NULL NULL 3 Using where; Using join buffer (flat, BNL join)
SELECT STRAIGHT_JOIN SQL_NO_CACHE * FROM t2, t1 WHERE t1.b = t2.b OR t2.b IS NULL;
a b a b 1 NULL 11 1 NULL 21 1 NULL 410 210410
DROP TABLE IF EXISTS t1,t2;
CREATE TABLE t1 (key1 float default NULL, UNIQUE KEY key1 (key1));
CREATE TABLE t2 (key2 float default NULL, UNIQUE KEY key2 (key2));
INSERT INTO t1 VALUES (0.3762),(0.3845),(0.6158),(0.7941);
INSERT INTO t2 VALUES (1.3762),(1.3845),(1.6158),(1.7941);
explain select max(key1) from t1 where key1 <= 0.6158;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Select tables optimized away
explain select max(key2) from t2 where key2 <= 1.6158;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Select tables optimized away
explain select min(key1) from t1 where key1 >= 0.3762;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Select tables optimized away
explain select min(key2) from t2 where key2 >= 1.3762;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Select tables optimized away
explain select max(key1), min(key2) from t1, t2
where key1 <= 0.6158and key2 >= 1.3762;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Select tables optimized away
explain select max(key1) from t1 where key1 <= 0.6158and rand() + 0.5 >= 0.5;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 range key1 key1 5 NULL 3 Using where; Using index
explain select min(key1) from t1 where key1 >= 0.3762and rand() + 0.5 >= 0.5;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 range key1 key1 5 NULL 3 Using where; Using index
select max(key1) from t1 where key1 <= 0.6158; max(key1) 0.6158
select max(key2) from t2 where key2 <= 1.6158; max(key2) 1.6158
select min(key1) from t1 where key1 >= 0.3762; min(key1) 0.3762
select min(key2) from t2 where key2 >= 1.3762; min(key2) 1.3762
select max(key1), min(key2) from t1, t2
where key1 <= 0.6158and key2 >= 1.3762; max(key1) min(key2) 0.61581.3762
select max(key1) from t1 where key1 <= 0.6158and rand() + 0.5 >= 0.5; max(key1) 0.3845
select min(key1) from t1 where key1 >= 0.3762and rand() + 0.5 >= 0.5; min(key1) 0.3845
DROP TABLE t1,t2;
CREATE TABLE t1 (i BIGINT UNSIGNED NOT NULL);
INSERT INTO t1 VALUES (10);
SELECT i='1e+01',i=1e+01, i in (1e+01,1e+01), i in ('1e+01','1e+01') FROM t1;
i='1e+01' i=1e+01 i in (1e+01,1e+01) i in ('1e+01','1e+01') 1111
DROP TABLE t1;
create table t1(a bigint unsigned, b bigint);
insert ignore into t1 values (0xfffffffffffffffff, 0xfffffffffffffffff),
(0x10000000000000000, 0x10000000000000000),
(0x8fffffffffffffff, 0x8fffffffffffffff);
Warnings:
Warning 1264 Out of range value for column 'a' at row 1
Warning 1264 Out of range value for column 'b' at row 1
Warning 1264 Out of range value for column 'a' at row 2
Warning 1264 Out of range value for column 'b' at row 2
Warning 1264 Out of range value for column 'b' at row 3
select hex(a), hex(b) from t1;
hex(a) hex(b)
FFFFFFFFFFFFFFFF 7FFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFF 7FFFFFFFFFFFFFFF 8FFFFFFFFFFFFFFF 7FFFFFFFFFFFFFFF
drop table t1;
CREATE TABLE t1 (c0 int);
CREATE TABLE t2 (c0 int);
INSERT INTO t1 VALUES(@@connect_timeout);
INSERT INTO t2 VALUES(@@connect_timeout);
SELECT * FROM t1 JOIN t2 ON t1.c0 = t2.c0 WHERE (t1.c0 <=> @@connect_timeout);
c0 c0
X X
DROP TABLE t1, t2;
End of 4.1 tests
CREATE TABLE t1 (
K2C4 varchar(4) character set latin1 collate latin1_bin NOT NULL default '',
K4N4 varchar(4) character set latin1 collate latin1_bin NOT NULL default '0000',
F2I4 int(11) NOT NULL default '0'
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
INSERT INTO t1 VALUES
('W%RT', '0100', 1),
('W-RT', '0100', 1),
('WART', '0100', 1),
('WART', '0200', 1),
('WERT', '0100', 2),
('WORT','0200', 2),
('WT', '0100', 2),
('W_RT', '0100', 2),
('WaRT', '0100', 3),
('WART', '0300', 3),
('WRT' , '0400', 3),
('WURM', '0500', 3),
('W%T', '0600', 4),
('WA%T', '0700', 4),
('WA_T', '0800', 4);
SELECT K2C4, K4N4, F2I4 FROM t1
WHERE K2C4 = 'WART'AND
(F2I4 = 2AND K2C4 = 'WART'OR (F2I4 = 2OR K4N4 = '0200'));
K2C4 K4N4 F2I4
WART 02001
SELECT K2C4, K4N4, F2I4 FROM t1
WHERE K2C4 = 'WART'AND (K2C4 = 'WART'OR K4N4 = '0200');
K2C4 K4N4 F2I4
WART 01001
WART 02001
WART 03003
DROP TABLE t1;
create table t1 (a int, b int);
create table t2 like t1;
select t1.a from (t1 inner join t2 on t1.a=t2.a) where t2.a=1;
a
select t1.a from ((t1 inner join t2 on t1.a=t2.a)) where t2.a=1;
a
select x.a, y.a, z.a from ( (t1 x inner join t2 y on x.a=y.a) inner join t2 z on y.a=z.a) WHERE x.a=1;
a a a
drop table t1,t2;
create table t1 (s1 varchar(5));
insert into t1 values ('Wall');
select min(s1) from t1 group by s1 with rollup; min(s1)
Wall
Wall
drop table t1;
create table t1 (s1 int) engine=myisam;
insert into t1 values (0);
select avg(distinct s1) from t1 group by s1 with rollup;
avg(distinct s1) 0.0000 0.0000
drop table t1;
create table t1 (s1 int);
insert into t1 values (null),(1);
select distinct avg(s1) as x from t1 group by s1 with rollup;
x
NULL 1.0000
drop table t1;
CREATE TABLE t1 (a int);
CREATE TABLE t2 (a int);
INSERT INTO t1 VALUES (1), (2), (3), (4), (5);
INSERT INTO t2 VALUES (2), (4), (6);
SELECT t1.a FROM t1 STRAIGHT_JOIN t2 ON t1.a=t2.a;
a 2 4
EXPLAIN SELECT t1.a FROM t1 STRAIGHT_JOIN t2 ON t1.a=t2.a;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 ALL NULL NULL NULL NULL 5 Using where 1 SIMPLE t2 hash_ALL NULL #hash#$hj 5 test.t1.a 3 Using where; Using join buffer (flat, BNLH join)
EXPLAIN SELECT t1.a FROM t1 INNER JOIN t2 ON t1.a=t2.a;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t2 ALL NULL NULL NULL NULL 3 Using where 1 SIMPLE t1 hash_ALL NULL #hash#$hj 5 test.t2.a 5 Using where; Using join buffer (flat, BNLH join)
DROP TABLE t1,t2;
select x'3136' + 0, X'3136' + 0, b'10' + 0, B'10' + 0;
x'3136' + 0 X'3136' + 0 b'10' + 0 B'10' + 0 161622
create table t1 (f1 varchar(6) default NULL, f2 int(6) primary key not null);
create table t2 (f3 varchar(5) not null, f4 varchar(5) not null, UNIQUE KEY UKEY (f3,f4));
insert into t1 values (" 2", 2);
insert into t2 values (" 2", " one "),(" 2", " two ");
select * from t1 left join t2 on f1 = f3;
f1 f2 f3 f4 222 one 222 two
drop table t1,t2;
create table t1 (empnum smallint, grp int);
create table t2 (empnum int, name char(5));
insert into t1 values(1,1);
insert into t2 values(1,'bob');
create view v1 as select * from t2 inner join t1 using (empnum);
select * from v1;
empnum name grp 1 bob 1
drop table t1,t2;
drop view v1;
create table t1 (pk int primary key, b int);
create table t2 (pk int primary key, c int);
select pk from t1 inner join t2 using (pk);
pk
drop table t1,t2;
create table t1 (s1 int, s2 char(5), s3 decimal(10));
create view v1 as select s1, s2, 'x' as s3 from t1;
select * from t1 natural join v1;
s1 s2 s3
insert into t1 values (1,'x',5);
select * from t1 natural join v1;
s1 s2 s3
Warnings:
Warning 1292 Truncated incorrect DECIMAL value: 'x'
drop table t1;
drop view v1;
create table t1(a1 int);
create table t2(a2 int);
insert into t1 values(1),(2);
insert into t2 values(1),(2);
create view v2 (c) as select a1 from t1;
select * from t1 natural left join t2;
a1 a2 11 12 21 22
select * from t1 natural right join t2;
a2 a1 11 12 21 22
select * from v2 natural left join t2;
c a2 11 12 21 22
select * from v2 natural right join t2;
a2 c 11 12 21 22
drop table t1, t2;
drop view v2;
create table t1 (a int(10), t1_val int(10));
create table t2 (b int(10), t2_val int(10));
create table t3 (a int(10), b int(10));
insert into t1 values (1,1),(2,2);
insert into t2 values (1,1),(2,2),(3,3);
insert into t3 values (1,1),(2,1),(3,1),(4,1);
select * from t1 natural join t2 natural join t3;
a b t1_val t2_val 1111 2121
select * from t1 natural join t3 natural join t2;
b a t1_val t2_val 1111 1221
drop table t1, t2, t3;
DO IFNULL(NULL, NULL);
SELECT CAST(IFNULL(NULL, NULL) AS DECIMAL);
CAST(IFNULL(NULL, NULL) AS DECIMAL)
NULL
SELECT ABS(IFNULL(NULL, NULL));
ABS(IFNULL(NULL, NULL))
NULL
SELECT IFNULL(NULL, NULL);
IFNULL(NULL, NULL)
NULL SET @OLD_SQL_MODE12595=@@SQL_MODE, @@SQL_MODE='';
SHOW LOCAL VARIABLES LIKE 'SQL_MODE';
Variable_name Value
sql_mode
CREATE TABLE BUG_12595(a varchar(100));
INSERT INTO BUG_12595 VALUES ('hakan%'), ('hakank'), ("ha%an");
SELECT * FROM BUG_12595 WHERE a LIKE 'hakan\%';
a
hakan%
SELECT * FROM BUG_12595 WHERE a LIKE 'hakan*%' ESCAPE '*';
a
hakan%
SELECT * FROM BUG_12595 WHERE a LIKE 'hakan**%' ESCAPE '**'; ERROR HY000: Incorrect arguments to ESCAPE
SELECT * FROM BUG_12595 WHERE a LIKE 'hakan%' ESCAPE '';
a
hakan%
hakank
SELECT * FROM BUG_12595 WHERE a LIKE 'hakan\%' ESCAPE '';
a
SELECT * FROM BUG_12595 WHERE a LIKE 'ha\%an' ESCAPE 0x5c;
a
ha%an
SELECT * FROM BUG_12595 WHERE a LIKE 'ha%%an' ESCAPE '%';
a
ha%an
SELECT * FROM BUG_12595 WHERE a LIKE 'ha\%an' ESCAPE '\\';
a
ha%an
SELECT * FROM BUG_12595 WHERE a LIKE 'ha|%an' ESCAPE '|';
a
ha%an SET @@SQL_MODE='NO_BACKSLASH_ESCAPES';
SHOW LOCAL VARIABLES LIKE 'SQL_MODE';
Variable_name Value
sql_mode NO_BACKSLASH_ESCAPES
SELECT * FROM BUG_12595 WHERE a LIKE 'hakan\%';
a
SELECT * FROM BUG_12595 WHERE a LIKE 'hakan*%' ESCAPE '*';
a
hakan%
SELECT * FROM BUG_12595 WHERE a LIKE 'hakan**%' ESCAPE '**'; ERROR HY000: Incorrect arguments to ESCAPE
SELECT * FROM BUG_12595 WHERE a LIKE 'hakan\%' ESCAPE '\\'; ERROR HY000: Incorrect arguments to ESCAPE
SELECT * FROM BUG_12595 WHERE a LIKE 'hakan%' ESCAPE ''; ERROR HY000: Incorrect arguments to ESCAPE
SELECT * FROM BUG_12595 WHERE a LIKE 'ha\%an' ESCAPE 0x5c;
a
ha%an
SELECT * FROM BUG_12595 WHERE a LIKE 'ha|%an' ESCAPE '|';
a
ha%an
SELECT * FROM BUG_12595 WHERE a LIKE 'hakan\n%' ESCAPE '\n'; ERROR HY000: Incorrect arguments to ESCAPE SET @@SQL_MODE=@OLD_SQL_MODE12595;
DROP TABLE BUG_12595;
create table t1 (a char(1));
create table t2 (a char(1));
insert into t1 values ('a'),('b'),('c');
insert into t2 values ('b'),('c'),('d');
select a from t1 natural join t2;
a
b
c
select * from t1 natural join t2 where a = 'b';
a
b
drop table t1, t2;
CREATE TABLE t1 (`id` TINYINT);
CREATE TABLE t2 (`id` TINYINT);
CREATE TABLE t3 (`id` TINYINT);
INSERT INTO t1 VALUES (1),(2),(3);
INSERT INTO t2 VALUES (2);
INSERT INTO t3 VALUES (3);
SELECT t1.id,t3.id FROM t1 JOIN t2 ON (t2.id=t1.id) LEFT JOIN t3 USING (id); ERROR23000: Column 'id' in FROM is ambiguous
SELECT t1.id,t3.id FROM t1 JOIN t2 ON (t2.notacolumn=t1.id) LEFT JOIN t3 USING (id); ERROR23000: Column 'id' in FROM is ambiguous
SELECT id,t3.id FROM t1 JOIN t2 ON (t2.id=t1.id) LEFT JOIN t3 USING (id); ERROR23000: Column 'id' in FROM is ambiguous
SELECT id,t3.id FROM (t1 JOIN t2 ON (t2.id=t1.id)) LEFT JOIN t3 USING (id); ERROR23000: Column 'id' in FROM is ambiguous
drop table t1, t2, t3;
create table t1 (a int(10),b int(10));
create table t2 (a int(10),b int(10));
insert into t1 values (1,10),(2,20),(3,30);
insert into t2 values (1,10);
select * from t1 inner join t2 using (A);
a b b 11010
select * from t1 inner join t2 using (a);
a b b 11010
drop table t1, t2;
create table t1 (a int, c int);
create table t2 (b int);
create table t3 (b int, a int);
create table t4 (c int);
insert into t1 values (1,1);
insert into t2 values (1);
insert into t3 values (1,1);
insert into t4 values (1);
select * from t1 join t2 join t3 on (t2.b = t3.b and t1.a = t3.a);
a c b b a 11111
select * from t1, t2 join t3 on (t2.b = t3.b and t1.a = t3.a); ERROR42S22: Unknown column 't1.a' in 'ON'
select * from t1 join t2 join t3 join t4 on (t1.a = t4.c and t2.b = t4.c);
a c b b a c 111111
select * from t1 join t2 join t4 using (c);
c a b 111
drop table t1, t2, t3, t4;
create table t1(x int, y int);
create table t2(x int, y int);
create table t3(x int, primary key(x));
insert into t1 values (1, 1), (2, 1), (3, 1), (4, 3), (5, 6), (6, 6);
insert into t2 values (1, 1), (2, 1), (3, 3), (4, 6), (5, 6);
insert into t3 values (1), (2), (3), (4), (5);
select t1.x, t3.x from t1, t2, t3 where t1.x = t2.x and t3.x >= t1.y and t3.x <= t2.y;
x x 11 21 31 32 33 43 44 45
drop table t1,t2,t3;
create table t1 (id char(16) not null default '', primary key (id));
insert into t1 values ('100'),('101'),('102');
create table t2 (id char(16) default null);
insert into t2 values (1);
create view v1 as select t1.id from t1;
create view v2 as select t2.id from t2;
create view v3 as select (t1.id+2) as id from t1 natural left join t2;
select t1.id from t1 left join v2 using (id);
id 100 101 102
select t1.id from v2 right join t1 using (id);
id 100 101 102
select t1.id from t1 left join v3 using (id);
id 100 101 102
select * from t1 left join v2 using (id);
id 100 101 102
select * from v2 right join t1 using (id);
id 100 101 102
select * from t1 left join v3 using (id);
id 100 101 102
select v1.id from v1 left join v2 using (id);
id 100 101 102
select v1.id from v2 right join v1 using (id);
id 100 101 102
select v1.id from v1 left join v3 using (id);
id 100 101 102
select * from v1 left join v2 using (id);
id 100 101 102
select * from v2 right join v1 using (id);
id 100 101 102
select * from v1 left join v3 using (id);
id 100 101 102
drop table t1, t2;
drop view v1, v2, v3;
create table t1 (id int(11) not null default '0');
insert into t1 values (123),(191),(192);
create table t2 (id char(16) character set utf8 not null);
insert into t2 values ('58013'),('58014'),('58015'),('58016');
create table t3 (a_id int(11) not null, b_id char(16) character set utf8);
insert into t3 values (123,null),(123,null),(123,null),(123,null),(123,null),(123,'58013');
select count(*)
from t1 inner join (t3 left join t2 on t2.id = t3.b_id) on t1.id = t3.a_id;
count(*) 6
select count(*)
from t1 inner join (t2 right join t3 on t2.id = t3.b_id) on t1.id = t3.a_id;
count(*) 6
drop table t1,t2,t3;
create table t1 (a int);
create table t2 (b int);
create table t3 (c int);
select * from t1 join t2 join t3 on (t1.a=t3.c);
a b c
select * from t1 join t2 left join t3 on (t1.a=t3.c);
a b c
select * from t1 join t2 right join t3 on (t1.a=t3.c);
a b c
select * from t1 join t2 straight_join t3 on (t1.a=t3.c);
a b c
drop table t1, t2 ,t3;
create table t1(f1 int, f2 date);
insert into t1 values(1,'2005-01-01'),(2,'2005-09-01'),(3,'2005-09-30'),
(4,'2005-10-01'),(5,'2005-12-30');
select * from t1 where f2 >= 0 order by f2;
f1 f2 12005-01-01 22005-09-01 32005-09-30 42005-10-01 52005-12-30
select * from t1 where f2 >= '0000-00-00' order by f2;
f1 f2 12005-01-01 22005-09-01 32005-09-30 42005-10-01 52005-12-30
select * from t1 where f2 >= '2005-09-31' order by f2;
f1 f2 42005-10-01 52005-12-30
select * from t1 where f2 >= '2005-09-3a' order by f2;
f1 f2 32005-09-30 42005-10-01 52005-12-30
Warnings:
Warning 1292 Truncated incorrect date value: '2005-09-3a'
select * from t1 where f2 <= '2005-09-31' order by f2;
f1 f2 12005-01-01 22005-09-01 32005-09-30
select * from t1 where f2 <= '2005-09-3a' order by f2;
f1 f2 12005-01-01 22005-09-01
Warnings:
Warning 1292 Truncated incorrect date value: '2005-09-3a'
drop table t1;
create table t1 (f1 int, f2 int);
insert into t1 values (1, 30), (2, 20), (3, 10);
create algorithm=merge view v1 as select f1, f2 from t1;
create algorithm=merge view v2 (f2, f1) as select f1, f2 from t1;
create algorithm=merge view v3 as select t1.f1 as f2, t1.f2 as f1 from t1;
select t1.f1 as x1, f1 from t1 order by t1.f1;
x1 f1 11 22 33
select v1.f1 as x1, f1 from v1 order by v1.f1;
x1 f1 11 22 33
select v2.f1 as x1, f1 from v2 order by v2.f1;
x1 f1 1010 2020 3030
select v3.f1 as x1, f1 from v3 order by v3.f1;
x1 f1 1010 2020 3030
select f1, f2, v1.f1 as x1 from v1 order by v1.f1;
f1 f2 x1 1301 2202 3103
select f1, f2, v2.f1 as x1 from v2 order by v2.f1;
f1 f2 x1 10310 20220 30130
select f1, f2, v3.f1 as x1 from v3 order by v3.f1;
f1 f2 x1 10310 20220 30130
drop table t1;
drop view v1, v2, v3;
CREATE TABLE t1(key_a int4 NOT NULL, optimus varchar(32), PRIMARY KEY(key_a));
CREATE TABLE t2(key_a int4 NOT NULL, prime varchar(32), PRIMARY KEY(key_a));
CREATE table t3(key_a int4 NOT NULL, key_b int4 NOT NULL, foo varchar(32),
PRIMARY KEY(key_a,key_b));
INSERT INTO t1 VALUES (0,'');
INSERT INTO t1 VALUES (1,'i');
INSERT INTO t1 VALUES (2,'j');
INSERT INTO t1 VALUES (3,'k');
INSERT INTO t2 VALUES (1,'r');
INSERT INTO t2 VALUES (2,'s');
INSERT INTO t2 VALUES (3,'t');
INSERT INTO t3 VALUES (1,5,'x');
INSERT INTO t3 VALUES (1,6,'y');
INSERT INTO t3 VALUES (2,5,'xx');
INSERT INTO t3 VALUES (2,6,'yy');
INSERT INTO t3 VALUES (2,7,'zz');
INSERT INTO t3 VALUES (3,5,'xxx');
SELECT t2.key_a,foo
FROM t1 INNER JOIN t2 ON t1.key_a = t2.key_a
INNER JOIN t3 ON t1.key_a = t3.key_a
WHERE t2.key_a=2and key_b=5;
key_a foo 2 xx
EXPLAIN SELECT t2.key_a,foo
FROM t1 INNER JOIN t2 ON t1.key_a = t2.key_a
INNER JOIN t3 ON t1.key_a = t3.key_a
WHERE t2.key_a=2and key_b=5;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 const PRIMARY PRIMARY 4 const 1 Using index 1 SIMPLE t2 const PRIMARY PRIMARY 4 const 1 Using index 1 SIMPLE t3 const PRIMARY PRIMARY 8 const,const 1
SELECT t2.key_a,foo
FROM t1 INNER JOIN t2 ON t2.key_a = t1.key_a
INNER JOIN t3 ON t1.key_a = t3.key_a
WHERE t2.key_a=2and key_b=5;
key_a foo 2 xx
EXPLAIN SELECT t2.key_a,foo
FROM t1 INNER JOIN t2 ON t2.key_a = t1.key_a
INNER JOIN t3 ON t1.key_a = t3.key_a
WHERE t2.key_a=2and key_b=5;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 const PRIMARY PRIMARY 4 const 1 Using index 1 SIMPLE t2 const PRIMARY PRIMARY 4 const 1 Using index 1 SIMPLE t3 const PRIMARY PRIMARY 8 const,const 1
DROP TABLE t1,t2,t3;
create table t1 (f1 int);
insert into t1 values(1),(2);
create table t2 (f2 int, f3 int, key(f2));
insert into t2 values(1,1),(2,2);
create table t3 (f4 int not null);
insert into t3 values (2),(2),(2);
select f1,(select count(*) from t2,t3 where f2=f1 and f3=f4) as count from t1;
f1 count 10 23
drop table t1,t2,t3;
create table t1 (f1 int unique);
create table t2 (f2 int unique);
create table t3 (f3 int unique);
insert into t1 values(1),(2);
insert into t2 values(1),(2);
insert into t3 values(1),(NULL);
select * from t3 where f3 is null;
f3
NULL
select t2.f2 from t1 left join t2 on f1=f2 join t3 on f1=f3 where f1=1;
f2 1
drop table t1,t2,t3;
create table t1(f1 char, f2 char not null);
insert into t1 values(null,'a');
create table t2 (f2 char not null);
insert into t2 values('b');
select * from t1 left join t2 on f1=t2.f2 where t1.f2='a';
f1 f2 f2
NULL a NULL
drop table t1,t2;
select * from (select * left join t on f1=f2) tt; ERROR42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'left join t on f1=f2) tt' at line 1
CREATE TABLE t1 (sku int PRIMARY KEY, pr int);
CREATE TABLE t2 (sku int PRIMARY KEY, sppr int, name varchar(255));
INSERT INTO t1 VALUES
(10, 10), (20, 10), (30, 20), (40, 30), (50, 10), (60, 10), (70, 10);
INSERT INTO t2 VALUES
(10, 10, 'aaa'), (20, 10, 'bbb'), (30, 10, 'ccc'), (40, 20, 'ddd'),
(50, 10, 'eee'), (60, 20, 'fff'), (70, 20, 'ggg'), (80, 30, 'hhh');
SELECT t2.sku, t2.sppr, t2.name, t1.sku, t1.pr
FROM t2, t1 WHERE t2.sku=20AND (t2.sku=t1.sku OR t2.sppr=t1.sku);
sku sppr name sku pr 2010 bbb 1010 2010 bbb 2010
EXPLAIN
SELECT t2.sku, t2.sppr, t2.name, t1.sku, t1.pr
FROM t2, t1 WHERE t2.sku=20AND (t2.sku=t1.sku OR t2.sppr=t1.sku);
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t2 const PRIMARY PRIMARY 4 const 1 1 SIMPLE t1 range PRIMARY PRIMARY 4 NULL 2 Using index condition; Rowid-ordered scan
DROP TABLE t1,t2; SET SQL_MODE='NO_UNSIGNED_SUBTRACTION';
CREATE TABLE t1 (i TINYINT UNSIGNED NOT NULL);
INSERT t1 SET i = 0;
UPDATE t1 SET i = -1;
Warnings:
Warning 1264 Out of range value for column 'i' at row 1
SELECT * FROM t1;
i 0
UPDATE t1 SET i = CAST(i - 1 AS SIGNED);
Warnings:
Warning 1264 Out of range value for column 'i' at row 1
SELECT * FROM t1;
i 0
UPDATE t1 SET i = i - 1;
Warnings:
Warning 1264 Out of range value for column 'i' at row 1
SELECT * FROM t1;
i 0
DROP TABLE t1; SET SQL_MODE=default;
create table t1 (a int);
insert into t1 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
create table t2 (a int, b int, c int, e int, primary key(a,b,c));
insert into t2 select A.a, B.a, C.a, C.a from t1 A, t1 B, t1 C;
analyze table t2;
Table Op Msg_type Msg_text
test.t2 analyze status Engine-independent statistics collected
test.t2 analyze status OK
select 'In next EXPLAIN, B.rows must be exactly 10:' Z;
Z
In next EXPLAIN, B.rows must be exactly 10:
explain select * from t2 A, t2 B where A.a=5and A.b=5and A.C<5 and B.a=5and B.b=A.e and (B.b =1or B.b = 3or B.b=5);
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE A range PRIMARY PRIMARY 12 NULL 4 Using index condition; Using where; Rowid-ordered scan 1 SIMPLE B ref PRIMARY PRIMARY 8 const,test.A.e 10 Using join buffer (flat, BKA join); Key-ordered Rowid-ordered scan
drop table t1, t2;
CREATE TABLE t1 (a int PRIMARY KEY, b int, INDEX(b));
INSERT INTO t1 VALUES (1, 3), (9,4), (7,5), (4,5), (6,2),
(3,1), (5,1), (8,9), (2,2), (0,9);
CREATE TABLE t2 (c int, d int, f int, INDEX(c,f));
INSERT INTO t2 VALUES
(1,0,0), (1,0,1), (2,0,0), (2,0,1), (3,0,0), (4,0,1),
(5,0,0), (5,0,1), (6,0,0), (0,0,1), (7,0,0), (7,0,1),
(0,0,0), (0,0,1), (8,0,0), (8,0,1), (9,0,0), (9,0,1);
EXPLAIN
SELECT a, c, d, f FROM t1,t2 WHERE a=c AND b BETWEEN 4AND6;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 range PRIMARY,b b 5 NULL 3 Using index condition; Rowid-ordered scan 1 SIMPLE t2 ref c c 5 test.t1.a 2 Using join buffer (flat, BKA join); Key-ordered Rowid-ordered scan
EXPLAIN
SELECT a, c, d, f FROM t1,t2 WHERE a=c AND b BETWEEN 4AND6AND a > 0;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 range PRIMARY,b b 5 NULL 3 Using index condition; Using where; Rowid-ordered scan 1 SIMPLE t2 ref c c 5 test.t1.a 2 Using join buffer (flat, BKA join); Key-ordered Rowid-ordered scan
DROP TABLE t1, t2;
create table t1 (
a int unsigned not null auto_increment primary key,
b bit not null,
c bit not null
);
create table t2 (
a int unsigned not null auto_increment primary key,
b bit not null,
c int unsigned not null,
d varchar(50)
);
insert into t1 (b,c) values (0,1), (0,1);
insert into t2 (b,c) values (0,1);
select t1.a, t1.b + 0, t1.c + 0, t2.a, t2.b + 0, t2.c, t2.d
from t1 left outer join t2 on t1.a = t2.c and t2.b <> 1
where t1.b <> 1 order by t1.a;
a t1.b + 0 t1.c + 0 a t2.b + 0 c d 101101 NULL 201 NULL NULL NULL NULL
drop table t1,t2;
SELECT 0.9888889889 * 1.011111411911; 0.9888889889 * 1.011111411911 0.9998769417899202067879
prepare stmt from 'select 1 as " a "';
Warnings:
Warning 1466 Leading spaces are removed from name ' a '
execute stmt;
a 1
CREATE TABLE t1 (a int NOT NULL PRIMARY KEY, b int NOT NULL);
INSERT INTO t1 VALUES (1,1), (2,2), (3,3), (4,4);
CREATE TABLE t2 (c int NOT NULL, INDEX idx(c));
INSERT INTO t2 VALUES
(1), (1), (1), (1), (1), (1), (1), (1),
(2), (2), (2), (2),
(3), (3),
(4);
EXPLAIN SELECT b FROM t1, t2 WHERE b=c AND a=1;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 const PRIMARY PRIMARY 4 const 1 1 SIMPLE t2 ref idx idx 4 const 8 Using index
EXPLAIN SELECT b FROM t1, t2 WHERE b=c AND a=4;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 const PRIMARY PRIMARY 4 const 1 1 SIMPLE t2 ref idx idx 4 const 1 Using index
DROP TABLE t1, t2;
CREATE TABLE t1 (id int NOT NULL PRIMARY KEY, a int);
INSERT INTO t1 VALUES (1,2), (2,NULL), (3,2);
CREATE TABLE t2 (b int, c INT, INDEX idx1(b));
INSERT INTO t2 VALUES (2,1), (3,2);
CREATE TABLE t3 (d int, e int, INDEX idx1(d));
INSERT INTO t3 VALUES (2,10), (2,20), (1,30), (2,40), (2,50), (1,60), (3,70), (1,80), (3,90);
EXPLAIN
SELECT * FROM t1 LEFT JOIN t2 ON t2.b=t1.a INNER JOIN t3 ON t3.d=t1.id
WHERE t1.id=2;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 const PRIMARY PRIMARY 4 const 1 1 SIMPLE t2 const idx1 NULL NULL NULL 1 1 SIMPLE t3 ref idx1 idx1 5 const 4
SELECT * FROM t1 LEFT JOIN t2 ON t2.b=t1.a INNER JOIN t3 ON t3.d=t1.id
WHERE t1.id=2;
id a b c d e 2 NULL NULL NULL 210 2 NULL NULL NULL 220 2 NULL NULL NULL 240 2 NULL NULL NULL 250
DROP TABLE t1,t2,t3;
create table t1 (c1 varchar(1), c2 int, c3 int, c4 int, c5 int, c6 int,
c7 int, c8 int, c9 int, fulltext key (`c1`));
select distinct match (`c1`) against ('z') , c2, c3, c4,c5, c6,c7, c8
from t1 where c9=1 order by c2, c2;
match (`c1`) against ('z') c2 c3 c4 c5 c6 c7 c8
drop table t1;
CREATE TABLE t1 (pk varchar(10) PRIMARY KEY, fk varchar(16));
CREATE TABLE t2 (pk varchar(16) PRIMARY KEY, fk varchar(10));
INSERT INTO t1 VALUES
('d','dddd'), ('i','iii'), ('a','aa'), ('b','bb'), ('g','gg'),
('e','eee'), ('c','cccc'), ('h','hhh'), ('j','jjj'), ('f','fff');
INSERT INTO t2 VALUES
('jjj', 'j'), ('cc','c'), ('ccc','c'), ('aaa', 'a'), ('jjjj','j'),
('hhh','h'), ('gg','g'), ('fff','f'), ('ee','e'), ('ffff','f'),
('bbb','b'), ('ff','f'), ('cccc','c'), ('dddd','d'), ('jj','j'),
('aaaa','a'), ('bb','b'), ('eeee','e'), ('aa','a'), ('hh','h');
EXPLAIN SELECT t2.*
FROM t1 JOIN t2 ON t2.fk=t1.pk
WHERE t2.fk < 'c'AND t2.pk=t1.fk;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 range PRIMARY PRIMARY 12 NULL 2 Using index condition; Using where; Rowid-ordered scan 1 SIMPLE t2 eq_ref PRIMARY PRIMARY 18 test.t1.fk 1 Using where; Using join buffer (flat, BKA join); Key-ordered Rowid-ordered scan
EXPLAIN SELECT t2.*
FROM t1 JOIN t2 ON t2.fk=t1.pk
WHERE t2.fk BETWEEN 'a'AND'b'AND t2.pk=t1.fk;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 range PRIMARY PRIMARY 12 NULL 2 Using index condition; Using where; Rowid-ordered scan 1 SIMPLE t2 eq_ref PRIMARY PRIMARY 18 test.t1.fk 1 Using where; Using join buffer (flat, BKA join); Key-ordered Rowid-ordered scan
EXPLAIN SELECT t2.*
FROM t1 JOIN t2 ON t2.fk=t1.pk
WHERE t2.fk IN ('a','b') AND t2.pk=t1.fk;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 range PRIMARY PRIMARY 12 NULL 2 Using index condition; Using where; Rowid-ordered scan 1 SIMPLE t2 eq_ref PRIMARY PRIMARY 18 test.t1.fk 1 Using where; Using join buffer (flat, BKA join); Key-ordered Rowid-ordered scan
DROP TABLE t1,t2;
CREATE TABLE t1 (a int, b varchar(20) NOT NULL, PRIMARY KEY(a));
CREATE TABLE t2 (a int, b varchar(20) NOT NULL,
PRIMARY KEY (a), UNIQUE KEY (b));
INSERT INTO t1 VALUES (1,'a'),(2,'b'),(3,'c');
INSERT INTO t2 VALUES (1,'a'),(2,'b'),(3,'c');
EXPLAIN SELECT t1.a FROM t1 LEFT JOIN t2 ON t2.b=t1.b WHERE t1.a=3;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 const PRIMARY PRIMARY 4 const 1
DROP TABLE t1,t2;
CREATE TABLE t1(id int PRIMARY KEY, b int, e int);
CREATE TABLE t2(i int, a int, INDEX si(i), INDEX ai(a));
CREATE TABLE t3(a int PRIMARY KEY, c char(4), INDEX ci(c));
INSERT INTO t1 VALUES
(1,10,19), (2,20,22), (4,41,42), (9,39,95), (7, 77,79),
(6,63,67), (5,55,58), (3,38,39), (8,81,89);
INSERT INTO t2 VALUES
(21,210), (41,410), (82,820), (83,830), (84,840),
(65,650), (51,510), (37,370), (94,940), (76,760),
(22,220), (33,330), (40,400), (95,950), (38,380),
(67,670), (88,880), (57,570), (96,960), (97,970);
INSERT INTO t3 VALUES
(210,'bb'), (950,'ii'), (400,'ab'), (500,'ee'), (220,'gg'),
(440,'gg'), (310,'eg'), (380,'ee'), (840,'bb'), (830,'ff'),
(230,'aa'), (960,'ii'), (410,'aa'), (510,'ee'), (290,'bb'),
(450,'gg'), (320,'dd'), (390,'hh'), (850,'jj'), (860,'ff');
EXPLAIN
SELECT t3.a FROM t1,t2 FORCE INDEX (si),t3
WHERE t1.id = 8AND t2.i BETWEEN t1.b AND t1.e AND
t3.a=t2.a AND t3.c IN ('bb','ee');
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 const PRIMARY PRIMARY 4 const 1 1 SIMPLE t2 range si si 5 NULL 4 Using index condition; Using where; Rowid-ordered scan 1 SIMPLE t3 eq_ref|filter PRIMARY,ci PRIMARY|ci 4|5 test.t2.a 1 (30%) Using where; Using join buffer (flat, BKA join); Key-ordered Rowid-ordered scan; Using rowid filter
EXPLAIN
SELECT t3.a FROM t1,t2,t3
WHERE t1.id = 8AND t2.i BETWEEN t1.b AND t1.e AND
t3.a=t2.a AND t3.c IN ('bb','ee') ;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 const PRIMARY PRIMARY 4 const 1 1 SIMPLE t2 range si,ai si 5 NULL 4 Using index condition; Using where; Rowid-ordered scan 1 SIMPLE t3 eq_ref|filter PRIMARY,ci PRIMARY|ci 4|5 test.t2.a 1 (30%) Using where; Using join buffer (flat, BKA join); Key-ordered Rowid-ordered scan; Using rowid filter
EXPLAIN
SELECT t3.a FROM t1,t2 FORCE INDEX (si),t3
WHERE t1.id = 9AND t2.i BETWEEN t1.b AND t1.e AND
t3.a=t2.a AND t3.c IN ('bb','ee');
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 const PRIMARY PRIMARY 4 const 1 1 SIMPLE t3 range PRIMARY,ci ci 5 NULL 6 Using index condition; Rowid-ordered scan 1 SIMPLE t2 hash_range si #hash#$hj:si 5:5 test.t3.a 13 Using where; Rowid-ordered scan; Using join buffer (flat, BNLH join)
EXPLAIN
SELECT t3.a FROM t1,t2 FORCE INDEX (si),t3
WHERE t1.id = 8AND (t2.i=t1.b OR t2.i=t1.e) AND t3.a=t2.a AND
t3.c IN ('bb','ee');
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 const PRIMARY PRIMARY 4 const 1 1 SIMPLE t2 range si si 5 NULL 2 Using index condition; Using where; Rowid-ordered scan 1 SIMPLE t3 eq_ref PRIMARY,ci PRIMARY 4 test.t2.a 1 Using where; Using join buffer (flat, BKA join); Key-ordered Rowid-ordered scan
EXPLAIN
SELECT t3.a FROM t1,t2,t3
WHERE t1.id = 8AND (t2.i=t1.b OR t2.i=t1.e) AND t3.a=t2.a AND
t3.c IN ('bb','ee');
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 const PRIMARY PRIMARY 4 const 1 1 SIMPLE t2 range si,ai si 5 NULL 2 Using index condition; Using where; Rowid-ordered scan 1 SIMPLE t3 eq_ref PRIMARY,ci PRIMARY 4 test.t2.a 1 Using where; Using join buffer (flat, BKA join); Key-ordered Rowid-ordered scan
DROP TABLE t1,t2,t3;
CREATE TABLE t1 ( f1 int primary key, f2 int, f3 int, f4 int, f5 int, f6 int, checked_out int);
CREATE TABLE t2 ( f11 int PRIMARY KEY );
INSERT INTO t1 VALUES (1,1,1,0,0,0,0),(2,1,1,3,8,1,0),(3,1,1,4,12,1,0);
INSERT INTO t2 VALUES (62);
SELECT * FROM t1 LEFT JOIN t2 ON f11 = t1.checked_out GROUP BY f1 ORDER BY f2, f3, f4, f5 LIMIT 0, 1;
f1 f2 f3 f4 f5 f6 checked_out f11 1110000 NULL
DROP TABLE t1, t2;
DROP TABLE IF EXISTS t1;
CREATE TABLE t1(a int);
INSERT into t1 values (1), (2), (3);
SELECT * FROM t1 LIMIT 2, -1; ERROR42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '-1' at line 1
DROP TABLE t1;
CREATE TABLE t1 (
ID_with_null int NULL,
ID_better int NOT NULL,
INDEX idx1 (ID_with_null),
INDEX idx2 (ID_better)
);
INSERT INTO t1 VALUES (1,1), (2,1), (null,3), (null,3), (null,3), (null,3);
INSERT INTO t1 SELECT * FROM t1 WHERE ID_with_null IS NULL;
INSERT INTO t1 SELECT * FROM t1 WHERE ID_with_null IS NULL;
INSERT INTO t1 SELECT * FROM t1 WHERE ID_with_null IS NULL;
INSERT INTO t1 SELECT * FROM t1 WHERE ID_with_null IS NULL;
INSERT INTO t1 SELECT * FROM t1 WHERE ID_with_null IS NULL;
SELECT COUNT(*) FROM t1 WHERE ID_with_null IS NULL;
COUNT(*) 128
SELECT COUNT(*) FROM t1 WHERE ID_better=1;
COUNT(*) 2
EXPLAIN SELECT * FROM t1 WHERE ID_better=1AND ID_with_null IS NULL;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 ref idx1,idx2 idx2 4 const 1 Using where
DROP INDEX idx1 ON t1;
CREATE UNIQUE INDEX idx1 ON t1(ID_with_null);
EXPLAIN SELECT * FROM t1 WHERE ID_better=1AND ID_with_null IS NULL;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 ref idx1,idx2 idx2 4 const 1 Using where
DROP TABLE t1;
CREATE TABLE t1 (
ID1_with_null int NULL,
ID2_with_null int NULL,
ID_better int NOT NULL,
INDEX idx1 (ID1_with_null, ID2_with_null),
INDEX idx2 (ID_better)
);
INSERT INTO t1 VALUES (1,1,1), (2,2,1), (3,null,3), (null,3,3), (null,null,3),
(3,null,3), (null,3,3), (null,null,3), (3,null,3), (null,3,3), (null,null,3);
INSERT INTO t1 SELECT * FROM t1 WHERE ID1_with_null IS NULL;
INSERT INTO t1 SELECT * FROM t1 WHERE ID2_with_null IS NULL;
INSERT INTO t1 SELECT * FROM t1 WHERE ID1_with_null IS NULL;
INSERT INTO t1 SELECT * FROM t1 WHERE ID2_with_null IS NULL;
INSERT INTO t1 SELECT * FROM t1 WHERE ID1_with_null IS NULL;
INSERT INTO t1 SELECT * FROM t1 WHERE ID2_with_null IS NULL;
ANALYZE TABLE t1;
Table Op Msg_type Msg_text
test.t1 analyze status Engine-independent statistics collected
test.t1 analyze status OK
SELECT COUNT(*) FROM t1 WHERE ID1_with_null IS NULL AND ID2_with_null=3;
COUNT(*) 24
SELECT COUNT(*) FROM t1 WHERE ID1_with_null=3AND ID2_with_null IS NULL;
COUNT(*) 24
SELECT COUNT(*) FROM t1 WHERE ID1_with_null IS NULL AND ID2_with_null IS NULL;
COUNT(*) 192
SELECT COUNT(*) FROM t1 WHERE ID_better=1;
COUNT(*) 2
EXPLAIN SELECT * FROM t1
WHERE ID_better=1AND ID1_with_null IS NULL AND ID2_with_null=3;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 index_merge idx1,idx2 idx2,idx1 4,10 NULL 1 Using intersect(idx2,idx1); Using where; Using index
EXPLAIN SELECT * FROM t1
WHERE ID_better=1AND ID1_with_null=3AND ID2_with_null=3 IS NULL ;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 ref idx1,idx2 idx2 4 const 2 Using where
EXPLAIN SELECT * FROM t1
WHERE ID_better=1AND ID1_with_null IS NULL AND ID2_with_null IS NULL;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 ref idx1,idx2 idx2 4 const 2 Using where
DROP INDEX idx1 ON t1;
CREATE UNIQUE INDEX idx1 ON t1(ID1_with_null,ID2_with_null);
EXPLAIN SELECT * FROM t1
WHERE ID_better=1AND ID1_with_null IS NULL AND ID2_with_null=3;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 ref idx1,idx2 idx2 4 const 2 Using where
EXPLAIN SELECT * FROM t1
WHERE ID_better=1AND ID1_with_null=3AND ID2_with_null IS NULL ;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 ref idx1,idx2 idx2 4 const 2 Using where
EXPLAIN SELECT * FROM t1
WHERE ID_better=1AND ID1_with_null IS NULL AND ID2_with_null IS NULL;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 ref idx1,idx2 idx2 4 const 2 Using where
EXPLAIN SELECT * FROM t1
WHERE ID_better=1AND ID1_with_null IS NULL AND
(ID2_with_null=1OR ID2_with_null=2);
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 ref|filter idx1,idx2 idx1|idx2 5|4 const 2 (1%) Using index condition; Using where; Using rowid filter
DROP TABLE t1;
CREATE TABLE t1 (a INT, ts TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, KEY ts(ts));
INSERT INTO t1 VALUES (30,"2006-01-03 23:00:00"), (31,"2006-01-03 23:00:00");
ANALYZE TABLE t1;
Table Op Msg_type Msg_text
test.t1 analyze status Engine-independent statistics collected
test.t1 analyze status OK
CREATE TABLE t2 (a INT, dt1 DATETIME, dt2 DATETIME, PRIMARY KEY (a));
INSERT INTO t2 VALUES (30, "2006-01-01 00:00:00", "2999-12-31 00:00:00");
INSERT INTO t2 SELECT a+1,dt1,dt2 FROM t2;
ANALYZE TABLE t2;
Table Op Msg_type Msg_text
test.t2 analyze status Engine-independent statistics collected
test.t2 analyze status OK
EXPLAIN
SELECT * FROM t1 LEFT JOIN t2 ON (t1.a=t2.a) WHERE t1.a=30 AND t1.ts BETWEEN t2.dt1 AND t2.dt2 AND t1.ts BETWEEN "2006-01-01"AND"2006-12-31";
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t2 const PRIMARY PRIMARY 4 const 1 1 SIMPLE t1 range ts ts 4 NULL 2 Using index condition; Using where; Rowid-ordered scan
SELECT * FROM t1 LEFT JOIN t2 ON (t1.a=t2.a) WHERE t1.a=30 AND t1.ts BETWEEN t2.dt1 AND t2.dt2 AND t1.ts BETWEEN "2006-01-01"AND"2006-12-31";
a ts a dt1 dt2 302006-01-0323:00:00302006-01-0100:00:002999-12-3100:00:00
DROP TABLE t1,t2;
create table t1 (a bigint unsigned);
insert into t1 values
(if(1, 9223372036854775808, 1)),
(case when 1 then 9223372036854775808 else 1 end),
(coalesce(9223372036854775808, 1));
select * from t1;
a 9223372036854775808 9223372036854775808 9223372036854775808
drop table t1;
create table t1 select if(1, 9223372036854775808, 1) i, case when 1 then 9223372036854775808 else 1 end c,
coalesce(9223372036854775808, 1) co;
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`i` decimal(19,0) NOT NULL,
`c` decimal(19,0) NOT NULL,
`co` decimal(19,0) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
drop table t1;
select if(1, cast(1111111111111111111 as unsigned), 1) i, case when 1 then cast(1111111111111111111 as unsigned) else 1 end c,
coalesce(cast(1111111111111111111 as unsigned), 1) co;
i c co 111111111111111111111111111111111111111111111111111111111
CREATE TABLE t1 (name varchar(255));
CREATE TABLE t2 (name varchar(255), n int, KEY (name(3)));
INSERT INTO t1 VALUES ('ccc'), ('bb'), ('cc '), ('aa '), ('aa');
INSERT INTO t2 VALUES ('bb',1), ('aa',2), ('cc ',3);
INSERT INTO t2 VALUES (concat('cc ', 0x06), 4);
INSERT INTO t2 VALUES ('cc',5), ('bb ',6), ('cc ',7);
INSERT INTO t2 VALUES ('bb ',8), ('aa',9), ('aa',10), ('bb',11);
SELECT * FROM t2;
name n
bb 1
aa 2
cc 3
cc 4
cc 5
bb 6
cc 7
bb 8
aa 9
aa 10
bb 11
SELECT * FROM t2 ORDER BY name;
name n
aa 2
aa 10
aa 9
bb 1
bb 8
bb 6
bb 11
cc 4
cc 7
cc 5
cc 3
SELECT name, LENGTH(name), n FROM t2 ORDER BY name;
name LENGTH(name) n
aa 22
aa 210
aa 29
bb 21
bb 38
bb 36
bb 211
cc 44
cc 37
cc 25
cc 53
EXPLAIN SELECT name, LENGTH(name), n FROM t2 WHERE name='cc ';
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t2 ref name name 6 const 4 Using where
SELECT name, LENGTH(name), n FROM t2 WHERE name='cc ';
name LENGTH(name) n
cc 53
cc 25
cc 37
EXPLAIN SELECT name , LENGTH(name), n FROM t2 WHERE name LIKE 'cc%';
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t2 range name name 6 NULL 4 Using where
SELECT name , LENGTH(name), n FROM t2 WHERE name LIKE 'cc%';
name LENGTH(name) n
cc 53
cc 44
cc 25
cc 37
EXPLAIN SELECT name , LENGTH(name), n FROM t2 WHERE name LIKE 'cc%' ORDER BY name;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t2 range name name 6 NULL 4 Using where; Using filesort
SELECT name , LENGTH(name), n FROM t2 WHERE name LIKE 'cc%' ORDER BY name;
name LENGTH(name) n
cc 44
cc 53
cc 25
cc 37
EXPLAIN SELECT * FROM t1 LEFT JOIN t2 ON t1.name=t2.name;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 ALL NULL NULL NULL NULL 5 1 SIMPLE t2 ref name name 6 test.t1.name 1 Using where
SELECT * FROM t1 LEFT JOIN t2 ON t1.name=t2.name;
name name n
ccc NULL NULL
bb bb 1
bb bb 6
bb bb 8
bb bb 11
cc cc 3
cc cc 5
cc cc 7
aa aa 2
aa aa 9
aa aa 10
aa aa 2
aa aa 9
aa aa 10
DROP TABLE t1,t2;
CREATE TABLE t1 (name text);
CREATE TABLE t2 (name text, n int, KEY (name(3)));
INSERT INTO t1 VALUES ('ccc'), ('bb'), ('cc '), ('aa '), ('aa');
INSERT INTO t2 VALUES ('bb',1), ('aa',2), ('cc ',3);
INSERT INTO t2 VALUES (concat('cc ', 0x06), 4);
INSERT INTO t2 VALUES ('cc',5), ('bb ',6), ('cc ',7);
INSERT INTO t2 VALUES ('bb ',8), ('aa',9), ('aa',10), ('bb',11);
SELECT * FROM t2;
name n
bb 1
aa 2
cc 3
cc 4
cc 5
bb 6
cc 7
bb 8
aa 9
aa 10
bb 11
SELECT * FROM t2 ORDER BY name;
name n
aa 2
aa 9
aa 10
bb 1
bb 6
bb 8
bb 11
cc 4
cc 3
cc 5
cc 7
SELECT name, LENGTH(name), n FROM t2 ORDER BY name;
name LENGTH(name) n
aa 22
aa 29
aa 210
bb 21
bb 36
bb 38
bb 211
cc 44
cc 53
cc 25
cc 37
EXPLAIN SELECT name, LENGTH(name), n FROM t2 WHERE name='cc ';
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t2 ref name name 6 const 4 Using where
SELECT name, LENGTH(name), n FROM t2 WHERE name='cc ';
name LENGTH(name) n
cc 53
cc 25
cc 37
EXPLAIN SELECT name , LENGTH(name), n FROM t2 WHERE name LIKE 'cc%';
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t2 range name name 6 NULL 4 Using where
SELECT name , LENGTH(name), n FROM t2 WHERE name LIKE 'cc%';
name LENGTH(name) n
cc 53
cc 44
cc 25
cc 37
EXPLAIN SELECT name , LENGTH(name), n FROM t2 WHERE name LIKE 'cc%' ORDER BY name;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t2 range name name 6 NULL 4 Using where; Using filesort
SELECT name , LENGTH(name), n FROM t2 WHERE name LIKE 'cc%' ORDER BY name;
name LENGTH(name) n
cc 44
cc 53
cc 25
cc 37
EXPLAIN SELECT * FROM t1 LEFT JOIN t2 ON t1.name=t2.name;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 ALL NULL NULL NULL NULL 5 1 SIMPLE t2 ref name name 6 test.t1.name 1 Using where
SELECT * FROM t1 LEFT JOIN t2 ON t1.name=t2.name;
name name n
ccc NULL NULL
bb bb 1
bb bb 6
bb bb 8
bb bb 11
cc cc 3
cc cc 5
cc cc 7
aa aa 2
aa aa 9
aa aa 10
aa aa 2
aa aa 9
aa aa 10
DROP TABLE t1,t2;
CREATE TABLE t1 (
access_id int NOT NULL default '0',
name varchar(20) default NULL,
rank int NOT NULL default '0',
KEY idx (access_id)
);
CREATE TABLE t2 (
faq_group_id int NOT NULL default '0',
faq_id int NOT NULL default '0',
access_id int default NULL,
UNIQUE KEY idx1 (faq_id),
KEY idx2 (faq_group_id,faq_id)
);
INSERT INTO t1 VALUES
(1,'Everyone',2),(2,'Help',3),(3,'Technical Support',1),(4,'Chat User',4);
INSERT INTO t2 VALUES
(261,265,1),(490,494,1);
SELECT t2.faq_id
FROM t1 INNER JOIN t2 IGNORE INDEX (idx1)
ON (t1.access_id = t2.access_id)
LEFT JOIN t2 t
ON (t.faq_group_id = t2.faq_group_id AND
find_in_set(t.access_id, '1,4') < find_in_set(t2.access_id, '1,4'))
WHERE
t2.access_id IN (1,4) AND t.access_id IS NULL AND t2.faq_id in (265);
faq_id 265
SELECT t2.faq_id
FROM t1 INNER JOIN t2
ON (t1.access_id = t2.access_id)
LEFT JOIN t2 t
ON (t.faq_group_id = t2.faq_group_id AND
find_in_set(t.access_id, '1,4') < find_in_set(t2.access_id, '1,4'))
WHERE
t2.access_id IN (1,4) AND t.access_id IS NULL AND t2.faq_id in (265);
faq_id 265
DROP TABLE t1,t2;
CREATE TABLE t1 (a INT, b INT, KEY inx (b,a));
INSERT INTO t1 VALUES (1,1), (1,2), (1,3), (1,4), (1,5), (1, 6), (1,7);
EXPLAIN SELECT COUNT(*) FROM t1 f1 INNER JOIN t1 f2
ON ( f1.b=f2.b AND f1.a<f2.a )
WHERE 1AND f1.b NOT IN (100,2232,3343,51111);
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE f1 range inx inx 5 NULL 7 Using where; Using index 1 SIMPLE f2 ref inx inx 5 test.f1.b 1 Using where; Using index
DROP TABLE t1;
CREATE TABLE t1 (c1 INT, c2 INT);
INSERT INTO t1 VALUES (1,11), (2,22), (2,22);
EXPLAIN SELECT c1 FROM t1 WHERE (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT COUNT(c2)))))))))))))))))))))))))))))))) > 0;
id select_type table type possible_keys key key_len ref rows Extra 1 PRIMARY t1 ALL NULL NULL NULL NULL 3 Using where 31 DEPENDENT SUBQUERY NULL NULL NULL NULL NULL NULL NULL No tables used 32 DEPENDENT SUBQUERY NULL NULL NULL NULL NULL NULL NULL No tables used
EXPLAIN SELECT c1 FROM t1 WHERE (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT COUNT(c2))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) > 0; ERROR HY000: Too high level of nesting for select
DROP TABLE t1;
CREATE TABLE t1 (
c1 int(11) NOT NULL AUTO_INCREMENT,
c2 varchar(1000) DEFAULT NULL,
c3 bigint(20) DEFAULT NULL,
c4 bigint(20) DEFAULT NULL,
PRIMARY KEY (c1)
);
EXPLAIN EXTENDED
SELECT join_2.c1
FROM
t1 AS join_0,
t1 AS join_1,
t1 AS join_2,
t1 AS join_3,
t1 AS join_4,
t1 AS join_5,
t1 AS join_6,
t1 AS join_7
WHERE
join_0.c1=join_1.c1 AND
join_1.c1=join_2.c1 AND
join_2.c1=join_3.c1 AND
join_3.c1=join_4.c1 AND
join_4.c1=join_5.c1 AND
join_5.c1=join_6.c1 AND
join_6.c1=join_7.c1 OR
join_0.c2 < '?'AND
join_1.c2 < '?'AND
join_2.c2 > '?'AND
join_2.c2 < '!'AND
join_3.c2 > '?'AND
join_4.c2 = '?'AND
join_5.c2 <> '?'AND
join_6.c2 <> '?'AND
join_7.c2 >= '?'AND
join_0.c1=join_1.c1 AND
join_1.c1=join_2.c1 AND
join_2.c1=join_3.c1 AND
join_3.c1=join_4.c1 AND
join_4.c1=join_5.c1 AND
join_5.c1=join_6.c1 AND
join_6.c1=join_7.c1
GROUP BY
join_3.c1,
join_2.c1,
join_7.c1,
join_1.c1,
join_0.c1;
id select_type table type possible_keys key key_len ref rows filtered Extra 1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
Warnings:
Note 1003 select NULL AS `c1` from `test`.`t1` `join_0` join `test`.`t1` `join_1` join `test`.`t1` `join_2` join `test`.`t1` `join_3` join `test`.`t1` `join_4` join `test`.`t1` `join_5` join `test`.`t1` `join_6` join `test`.`t1` `join_7` where 0 group by NULL,NULL,NULL,NULL,NULL
SHOW WARNINGS;
Level Code Message
Note 1003 select NULL AS `c1` from `test`.`t1` `join_0` join `test`.`t1` `join_1` join `test`.`t1` `join_2` join `test`.`t1` `join_3` join `test`.`t1` `join_4` join `test`.`t1` `join_5` join `test`.`t1` `join_6` join `test`.`t1` `join_7` where 0 group by NULL,NULL,NULL,NULL,NULL
DROP TABLE t1;
SELECT 1 AS ` `;
1
Warnings:
Warning 1474 Name ' ' has become ''
SELECT 1 AS ` `;
1
Warnings:
Warning 1474 Name ' ' has become ''
SELECT 1 AS ` x`;
x 1
Warnings:
Warning 1466 Leading spaces are removed from name ' x'
CREATE VIEW v1 AS SELECT 1 AS ``; ERROR42000: Incorrect column name ''
CREATE VIEW v1 AS SELECT 1 AS ` `; ERROR42000: Incorrect column name ' '
CREATE VIEW v1 AS SELECT 1 AS ` `; ERROR42000: Incorrect column name ' '
CREATE VIEW v1 AS SELECT (SELECT 1 AS ` `); ERROR42000: Incorrect column name ' '
CREATE VIEW v1 AS SELECT 1 AS ` x`;
Warnings:
Warning 1466 Leading spaces are removed from name ' x'
SELECT `x` FROM v1;
x 1
ALTER VIEW v1 AS SELECT 1 AS ` `; ERROR42000: Incorrect column name ' '
DROP VIEW v1;
select str_to_date('2007-10-09','%Y-%m-%d') between '2007/10/01 00:00:00 GMT' and'2007/10/20 00:00:00 GMT' as exp;
exp 1
Warnings:
Warning 1292 Truncated incorrect datetime value: '2007/10/01 00:00:00 GMT'
Warning 1292 Truncated incorrect datetime value: '2007/10/20 00:00:00 GMT'
select str_to_date('2007-10-09','%Y-%m-%d') > '2007/10/01 00:00:00 GMT-6' as exp;
exp 1
Warnings:
Warning 1292 Truncated incorrect datetime value: '2007/10/01 00:00:00 GMT-6'
select str_to_date('2007-10-09','%Y-%m-%d') <= '2007/10/20 00:00:00 GMT-6' as exp;
exp 1
Warnings:
Warning 1292 Truncated incorrect datetime value: '2007/10/20 00:00:00 GMT-6'
select str_to_date('2007-10-09','%Y-%m-%d') <= '2007/10/2000:00:00 GMT-6' as exp;
exp 0
Warnings:
Warning 1292 Truncated incorrect datetime value: '2007/10/2000:00:00 GMT-6'
select str_to_date('2007-10-01','%Y-%m-%d') = '2007-10-1 00:00:00 GMT-6' as exp;
exp 1
Warnings:
Warning 1292 Truncated incorrect datetime value: '2007-10-1 00:00:00 GMT-6'
select str_to_date('2007-10-01','%Y-%m-%d') = '2007-10-01 x00:00:00 GMT-6' as exp;
exp 1
Warnings:
Warning 1292 Truncated incorrect date value: '2007-10-01 x00:00:00 GMT-6'
select str_to_date('2007-10-01','%Y-%m-%d %H:%i:%s') = '2007-10-01 00:00:00 GMT-6' as exp;
exp 1
Warnings:
Warning 1292 Truncated incorrect datetime value: '2007-10-01 00:00:00 GMT-6'
select str_to_date('2007-10-01','%Y-%m-%d %H:%i:%s') = '2007-10-01 00:x00:00 GMT-6' as exp;
exp 1
Warnings:
Warning 1292 Truncated incorrect datetime value: '2007-10-01 00:x00:00 GMT-6'
select str_to_date('2007-10-01','%Y-%m-%d %H:%i:%s') = '2007-10-01 x12:34:56 GMT-6' as exp;
exp 1
Warnings:
Warning 1292 Truncated incorrect date value: '2007-10-01 x12:34:56 GMT-6'
select str_to_date('2007-10-01 12:34:00','%Y-%m-%d %H:%i:%s') = '2007-10-01 12:34x:56 GMT-6' as exp;
exp 1
Warnings:
Warning 1292 Truncated incorrect datetime value: '2007-10-01 12:34x:56 GMT-6'
select str_to_date('2007-10-01 12:34:56','%Y-%m-%d %H:%i:%s') = '2007-10-01 12:34x:56 GMT-6' as exp;
exp 0
Warnings:
Warning 1292 Truncated incorrect datetime value: '2007-10-01 12:34x:56 GMT-6'
select str_to_date('2007-10-01 12:34:56','%Y-%m-%d %H:%i:%s') = '2007-10-01 12:34:56' as exp;
exp 1
select str_to_date('2007-10-01','%Y-%m-%d') = '2007-10-01 12:00:00' as exp;
exp 0
select str_to_date('2007-10-01 12','%Y-%m-%d %H') = '2007-10-01 12:00:00' as exp;
exp 1
select str_to_date('2007-10-01 12:34','%Y-%m-%d %H') = '2007-10-01 12:00:00' as exp;
exp 1
Warnings:
Warning 1292 Truncated incorrect datetime value: '2007-10-01 12:34'
select str_to_date('2007-02-30 12:34','%Y-%m-%d %H:%i') = '2007-02-30 12:34' as exp;
exp 1
select str_to_date('2007-10-00 12:34','%Y-%m-%d %H:%i') = '2007-10-00 12:34' as exp;
exp 1
select str_to_date('2007-10-00','%Y-%m-%d') between '2007/09/01 00:00:00' and'2007/10/20 00:00:00' as exp;
exp 1 set SQL_MODE=TRADITIONAL;
select str_to_date('2007-10-00 12:34','%Y-%m-%d %H:%i') = '2007-10-00 12:34' as exp;
exp
NULL
Warnings:
Warning 1411 Incorrect datetime value: '2007-10-00 12:34' for function str_to_date
select str_to_date('2007-10-01 12:34','%Y-%m-%d %H:%i') = '2007-10-00 12:34' as exp;
exp 0
select str_to_date('2007-10-00 12:34','%Y-%m-%d %H:%i') = '2007-10-01 12:34' as exp;
exp
NULL
Warnings:
Warning 1411 Incorrect datetime value: '2007-10-00 12:34' for function str_to_date
select str_to_date('2007-10-00','%Y-%m-%d') between '2007/09/01' and'2007/10/20' as exp;
exp
NULL
Warnings:
Warning 1411 Incorrect datetime value: '2007-10-00' for function str_to_date set SQL_MODE=DEFAULT;
select str_to_date('2007-10-00','%Y-%m-%d') between ''and'2007/10/20';
str_to_date('2007-10-00','%Y-%m-%d') between ''and'2007/10/20' 1
Warnings:
Warning 1292 Truncated incorrect datetime value: ''
select str_to_date('','%Y-%m-%d') between '2007/10/01'and'2007/10/20';
str_to_date('','%Y-%m-%d') between '2007/10/01'and'2007/10/20' 0
select str_to_date('','%Y-%m-%d %H:%i') = '2007-10-01 12:34';
str_to_date('','%Y-%m-%d %H:%i') = '2007-10-01 12:34' 0
select str_to_date(NULL,'%Y-%m-%d %H:%i') = '2007-10-01 12:34';
str_to_date(NULL,'%Y-%m-%d %H:%i') = '2007-10-01 12:34'
NULL
select str_to_date('2007-10-00 12:34','%Y-%m-%d %H:%i') = '';
str_to_date('2007-10-00 12:34','%Y-%m-%d %H:%i') = '' 0
Warnings:
Warning 1292 Truncated incorrect datetime value: ''
select str_to_date('1','%Y-%m-%d') = '1';
str_to_date('1','%Y-%m-%d') = '1' 0
Warnings:
Warning 1292 Truncated incorrect datetime value: '1'
select str_to_date('1','%Y-%m-%d') = '1';
str_to_date('1','%Y-%m-%d') = '1' 0
Warnings:
Warning 1292 Truncated incorrect datetime value: '1'
select str_to_date('','%Y-%m-%d') = '';
str_to_date('','%Y-%m-%d') = '' 1
Warnings:
Warning 1292 Truncated incorrect datetime value: ''
select str_to_date('2000-01-01','%Y-%m-%d') between '1000-01-01'and'2001-01-01' as exp;
exp 1
select str_to_date('2000-01-01','%Y-%m-%d') between '1000-01-01'and NULL as exp;
exp
NULL
select str_to_date('2000-01-01','%Y-%m-%d') between NULL and'2001-01-01' as exp;
exp
NULL
select str_to_date('2000-01-01','%Y-%m-%d') between '2001-01-01'and NULL as exp;
exp 0
select str_to_date('2000-01-01','%Y-%m-%d') between NULL and'1000-01-01' as exp;
exp 0
select str_to_date('2000-01-01','%Y-%m-%d') between NULL and NULL as exp;
exp
NULL
CREATE TABLE t1 (c11 INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY);
CREATE TABLE t2 (c21 INT UNSIGNED NOT NULL,
c22 INT DEFAULT NULL,
KEY(c21, c22));
CREATE TABLE t3 (c31 INT UNSIGNED NOT NULL DEFAULT 0,
c32 INT DEFAULT NULL,
c33 INT NOT NULL,
c34 INT UNSIGNED DEFAULT 0,
KEY (c33, c34, c32));
INSERT INTO t1 values (),(),(),(),();
INSERT INTO t2 SELECT a.c11, b.c11 FROM t1 a, t1 b;
INSERT INTO t3 VALUES (1, 1, 1, 0),
(2, 2, 0, 0),
(3, 3, 1, 0),
(4, 4, 0, 0),
(5, 5, 1, 0);
SELECT c32 FROM t1, t2, t3 WHERE t1.c11 IN (1, 3, 5) AND
t3.c31 = t1.c11 AND t2.c21 = t1.c11 AND
t3.c33 = 1AND t2.c22 in (1, 3)
ORDER BY c32;
c32 1 1 3 3 5 5
SELECT c32 FROM t1, t2, t3 WHERE t1.c11 IN (1, 3, 5) AND
t3.c31 = t1.c11 AND t2.c21 = t1.c11 AND
t3.c33 = 1AND t2.c22 in (1, 3)
ORDER BY c32 DESC;
c32 5 5 3 3 1 1
DROP TABLE t1, t2, t3;
#
# Bug#30736: Row Size Too Large Error Creating a Table and
# Inserting Data.
#
DROP TABLE IF EXISTS t1;
DROP TABLE IF EXISTS t2;
CREATE TABLE t1(
c1 DECIMAL(10, 2),
c2 FLOAT);
INSERT INTO t1 VALUES (0, 1), (2, 3), (4, 5);
CREATE TABLE t2(
c3 DECIMAL(10, 2))
SELECT
c1 * c2 AS c3
FROM t1;
SELECT * FROM t1;
c1 c2 0.001 2.003 4.005
SELECT * FROM t2;
c3 0.00 6.00 20.00
DROP TABLE t1;
DROP TABLE t2;
CREATE TABLE t1 (c1 BIGINT NOT NULL);
INSERT INTO t1 (c1) VALUES (1);
SELECT * FROM t1 WHERE c1 > NULL + 1;
c1
DROP TABLE t1;
CREATE TABLE t1 (a VARCHAR(10) NOT NULL PRIMARY KEY);
INSERT INTO t1 (a) VALUES ('foo0'), ('bar0'), ('baz0');
SELECT * FROM t1 WHERE a IN (CONCAT('foo', 0), 'bar');
a
foo0
DROP TABLE t1;
CREATE TABLE t1 (a INT, b INT);
CREATE TABLE t2 (a INT, c INT, KEY(a));
INSERT INTO t1 VALUES (1, 1), (2, 2);
INSERT INTO t2 VALUES (1, 1), (1, 2), (1, 3), (1, 4), (1, 5),
(2, 1), (2, 2), (2, 3), (2, 4), (2, 5),
(3, 1), (3, 2), (3, 3), (3, 4), (3, 5),
(4, 1), (4, 2), (4, 3), (4, 4), (4, 5);
FLUSH STATUS;
SELECT DISTINCT b FROM t1 LEFT JOIN t2 USING(a) WHERE c <= 3;
b 1 2
SHOW STATUS LIKE 'Handler_read%';
Variable_name Value
Handler_read_first 0
Handler_read_key 2
Handler_read_last 0
Handler_read_next 10
Handler_read_prev 0
Handler_read_retry 0
Handler_read_rnd 10
Handler_read_rnd_deleted 1
Handler_read_rnd_next 6
DROP TABLE t1, t2;
CREATE TABLE t1 (f1 bigint(20) NOT NULL default '0',
f2 int(11) NOT NULL default '0',
f3 bigint(20) NOT NULL default '0',
f4 varchar(255) NOT NULL default '',
PRIMARY KEY (f1),
KEY key1 (f4),
KEY key2 (f2));
CREATE TABLE t2 (f1 int(11) NOT NULL default '0',
f2 enum('A1','A2','A3') NOT NULL default 'A1',
f3 int(11) NOT NULL default '0',
PRIMARY KEY (f1),
KEY key1 (f3));
CREATE TABLE t3 (f1 bigint(20) NOT NULL default '0',
f2 datetime NOT NULL default '1980-01-01 00:00:00',
PRIMARY KEY (f1));
insert into t1 values (1, 1, 1, 'abc');
insert into t1 values (2, 1, 2, 'def');
insert into t1 values (3, 1, 2, 'def');
insert into t2 values (1, 'A1', 1);
insert into t3 values (1, '1980-01-01');
SELECT a.f3, cr.f4, count(*) count
FROM t2 a
STRAIGHT_JOIN t1 cr ON cr.f2 = a.f1
LEFT JOIN
(t1 cr2
JOIN t3 ae2 ON cr2.f3 = ae2.f1
) ON a.f1 = cr2.f2 AND ae2.f2 < now() - INTERVAL 7 DAY AND
cr.f4 = cr2.f4
GROUP BY a.f3, cr.f4;
f3 f4 count 1 abc 1 1 def 2
drop table t1, t2, t3;
CREATE TABLE t1 (a INT KEY, b INT);
INSERT INTO t1 VALUES (1,1), (2,2), (3,3), (4,4);
EXPLAIN EXTENDED SELECT a, b FROM t1 WHERE a > 1AND a = b LIMIT 2;
id select_type table type possible_keys key key_len ref rows filtered Extra 1 SIMPLE t1 range PRIMARY PRIMARY 4 NULL 3100.00 Using index condition; Using where; Rowid-ordered scan
Warnings:
Note 1003 select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` where `test`.`t1`.`b` = `test`.`t1`.`a` and `test`.`t1`.`a` > 1 limit 2
EXPLAIN EXTENDED SELECT a, b FROM t1 WHERE a > 1AND b = a LIMIT 2;
id select_type table type possible_keys key key_len ref rows filtered Extra 1 SIMPLE t1 range PRIMARY PRIMARY 4 NULL 3100.00 Using index condition; Using where; Rowid-ordered scan
Warnings:
Note 1003 select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` where `test`.`t1`.`b` = `test`.`t1`.`a` and `test`.`t1`.`a` > 1 limit 2
DROP TABLE t1;
#
# Bug#47019: Assertion failed: 0, file .\rt_mbr.c, line 138 when
# forcing a spatial index
#
CREATE TABLE t1(a LINESTRING NOT NULL, SPATIAL KEY(a));
INSERT INTO t1 VALUES
(GEOMFROMTEXT('LINESTRING(-1 -1, 1 -1, -1 -1, -1 1, 1 1)')),
(GEOMFROMTEXT('LINESTRING(-1 -1, 1 -1, -1 -1, -1 1, 1 1)'));
EXPLAIN SELECT 1 FROM t1 NATURAL LEFT JOIN t1 AS t2;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 ALL NULL NULL NULL NULL 2 1 SIMPLE t2 hash_ALL a #hash#$hj 6 test.t1.a 2 Using where; Using join buffer (flat, BNLH join)
SELECT 1 FROM t1 NATURAL LEFT JOIN t1 AS t2; 1 1 1 1 1
EXPLAIN SELECT 1 FROM t1 NATURAL LEFT JOIN t1 AS t2 FORCE INDEX(a);
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 ALL NULL NULL NULL NULL 2 1 SIMPLE t2 hash_ALL a #hash#$hj 6 test.t1.a 2 Using where; Using join buffer (flat, BNLH join)
SELECT 1 FROM t1 NATURAL LEFT JOIN t1 AS t2 FORCE INDEX(a); 1 1 1 1 1
DROP TABLE t1;
#
# Bug #48291 : crash with row() operator,select into @var, and
# subquery returning multiple rows
#
CREATE TABLE t1(a INT);
INSERT INTO t1 VALUES (2),(3);
# Should not crash
SELECT 1 FROM t1 WHERE a <> 1ANDNOT
ROW(1,a) <=> ROW(1,(SELECT 1 FROM t1))
INTO @var0; ERROR21000: Subquery returns more than 1 row
DROP TABLE t1;
#
# Bug #48458: simple query tries to allocate enormous amount of
# memory
#
CREATE TABLE t1(a INT NOT NULL, b YEAR);
INSERT IGNORE INTO t1 VALUES ();
Warnings:
Warning 1364 Field 'a' doesn't have a default value
CREATE TABLE t2(c INT);
# Should not err out because of out-of-memory
SELECT 1 FROM t2 JOIN t1 ON 1=1
WHERE a != '1'ANDNOT a >= b ORNOT ROW(b,a )<> ROW(a,a); 1
DROP TABLE t1,t2;
#
# Bug #49199: Optimizer handles incorrectly:
# field='const1'AND field='const2' in some cases
CREATE TABLE t1(a DATETIME NOT NULL);
INSERT INTO t1 VALUES('2001-01-01');
SELECT * FROM t1 WHERE a='2001-01-01'AND a='2001-01-01 00:00:00';
a 2001-01-0100:00:00
EXPLAIN EXTENDED SELECT * FROM t1 WHERE a='2001-01-01'AND a='2001-01-01 00:00:00';
id select_type table type possible_keys key key_len ref rows filtered Extra 1 SIMPLE t1 system NULL NULL NULL NULL 1100.00
Warnings:
Note 1003 select '2001-01-01 00:00:00' AS `a` from dual where 1
DROP TABLE t1;
CREATE TABLE t1(a DATE NOT NULL);
INSERT INTO t1 VALUES('2001-01-01');
SELECT * FROM t1 WHERE a='2001-01-01'AND a='2001-01-01 00:00:00';
a 2001-01-01
EXPLAIN EXTENDED SELECT * FROM t1 WHERE a='2001-01-01'AND a='2001-01-01 00:00:00';
id select_type table type possible_keys key key_len ref rows filtered Extra 1 SIMPLE t1 system NULL NULL NULL NULL 1100.00
Warnings:
Note 1003 select '2001-01-01' AS `a` from dual where 1
DROP TABLE t1;
CREATE TABLE t1(a TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP);
INSERT INTO t1 VALUES('2001-01-01');
SELECT * FROM t1 WHERE a='2001-01-01'AND a='2001-01-01 00:00:00';
a 2001-01-0100:00:00
EXPLAIN EXTENDED SELECT * FROM t1 WHERE a='2001-01-01'AND a='2001-01-01 00:00:00';
id select_type table type possible_keys key key_len ref rows filtered Extra 1 SIMPLE t1 system NULL NULL NULL NULL 1100.00
Warnings:
Note 1003 select '2001-01-01 00:00:00' AS `a` from dual where 1
DROP TABLE t1;
CREATE TABLE t1(a DATETIME NOT NULL, b DATE NOT NULL);
INSERT INTO t1 VALUES('2001-01-01', '2001-01-01');
SELECT * FROM t1 WHERE a='2001-01-01'AND a=b AND b='2001-01-01 00:00:00';
a b 2001-01-0100:00:002001-01-01
EXPLAIN EXTENDED SELECT * FROM t1 WHERE a='2001-01-01'AND a=b AND b='2001-01-01 00:00:00';
id select_type table type possible_keys key key_len ref rows filtered Extra 1 SIMPLE t1 system NULL NULL NULL NULL 1100.00
Warnings:
Note 1003 select '2001-01-01 00:00:00' AS `a`,'2001-01-01' AS `b` from dual where 1
DROP TABLE t1;
CREATE TABLE t1(a DATETIME NOT NULL, b VARCHAR(20) NOT NULL);
INSERT INTO t1 VALUES('2001-01-01', '2001-01-01');
SELECT * FROM t1 WHERE a='2001-01-01'AND a=b AND b='2001-01-01 00:00:00';
a b
EXPLAIN EXTENDED SELECT * FROM t1 WHERE a='2001-01-01'AND a=b AND b='2001-01-01 00:00:00';
id select_type table type possible_keys key key_len ref rows filtered Extra 1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
Warnings:
Note 1003 select '2001-01-01 00:00:00' AS `a`,'2001-01-01' AS `b` from dual where 0
SELECT * FROM t1 WHERE a='2001-01-01 00:00:00'AND a=b AND b='2001-01-01';
a b 2001-01-0100:00:002001-01-01
EXPLAIN EXTENDED SELECT * FROM t1 WHERE a='2001-01-01 00:00:00'AND a=b AND b='2001-01-01';
id select_type table type possible_keys key key_len ref rows filtered Extra 1 SIMPLE t1 system NULL NULL NULL NULL 1100.00
Warnings:
Note 1003 select '2001-01-01 00:00:00' AS `a`,'2001-01-01' AS `b` from dual where 1
DROP TABLE t1;
CREATE TABLE t1(a DATETIME NOT NULL, b DATE NOT NULL);
INSERT INTO t1 VALUES('2001-01-01', '2001-01-01');
SELECT x.a, y.a, z.a FROM t1 x
JOIN t1 y ON x.a=y.a
JOIN t1 z ON y.a=z.a
WHERE x.a='2001-01-01'AND z.a='2001-01-01 00:00:00';
a a a 2001-01-0100:00:002001-01-0100:00:002001-01-0100:00:00
EXPLAIN EXTENDED SELECT x.a, y.a, z.a FROM t1 x
JOIN t1 y ON x.a=y.a
JOIN t1 z ON y.a=z.a
WHERE x.a='2001-01-01'AND z.a='2001-01-01 00:00:00';
id select_type table type possible_keys key key_len ref rows filtered Extra 1 SIMPLE x system NULL NULL NULL NULL 1100.00 1 SIMPLE y system NULL NULL NULL NULL 1100.00 1 SIMPLE z system NULL NULL NULL NULL 1100.00
Warnings:
Note 1003 select '2001-01-01 00:00:00' AS `a`,'2001-01-01 00:00:00' AS `a`,'2001-01-01 00:00:00' AS `a` from dual where 1
DROP TABLE t1;
#
# Bug #49897: crash in ptr_compare when char(0) NOT NULL
# column is used for ORDER BY
# SET @old_sort_buffer_size= @@session.sort_buffer_size; SET @@sort_buffer_size= 40000;
CREATE TABLE t1(a CHAR(0) NOT NULL);
INSERT IGNORE INTO t1 VALUES (0), (0), (0);
INSERT INTO t1 SELECT t11.a FROM t1 t11, t1 t12;
INSERT INTO t1 SELECT t11.a FROM t1 t11, t1 t12;
INSERT INTO t1 SELECT t11.a FROM t1 t11, t1 t12;
EXPLAIN SELECT a FROM t1 ORDER BY a;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 ALL NULL NULL NULL NULL 24492
SELECT a FROM t1 ORDER BY a;
DROP TABLE t1;
CREATE TABLE t1(a CHAR(0) NOT NULL, b CHAR(0) NOT NULL, c int);
INSERT IGNORE INTO t1 VALUES (0, 0, 0), (0, 0, 2), (0, 0, 1);
INSERT INTO t1 SELECT t11.a, t11.b, t11.c FROM t1 t11, t1 t12;
INSERT INTO t1 SELECT t11.a, t11.b, t11.c FROM t1 t11, t1 t12;
INSERT INTO t1 SELECT t11.a, t11.b, t11.c FROM t1 t11, t1 t12;
EXPLAIN SELECT a FROM t1 ORDER BY a LIMIT 5;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 ALL NULL NULL NULL NULL 24492
SELECT a FROM t1 ORDER BY a LIMIT 5;
a
EXPLAIN SELECT * FROM t1 ORDER BY a, b LIMIT 5;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 ALL NULL NULL NULL NULL 24492
SELECT * FROM t1 ORDER BY a, b LIMIT 5;
a b c 0 2 1 0 2
EXPLAIN SELECT * FROM t1 ORDER BY a, b, c LIMIT 5;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 ALL NULL NULL NULL NULL 24492 Using filesort
SELECT * FROM t1 ORDER BY a, b, c LIMIT 5;
a b c 0 0 0 0 0
EXPLAIN SELECT * FROM t1 ORDER BY c, a LIMIT 5;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 ALL NULL NULL NULL NULL 24492 Using filesort
SELECT * FROM t1 ORDER BY c, a LIMIT 5;
a b c 0 0 0 0 0 SET @@sort_buffer_size= @old_sort_buffer_size;
DROP TABLE t1;
End of 5.0 tests
create table t1(a INT, KEY (a));
INSERT INTO t1 VALUES (1),(2),(3),(4),(5);
SELECT a FROM t1 ORDER BY a LIMIT 2;
a 1 2
SELECT a FROM t1 ORDER BY a LIMIT 2,4294967296;
a 3 4 5
SELECT a FROM t1 ORDER BY a LIMIT 2,4294967297;
a 3 4 5
DROP TABLE t1;
CREATE TABLE t1 (date_key date);
CREATE TABLE t2 (
pk int,
int_nokey int,
int_key int,
date_key date NOT NULL,
date_nokey date,
varchar_key varchar(1)
);
INSERT INTO t2 VALUES
(1,1,1,'0000-00-00',NULL,NULL),
(1,1,1,'0000-00-00',NULL,NULL);
SELECT 1 FROM t2 WHERE pk > ANY (SELECT 1 FROM t2); 1
SELECT COUNT(DISTINCT 1) FROM t2
WHERE date_key = (SELECT 1 FROM t1 WHERE t2.date_key IS NULL) GROUP BY pk;
COUNT(DISTINCT 1)
SELECT date_nokey FROM t2
WHERE int_key IN (SELECT 1 FROM t1)
HAVING date_nokey = '10:41:7'
ORDER BY date_key;
date_nokey
Warnings:
Warning 1292 Truncated incorrect datetime value: '10:41:7'
DROP TABLE t1,t2;
CREATE TABLE t1 (a INT NOT NULL, b INT);
INSERT INTO t1 VALUES (1, 1);
EXPLAIN EXTENDED SELECT * FROM t1 WHERE (a=a AND a=a) OR b > 2;
id select_type table type possible_keys key key_len ref rows filtered Extra 1 SIMPLE t1 system NULL NULL NULL NULL 1100.00
Warnings:
Note 1003 select 1 AS `a`,1 AS `b` from dual where 1
SELECT * FROM t1 WHERE (a=a AND a=a) OR b > 2;
a b 11
DROP TABLE t1;
CREATE TABLE t1 (a INT NOT NULL, b INT NOT NULL, c INT NOT NULL);
EXPLAIN EXTENDED SELECT * FROM t1 WHERE (a=a AND b=b AND c=c) OR b > 20;
id select_type table type possible_keys key key_len ref rows filtered Extra 1 SIMPLE t1 system NULL NULL NULL NULL 00.00 Const row not found
Warnings:
Note 1003 select NULL AS `a`,NULL AS `b`,NULL AS `c` from `test`.`t1` where 1
EXPLAIN EXTENDED SELECT * FROM t1 WHERE (a=a AND a=a AND b=b) OR b > 20;
id select_type table type possible_keys key key_len ref rows filtered Extra 1 SIMPLE t1 system NULL NULL NULL NULL 00.00 Const row not found
Warnings:
Note 1003 select NULL AS `a`,NULL AS `b`,NULL AS `c` from `test`.`t1` where 1
EXPLAIN EXTENDED SELECT * FROM t1 WHERE (a=a AND b=b AND a=a) OR b > 20;
id select_type table type possible_keys key key_len ref rows filtered Extra 1 SIMPLE t1 system NULL NULL NULL NULL 00.00 Const row not found
Warnings:
Note 1003 select NULL AS `a`,NULL AS `b`,NULL AS `c` from `test`.`t1` where 1
DROP TABLE t1;
#
# Bug#45266: Uninitialized variable lead to an empty result.
#
drop table if exists A,AA,B,BB;
CREATE TABLE `A` (
`pk` int(11) NOT NULL AUTO_INCREMENT,
`date_key` date NOT NULL,
`date_nokey` date NOT NULL,
`datetime_key` datetime NOT NULL,
`int_nokey` int(11) NOT NULL,
`time_key` time NOT NULL,
`time_nokey` time NOT NULL,
PRIMARY KEY (`pk`),
KEY `date_key` (`date_key`),
KEY `time_key` (`time_key`),
KEY `datetime_key` (`datetime_key`)
);
CREATE TABLE `AA` (
`pk` int(11) NOT NULL AUTO_INCREMENT,
`int_nokey` int(11) NOT NULL,
`time_key` time NOT NULL,
KEY `time_key` (`time_key`),
PRIMARY KEY (`pk`)
);
CREATE TABLE `B` (
`date_nokey` date NOT NULL,
`date_key` date NOT NULL,
`time_key` time NOT NULL,
`datetime_nokey` datetime NOT NULL,
`varchar_key` varchar(1) NOT NULL,
KEY `date_key` (`date_key`),
KEY `time_key` (`time_key`),
KEY `varchar_key` (`varchar_key`)
);
INSERT INTO `B` VALUES ('2003-07-28','2003-07-28','15:13:38','0000-00-00 00:00:00','f'),('0000-00-00','0000-00-00','00:05:48','2004-07-02 14:34:13','x');
CREATE TABLE `BB` (
`pk` int(11) NOT NULL AUTO_INCREMENT,
`int_nokey` int(11) NOT NULL,
`date_key` date NOT NULL,
`varchar_nokey` varchar(1) NOT NULL,
`date_nokey` date NOT NULL,
PRIMARY KEY (`pk`),
KEY `date_key` (`date_key`)
);
INSERT INTO `BB` VALUES (10,8,'0000-00-00','i','0000-00-00'),(11,0,'2005-08-18','','2005-08-18');
SELECT table1 . `pk` AS field1
FROM
(BB AS table1 INNER JOIN
(AA AS table2 STRAIGHT_JOIN A AS table3
ON ( table3 . `date_key` = table2 . `pk` ))
ON ( table3 . `datetime_key` = table2 . `int_nokey` ))
WHERE ( table3 . `date_key` <= 4AND table2 . `pk` = table1 . `varchar_nokey`)
GROUP BY field1 ;
field1
SELECT table3 .`date_key` field1
FROM
B table1 LEFT JOIN B table3 JOIN
(BB table6 JOIN A table7 ON table6 .`varchar_nokey`)
ON table6 .`int_nokey` ON table6 .`date_key`
WHERE NOT ( table1 .`varchar_key` AND table7 .`pk`) GROUP BY field1;
field1
NULL
SELECT table4 . `time_nokey` AS field1 FROM
(AA AS table1 CROSS JOIN
(AA AS table2 STRAIGHT_JOIN
(B AS table3 STRAIGHT_JOIN A AS table4
ON ( table4 . `date_key` = table3 . `time_key` ))
ON ( table4 . `pk` = table3 . `date_nokey` ))
ON ( table4 . `time_key` = table3 . `datetime_nokey` ))
WHERE ( table4 . `time_key` < table1 . `time_key` AND
table1 . `int_nokey` != 'f')
GROUP BY field1 ORDER BY field1 , field1;
field1
SELECT table1 .`time_key` field2 FROM B table1 LEFT JOIN BB JOIN A table5 ON table5 .`date_nokey` ON table5 .`int_nokey` GROUP BY field2;
field2 00:05:48 15:13:38
drop table A,AA,B,BB;
#end of test for bug#45266
#
# Bug#33546: Slowdown on re-evaluation of constant expressions.
#
CREATE TABLE t1 (a INT);
INSERT INTO t1 VALUES (1), (2), (3), (4), (5), (6), (7), (8), (9), (10);
CREATE TABLE t2 (b INT);
INSERT INTO t2 VALUES (2);
SELECT * FROM t1 WHERE a = 1 + 1;
a 2
EXPLAIN EXTENDED SELECT * FROM t1 WHERE a = 1 + 1;
id select_type table type possible_keys key key_len ref rows filtered Extra 1 SIMPLE t1 ALL NULL NULL NULL NULL 10100.00 Using where
Warnings:
Note 1003 select `test`.`t1`.`a` AS `a` from `test`.`t1` where `test`.`t1`.`a` = <cache>(1 + 1)
SELECT * FROM t1 HAVING a = 1 + 1;
a 2
EXPLAIN EXTENDED SELECT * FROM t1 HAVING a = 1 + 1;
id select_type table type possible_keys key key_len ref rows filtered Extra 1 SIMPLE t1 ALL NULL NULL NULL NULL 10100.00
Warnings:
Note 1003 select `test`.`t1`.`a` AS `a` from `test`.`t1` having `test`.`t1`.`a` = <cache>(1 + 1)
SELECT * FROM t1, t2 WHERE a = b + (1 + 1);
a b 42
EXPLAIN EXTENDED SELECT * FROM t1, t2 WHERE a = b + (1 + 1);
id select_type table type possible_keys key key_len ref rows filtered Extra 1 SIMPLE t2 system NULL NULL NULL NULL 1100.00 1 SIMPLE t1 ALL NULL NULL NULL NULL 10100.00 Using where
Warnings:
Note 1003 select `test`.`t1`.`a` AS `a`,2 AS `b` from `test`.`t1` where `test`.`t1`.`a` = <cache>(2 + (1 + 1))
SELECT * FROM t2 LEFT JOIN t1 ON a = b + 1;
b a 23
EXPLAIN EXTENDED SELECT * FROM t2 LEFT JOIN t1 ON a = b + 1;
id select_type table type possible_keys key key_len ref rows filtered Extra 1 SIMPLE t2 system NULL NULL NULL NULL 1100.00 1 SIMPLE t1 ALL NULL NULL NULL NULL 10100.00 Using where
Warnings:
Note 1003 select 2 AS `b`,`test`.`t1`.`a` AS `a` from `test`.`t1` where 1
EXPLAIN EXTENDED SELECT * FROM t1 WHERE a > UNIX_TIMESTAMP('2009-03-10 00:00:00');
id select_type table type possible_keys key key_len ref rows filtered Extra 1 SIMPLE t1 ALL NULL NULL NULL NULL 10100.00 Using where
Warnings:
Note 1003 select `test`.`t1`.`a` AS `a` from `test`.`t1` where `test`.`t1`.`a` > <cache>(unix_timestamp('2009-03-10 00:00:00'))
CREATE FUNCTION f1() RETURNS INT DETERMINISTIC
BEGIN SET @cnt := @cnt + 1; RETURN1;
END;| SET @cnt := 0;
SELECT * FROM t1 WHERE a = f1();
a 1
SELECT @cnt;
@cnt 1
EXPLAIN EXTENDED SELECT * FROM t1 WHERE a = f1();
id select_type table type possible_keys key key_len ref rows filtered Extra 1 SIMPLE t1 ALL NULL NULL NULL NULL 10100.00 Using where
Warnings:
Note 1003 select `test`.`t1`.`a` AS `a` from `test`.`t1` where `test`.`t1`.`a` = <cache>(`f1`())
DROP TABLE t1, t2;
DROP FUNCTION f1;
# End of bug#33546
#
# BUG#48052: Valgrind warning - uninitialized value in init_read_record()
#
CREATE TABLE t1 (
pk int(11) NOT NULL,
i int(11) DEFAULT NULL,
v varchar(1) DEFAULT NULL,
PRIMARY KEY (pk)
);
INSERT INTO t1 VALUES (2,7,'m');
INSERT INTO t1 VALUES (3,9,'m');
SELECT v
FROM t1
WHERE NOT pk > 0
HAVING v <= 't'
ORDER BY pk;
v
DROP TABLE t1;
#
# Bug#49489 Uninitialized cache led to a wrong result.
#
CREATE TABLE t1(c1 DOUBLE(5,4));
INSERT INTO t1 VALUES (9.1234);
SELECT * FROM t1 WHERE c1 < 9.12345;
c1 9.1234
DROP TABLE t1;
# End of test for bug#49489.
#
# Bug #49517: Inconsistent behavior while using
# NULLable BIGINT and INT columns in comparison
#
CREATE TABLE t1(a BIGINT UNSIGNED NOT NULL, b BIGINT NULL, c INT NULL);
INSERT INTO t1 VALUES(105, NULL, NULL);
SELECT * FROM t1 WHERE b < 102;
a b c
SELECT * FROM t1 WHERE c < 102;
a b c
SELECT * FROM t1 WHERE 102 < b;
a b c
SELECT * FROM t1 WHERE 102 < c;
a b c
DROP TABLE t1;
#
# Bug #54459: Assertion failed: param.sort_length,
# file .\filesort.cc, line 149 (part II)
#
CREATE TABLE t1(a ENUM('') NOT NULL);
INSERT INTO t1 VALUES (), (), ();
EXPLAIN SELECT 1 FROM t1 ORDER BY a COLLATE latin1_german2_ci;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 ALL NULL NULL NULL NULL 3 Using filesort
SELECT 1 FROM t1 ORDER BY a COLLATE latin1_german2_ci; 1 1 1 1
DROP TABLE t1;
#
# Bug #702310: usage of 2 join buffers after ref access to an empty table
#
CREATE TABLE t1 (f1 int) ;
INSERT INTO t1 VALUES (9);
CREATE TABLE t2 (f1 int);
INSERT INTO t2 VALUES (3),(7),(18);
INSERT INTO t2 VALUES (3),(7),(18);
INSERT INTO t2 VALUES (3),(7),(18);
INSERT INTO t2 VALUES (3),(7),(18);
CREATE TABLE t3 (f1 int);
INSERT INTO t3 VALUES (17);
CREATE TABLE t4 (f1 int PRIMARY KEY, f2 varchar(1024)) ;
CREATE TABLE t5 (f1 int) ;
INSERT INTO t5 VALUES (20),(5);
CREATE TABLE t6(f1 int);
INSERT INTO t6 VALUES (9),(7); SET @save_join_buffer_size=@@join_buffer_size,@@join_buffer_size = 2176;
EXPLAIN
SELECT STRAIGHT_JOIN * FROM t2, (t1 LEFT JOIN (t3,t4) ON t1.f1 = t4.f1), t5, t6;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t2 ALL NULL NULL NULL NULL 12 1 SIMPLE t1 ALL NULL NULL NULL NULL 1 Using join buffer (flat, BNL join) 1 SIMPLE t3 ALL NULL NULL NULL NULL 1 Using where; Using join buffer (incremental, BNL join) 1 SIMPLE t4 eq_ref PRIMARY PRIMARY 4 test.t1.f1 1 Using join buffer (incremental, BKA join); Key-ordered Rowid-ordered scan 1 SIMPLE t5 ALL NULL NULL NULL NULL 2 Using join buffer (incremental, BNL join) 1 SIMPLE t6 ALL NULL NULL NULL NULL 2 Using join buffer (incremental, BNL join)
SELECT STRAIGHT_JOIN * FROM t2, (t1 LEFT JOIN (t3,t4) ON t1.f1 = t4.f1), t5, t6;
f1 f1 f1 f1 f2 f1 f1 39 NULL NULL NULL 209 79 NULL NULL NULL 209 189 NULL NULL NULL 209 39 NULL NULL NULL 209 79 NULL NULL NULL 209 189 NULL NULL NULL 209 39 NULL NULL NULL 209 79 NULL NULL NULL 209 189 NULL NULL NULL 209 39 NULL NULL NULL 209 79 NULL NULL NULL 209 189 NULL NULL NULL 209 39 NULL NULL NULL 59 79 NULL NULL NULL 59 189 NULL NULL NULL 59 39 NULL NULL NULL 59 79 NULL NULL NULL 59 189 NULL NULL NULL 59 39 NULL NULL NULL 59 79 NULL NULL NULL 59 189 NULL NULL NULL 59 39 NULL NULL NULL 59 79 NULL NULL NULL 59 189 NULL NULL NULL 59 39 NULL NULL NULL 207 79 NULL NULL NULL 207 189 NULL NULL NULL 207 39 NULL NULL NULL 207 79 NULL NULL NULL 207 189 NULL NULL NULL 207 39 NULL NULL NULL 207 79 NULL NULL NULL 207 189 NULL NULL NULL 207 39 NULL NULL NULL 207 79 NULL NULL NULL 207 189 NULL NULL NULL 207 39 NULL NULL NULL 57 79 NULL NULL NULL 57 189 NULL NULL NULL 57 39 NULL NULL NULL 57 79 NULL NULL NULL 57 189 NULL NULL NULL 57 39 NULL NULL NULL 57 79 NULL NULL NULL 57 189 NULL NULL NULL 57 39 NULL NULL NULL 57 79 NULL NULL NULL 57 189 NULL NULL NULL 57 SET SESSION join_buffer_size = @save_join_buffer_size;
DROP TABLE t1,t2,t3,t4,t5,t6;
#
# Bug #698882: best equality substitution not applied to ref
#
CREATE TABLE t1 (a1 int NOT NULL, b1 char(10), INDEX idx (a1));
CREATE TABLE t2 (a2 int NOT NULL, b2 char(10), INDEX idx (a2));
CREATE TABLE t3 (a3 int NOT NULL, b3 char(10), INDEX idx (a3));
INSERT INTO t1 VALUES (2,'xx'), (1,'xxx'), (11,'xxxxxxx');
INSERT INTO t2 VALUES
(7,'yyyy'), (2,'y'), (3,'yyy'), (1,'yy'), (1,'yyyyy'),
(3,'yy'), (1,'y'), (4,'yyy'), (7,'y'), (4,'yyyyy'), (7,'yyy'),
(7,'yyyy'), (2,'yy'), (3,'yyy'), (1,'yyyyyyyy'), (1,'yyyyy'),
(3,'yy'), (1,'yyy'), (4,'yyy'), (7,'y'), (4,'yyyyy'), (7,'yyy');
INSERT INTO t3 VALUES
(9,'zzzzzzz'), (2,'zzzzz'), (1,'z'), (9,'zz'), (1,'zz'), (5,'zzzzzzz'),
(4,'zz'), (3,'z'), (5,'zzzzzz'), (3,'zz'), (4,'zzzz'), (3,'z'),
(9,'zzzzzzzz'), (2,'zz'), (1,'zz'), (9,'zzz'), (1,'zzz'), (5,'zzzzzzzz'),
(4,'zzz'), (3,'zz'), (5,'zzzzzzz'), (3,'zzz'), (4,'zzzzz'), (3,'zz'),
(9,'zzzzzz'), (2,'zzzz'), (1,'zzz'), (9,'z'), (1,'z'), (5,'zzzzzz'),
(4,'z'), (3,'zzz'), (5,'zzzzz'), (3,'z'), (4,'zzz'), (3,'zzzz'),
(9,'zzzzz'), (2,'zzz'), (1,'zzzz'), (9,'zzz'), (1,'zzzz'), (5,'zzzzz'),
(4,'zzz'), (3,'zzzz'), (5,'zzzz'), (3,'zzz'), (4,'zz'), (3,'zzzzz'); set @tmp= @@optimizer_switch; SET SESSION optimizer_switch='index_condition_pushdown=off';
EXPLAIN SELECT * from t1,t2,t3 WHERE t3.a3=t1.a1 AND t2.a2=t1.a1;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 ALL idx NULL NULL NULL 3 1 SIMPLE t2 ref idx idx 4 test.t1.a1 2 Using join buffer (flat, BKA join); Key-ordered Rowid-ordered scan 1 SIMPLE t3 ref idx idx 4 test.t1.a1 5 Using join buffer (incremental, BKA join); Key-ordered Rowid-ordered scan
EXPLAIN SELECT * FROM t1,t2,t3 WHERE t2.a2=t1.a1 AND t3.a3=t1.a1;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 ALL idx NULL NULL NULL 3 1 SIMPLE t2 ref idx idx 4 test.t1.a1 2 Using join buffer (flat, BKA join); Key-ordered Rowid-ordered scan 1 SIMPLE t3 ref idx idx 4 test.t1.a1 5 Using join buffer (incremental, BKA join); Key-ordered Rowid-ordered scan
EXPLAIN SELECT * FROM t1,t2,t3 WHERE t2.a2=t1.a1 AND t3.a3=t2.a2;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 ALL idx NULL NULL NULL 3 1 SIMPLE t2 ref idx idx 4 test.t1.a1 2 Using join buffer (flat, BKA join); Key-ordered Rowid-ordered scan 1 SIMPLE t3 ref idx idx 4 test.t1.a1 5 Using join buffer (incremental, BKA join); Key-ordered Rowid-ordered scan
SELECT * from t1,t2,t3
WHERE t3.a3=t1.a1 AND t2.a2=t1.a1 AND
LENGTH(CONCAT(CONCAT(t1.b1,t2.b2),t3.b3)) <= 7;
a1 b1 a2 b2 a3 b3 1 xxx 1 y 1 z 1 xxx 1 y 1 z 1 xxx 1 y 1 zz 1 xxx 1 y 1 zz 1 xxx 1 y 1 zzz 1 xxx 1 y 1 zzz 1 xxx 1 yy 1 z 1 xxx 1 yy 1 z 1 xxx 1 yy 1 zz 1 xxx 1 yy 1 zz 1 xxx 1 yyy 1 z 1 xxx 1 yyy 1 z 2 xx 2 y 2 zz 2 xx 2 y 2 zzz 2 xx 2 y 2 zzzz 2 xx 2 yy 2 zz 2 xx 2 yy 2 zzz
SELECT * FROM t1,t2,t3
WHERE t2.a2=t1.a1 AND t3.a3=t1.a1 AND
LENGTH(CONCAT(CONCAT(t1.b1,t2.b2),t3.b3)) <= 7;
a1 b1 a2 b2 a3 b3 1 xxx 1 y 1 z 1 xxx 1 y 1 z 1 xxx 1 y 1 zz 1 xxx 1 y 1 zz 1 xxx 1 y 1 zzz 1 xxx 1 y 1 zzz 1 xxx 1 yy 1 z 1 xxx 1 yy 1 z 1 xxx 1 yy 1 zz 1 xxx 1 yy 1 zz 1 xxx 1 yyy 1 z 1 xxx 1 yyy 1 z 2 xx 2 y 2 zz 2 xx 2 y 2 zzz 2 xx 2 y 2 zzzz 2 xx 2 yy 2 zz 2 xx 2 yy 2 zzz
SELECT * FROM t1,t2,t3
WHERE t2.a2=t1.a1 AND t3.a3=t2.a2 AND
LENGTH(CONCAT(CONCAT(t1.b1,t2.b2),t3.b3)) <= 7;
a1 b1 a2 b2 a3 b3 1 xxx 1 y 1 z 1 xxx 1 y 1 z 1 xxx 1 y 1 zz 1 xxx 1 y 1 zz 1 xxx 1 y 1 zzz 1 xxx 1 y 1 zzz 1 xxx 1 yy 1 z 1 xxx 1 yy 1 z 1 xxx 1 yy 1 zz 1 xxx 1 yy 1 zz 1 xxx 1 yyy 1 z 1 xxx 1 yyy 1 z 2 xx 2 y 2 zz 2 xx 2 y 2 zzz 2 xx 2 y 2 zzzz 2 xx 2 yy 2 zz 2 xx 2 yy 2 zzz SET SESSION optimizer_switch=@tmp;
DROP TABLE t1,t2,t3;
#
# Bug #707555: crash with equality substitution in ref
#
CREATE TABLE t1 (f11 int, f12 int, PRIMARY KEY (f11), KEY (f12)) ;
INSERT INTO t1 VALUES (1,NULL), (8,NULL);
CREATE TABLE t2 (f21 int, f22 int, f23 int, KEY (f22)) ;
INSERT INTO t2 VALUES (1,NULL,3), (2,7,8);
CREATE TABLE t3 (f31 int, f32 int(11), PRIMARY KEY (f31), KEY (f32)) ;
INSERT INTO t3 VALUES (1,494862336);
CREATE TABLE t4 (f41 int, f42 int, PRIMARY KEY (f41), KEY (f42)) ;
INSERT INTO t4 VALUES (1,NULL), (8,NULL);
CREATE TABLE t5 (f51 int, PRIMARY KEY (f51)) ;
INSERT IGNORE INTO t5 VALUES (100);
CREATE TABLE t6 (f61 int, f62 int, KEY (f61)) ;
INSERT INTO t6 VALUES (NULL,1), (3,10);
CREATE TABLE t7 (f71 int, f72 int, KEY (f72)) ;
INSERT INTO t7 VALUES (1,NULL), (2,7);
EXPLAIN
SELECT t2.f23 FROM
(t1 LEFT JOIN (t2 JOIN t3 ON t2.f22=t3.f32) ON t1.f11=t3.f31)
LEFT JOIN
(((t4 JOIN t5 ON t4.f42=t5.f51) LEFT JOIN t6 ON t6.f62>0) JOIN t7 ON t6.f61>0)
ON t3.f31 = t6.f61
WHERE t7.f71>0;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t3 system PRIMARY,f32 NULL NULL NULL 1 1 SIMPLE t5 system PRIMARY NULL NULL NULL 1 1 SIMPLE t1 const PRIMARY PRIMARY 4 const 1 Using index 1 SIMPLE t2 ref f22 f22 5 const 1 1 SIMPLE t4 ref f42 f42 5 const 1 Using index 1 SIMPLE t6 ref f61 f61 5 const 1 Using where; Using join buffer (flat, BKA join); Key-ordered Rowid-ordered scan 1 SIMPLE t7 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join)
SELECT t2.f23 FROM
(t1 LEFT JOIN (t2 JOIN t3 ON t2.f22=t3.f32) ON t1.f11=t3.f31)
LEFT JOIN
(((t4 JOIN t5 ON t4.f42=t5.f51) LEFT JOIN t6 ON t6.f62>0) JOIN t7 ON t6.f61>0)
ON t3.f31 = t6.f61
WHERE t7.f71>0;
f23
DROP TABLE t1,t2,t3,t4,t5,t6,t7;
CREATE TABLE t1(f1 int UNSIGNED) engine=myisam;
INSERT INTO t1 VALUES (3),(2),(1); set sql_buffer_result=0;
SELECT f1 FROM t1 GROUP BY 1;
f1 1 2 3
SELECT f1 FROM t1 GROUP BY '123' = 'abc';
f1 3
SELECT 1 FROM t1 GROUP BY 1; 1 1 set sql_buffer_result=1;
SELECT f1 FROM t1 GROUP BY 1;
f1 1 2 3
SELECT f1 FROM t1 GROUP BY '123' = 'abc';
f1 3
SELECT 1 FROM t1 GROUP BY 1; 1 1
drop table t1; set sql_buffer_result= 0;
#
# Bug #58422: Incorrect result when OUTER JOIN'ing
# with an empty table
#
CREATE TABLE t_empty(pk INT PRIMARY KEY, i INT) ENGINE = MYISAM;
CREATE TABLE t1(pk INT PRIMARY KEY, i INT) ENGINE = MYISAM;
INSERT INTO t1 VALUES (1,1), (2,2), (3,3);
CREATE TABLE t2(pk INT PRIMARY KEY, i INT) ENGINE = MYISAM;
INSERT INTO t2 VALUES (1,1), (2,2), (3,3);
EXPLAIN
SELECT *
FROM
t1
LEFT OUTER JOIN
(t2 INNER JOIN t_empty ON TRUE)
ON t1.pk=t2.pk
WHERE t2.pk <> 2;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
SELECT *
FROM
t1
LEFT OUTER JOIN
(t2 INNER JOIN t_empty ON TRUE)
ON t1.pk=t2.pk
WHERE t2.pk <> 2;
pk i pk i pk i
EXPLAIN
SELECT *
FROM
t1
LEFT OUTER JOIN
(t2 CROSS JOIN t_empty)
ON t1.pk=t2.pk
WHERE t2.pk <> 2;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
SELECT *
FROM
t1
LEFT OUTER JOIN
(t2 CROSS JOIN t_empty)
ON t1.pk=t2.pk
WHERE t2.pk <> 2;
pk i pk i pk i
EXPLAIN
SELECT *
FROM
t1
LEFT OUTER JOIN
(t2 INNER JOIN t_empty ON t_empty.i=t2.i)
ON t1.pk=t2.pk
WHERE t2.pk <> 2;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
SELECT *
FROM
t1
LEFT OUTER JOIN
(t2 INNER JOIN t_empty ON t_empty.i=t2.i)
ON t1.pk=t2.pk
WHERE t2.pk <> 2;
pk i pk i pk i
DROP TABLE t1,t2,t_empty;
End of 5.1 tests
#
# Bug#45227: Lost HAVING clause led to a wrong result.
#
CREATE TABLE `CC` (
`int_nokey` int(11) NOT NULL,
`int_key` int(11) NOT NULL,
`varchar_key` varchar(1) NOT NULL,
`varchar_nokey` varchar(1) NOT NULL,
KEY `int_key` (`int_key`),
KEY `varchar_key` (`varchar_key`)
);
INSERT INTO `CC` VALUES
(0,8,'q','q'),(5,8,'m','m'),(7,3,'j','j'),(1,2,'z','z'),(8,2,'a','a'),(2,6,'',''),(1,8,'e'
,'e'),(8,9,'t','t'),(5,2,'q','q'),(4,6,'b','b'),(5,5,'w','w'),(3,2,'m','m'),(0,4,'x','x'),
(8,9,'',''),(0,6,'w','w'),(4,5,'x','x'),(0,0,'e','e'),(0,0,'e','e'),(2,8,'p','p'),(0,0,'x'
,'x');
EXPLAIN SELECT `varchar_nokey` G1 FROM CC WHERE `int_nokey` AND `int_key` <= 4
HAVING G1 ORDER BY `varchar_key` LIMIT 6;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE CC range int_key int_key 4 NULL 9 Using index condition; Using where; Rowid-ordered scan; Using filesort
SELECT `varchar_nokey` G1 FROM CC WHERE `int_nokey` AND `int_key` <= 4
HAVING G1 ORDER BY `varchar_key` LIMIT 6;
G1
Warnings:
Warning 1292 Truncated incorrect BOOLEAN value: 'j'
Warning 1292 Truncated incorrect BOOLEAN value: 'z'
Warning 1292 Truncated incorrect BOOLEAN value: 'a'
Warning 1292 Truncated incorrect BOOLEAN value: 'q'
Warning 1292 Truncated incorrect BOOLEAN value: 'm'
DROP TABLE CC;
# End of test#45227
#
# BUG#776274: substitution of a single row table
#
CREATE TABLE t1 (a int NOT NULL , b int);
INSERT INTO t1 VALUES (2,2);
SELECT * FROM t1 WHERE a = b;
a b 22
EXPLAIN
SELECT * FROM t1 WHERE a = b;
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 system NULL NULL NULL NULL 1
DROP TABLE t1;
#
# Bug#54515: Crash in opt_range.cc::get_best_group_min_max on
# SELECT from VIEW with GROUP BY
#
CREATE TABLE t1 (
col_int_key int DEFAULT NULL,
KEY int_key (col_int_key)
) ;
INSERT INTO t1 VALUES (1),(2);
CREATE VIEW view_t1 AS
SELECT t1.col_int_key AS col_int_key
FROM t1;
SELECT col_int_key FROM view_t1 GROUP BY col_int_key;
col_int_key 1 2
DROP VIEW view_t1;
DROP TABLE t1;
# End of test BUG#54515
#
# Bug #57203 Assertion `field_length <= 255' failed.
#
SELECT coalesce((avg(distinct (geomfromtext("point(25379 -22010)")))))
UNION ALL
SELECT coalesce((avg(distinct (geomfromtext("point(25379 -22010)")))))
AS foo ; ERROR HY000: Illegal parameter data type geometry for operation 'avg'
CREATE table t1(a text);
INSERT INTO t1 VALUES (''), ('');
SELECT avg(distinct(t1.a)) FROM t1, t1 t2
GROUP BY t2.a ORDER BY t1.a;
avg(distinct(t1.a)) 0
DROP TABLE t1;
# End of test BUG#57203
#
# lp:822760 Wrong result with view + invalid dates
#
CREATE TABLE t1 (f1 date);
INSERT IGNORE INTO t1 VALUES ('0000-00-00');
CREATE ORREPLACE VIEW v1 AS SELECT * FROM t1;
SELECT * FROM t1 HAVING f1 = 'zz';
f1 0000-00-00
Warnings:
Warning 1292 Truncated incorrect datetime value: 'zz'
SELECT * FROM t1 HAVING f1 <= 'aa';
f1 0000-00-00
Warnings:
Warning 1292 Truncated incorrect datetime value: 'aa'
SELECT * FROM t1 HAVING f1 = 'zz'AND f1 <= 'aa';
f1 0000-00-00
Warnings:
Warning 1292 Truncated incorrect datetime value: 'zz'
Warning 1292 Truncated incorrect datetime value: 'aa'
SELECT * FROM t1 WHERE f1 = 'zz'AND f1 <= 'aa';
f1 0000-00-00
Warnings:
Warning 1292 Truncated incorrect datetime value: 'zz'
Warning 1292 Truncated incorrect datetime value: 'aa'
SELECT * FROM v1 HAVING f1 = 'zz'AND f1 <= 'aa';
f1 0000-00-00
Warnings:
Warning 1292 Truncated incorrect datetime value: 'zz'
Warning 1292 Truncated incorrect datetime value: 'aa'
DROP TABLE t1;
DROP VIEW v1;
#
# Bug#63020: Function "format"'s 'locale' argument is not considered
# when creating a "view'
#
CREATE TABLE t1 (f1 DECIMAL(10,2));
INSERT INTO t1 VALUES (11.67),(17865.3),(12345678.92);
CREATE VIEW view_t1 AS SELECT FORMAT(f1,1,'sk_SK') AS f1 FROM t1;
SHOW CREATE VIEW view_t1;
View Create View character_set_client collation_connection
view_t1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `view_t1` AS select format(`t1`.`f1`,1,'sk_SK') AS `f1` from `t1` latin1 latin1_swedish_ci
SELECT * FROM view_t1;
f1 11,7 17865,3 12345678,9
DROP TABLE t1;
DROP VIEW view_t1;
# End of test BUG#63020
#
# Bug #13571700 TINYBLOB NOT NULL, CRASH IN PROTOCOL::NET_STORE_DATA
#
CREATE TABLE t1 (a TINYBLOB NOT NULL);
SELECT a, COUNT(*) FROM t1 WHERE 0;
a COUNT(*)
NULL 0
DROP TABLE t1; SET @@optimizer_switch=@save_optimizer_switch;
#
# LP bug#994275 Assertion `real->type() == Item::FIELD_ITEM' failed
# in add_not_null_conds(JOIN*) with JOIN, ZEROFILL column, PK
#
CREATE TABLE t1 ( a INT(6) ZEROFILL );
INSERT INTO t1 VALUES (1),(2);
CREATE TABLE t2 ( b INT PRIMARY KEY );
INSERT INTO t2 VALUES (3),(4);
SELECT * FROM t1, t2 WHERE a=3AND a=b;
a b
drop table t1,t2;
#
# Bug mdev-4250: wrong transformation of WHERE condition with OR
#
CREATE TABLE t1 (pk int PRIMARY KEY, a int);
INSERT INTO t1 VALUES (3,0), (2,0), (4,1), (5,0), (1,0);
SELECT * FROM t1 WHERE (1=2OR t1.pk=2) AND t1.a <> 0;
pk a
EXPLAIN EXTENDED
SELECT * FROM t1 WHERE (1=2OR t1.pk=2) AND t1.a <> 0;
id select_type table type possible_keys key key_len ref rows filtered Extra 1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
Warnings:
Note 1003 select 2 AS `pk`,0 AS `a` from `test`.`t1` where 0
DROP TABLE t1;
SELECT * FROM mysql.time_zone
WHERE ( NOT (Use_leap_seconds <= Use_leap_seconds AND Time_zone_id != 1) AND Time_zone_id = Time_zone_id OR Time_zone_id <> Time_zone_id ) AND Use_leap_seconds <> 'N';
Time_zone_id Use_leap_seconds
#
# Bug mdev-4274: result of simplification of OR badly merged
# into embedding AND
#
CREATE TABLE t1 (a int, b int, INDEX idx(b)) ENGINE=MyISAM;
INSERT INTO t1 VALUES (8,8);
CREATE TABLE t2 (c int, INDEX idx(c)) ENGINE=MyISAM;
INSERT INTO t2 VALUES (8), (9);
EXPLAIN EXTENDED
SELECT * FROM t1 INNER JOIN t2 ON ( c = a )
WHERE 1 IS NULL OR b < 33AND b = c;
id select_type table type possible_keys key key_len ref rows filtered Extra 1 SIMPLE t1 system idx NULL NULL NULL 1100.00 1 SIMPLE t2 ref idx idx 5 const 1100.00 Using index
Warnings:
Note 1003 select 8 AS `a`,8 AS `b`,`test`.`t2`.`c` AS `c` from `test`.`t2` where `test`.`t2`.`c` = 8
SELECT * FROM t1 INNER JOIN t2 ON ( c = a )
WHERE 1 IS NULL OR b < 33AND b = c;
a b c 888
DROP TABLE t1,t2;
#
# Bug mdev-4413: another manifestations of bug mdev-4274
# (valgrind complains)
#
CREATE TABLE t1 (a int, b int) ENGINE=MyISAM;
INSERT INTO t1 VALUES (7,1);
CREATE TABLE t2 (c int) ENGINE=MyISAM;
INSERT INTO t2 VALUES (0), (8);
SELECT * FROM t1, t2
WHERE c = a AND
( 0OR ( b BETWEEN 45AND300OR a > 45AND a < 100 ) AND b = c );
a b c
DROP TABLE t1, t2;
#
# Bug mdev-4355: equalities from the result of simplification of OR
# are not propagated to lower AND levels
#
CREATE TABLE t1 (a INT, b INT) ENGINE=MyISAM;
INSERT INTO t1 VALUES (1,101),(2,102),(3,103),(4,104),(5,11);
EXPLAIN EXTENDED
SELECT * FROM t1 WHERE (1 != 1OR a = 5) AND (b != 1OR a = 1);
id select_type table type possible_keys key key_len ref rows filtered Extra 1 SIMPLE t1 ALL NULL NULL NULL NULL 5100.00 Using where
Warnings:
Note 1003 select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` where `test`.`t1`.`a` = 5and `test`.`t1`.`b` <> 1
SELECT * FROM t1 WHERE (1 != 1OR a = 5) AND (b != 1OR a = 1);
a b 511
EXPLAIN EXTENDED
SELECT * FROM t1 WHERE (b != 1OR a = 1) AND (1 != 1OR a = 5);
id select_type table type possible_keys key key_len ref rows filtered Extra 1 SIMPLE t1 ALL NULL NULL NULL NULL 5100.00 Using where
Warnings:
Note 1003 select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` where `test`.`t1`.`a` = 5and `test`.`t1`.`b` <> 1
SELECT * FROM t1 WHERE (b != 1OR a = 1) AND (1 != 1OR a = 5);
a b 511
EXPLAIN EXTENDED
SELECT * FROM t1 WHERE (b != 1OR a = 1) AND (a = 5OR1 != 1);
id select_type table type possible_keys key key_len ref rows filtered Extra 1 SIMPLE t1 ALL NULL NULL NULL NULL 5100.00 Using where
Warnings:
Note 1003 select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` where `test`.`t1`.`a` = 5and `test`.`t1`.`b` <> 1
SELECT * FROM t1 WHERE (b != 1OR a = 1) AND (a = 5OR1 != 1);
a b 511
EXPLAIN EXTENDED
SELECT * FROM t1 WHERE (b = 1OR a = 1) AND (b = 5AND a = 5OR1 != 1);
id select_type table type possible_keys key key_len ref rows filtered Extra 1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE
Warnings:
Note 1003 select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` where 0
SELECT * FROM t1 WHERE (b = 1OR a = 1) AND (b = 5AND a = 5OR1 != 1);
a b
EXPLAIN EXTENDED
SELECT * FROM t1 WHERE (b = 1OR a = 5) AND (b = 5AND a = 5OR1 != 1);
id select_type table type possible_keys key key_len ref rows filtered Extra 1 SIMPLE t1 ALL NULL NULL NULL NULL 5100.00 Using where
Warnings:
Note 1003 select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` where `test`.`t1`.`b` = 5and `test`.`t1`.`a` = 5
SELECT * FROM t1 WHERE (b = 1OR a = 5) AND (b = 5AND a = 5OR1 != 1);
a b
DROP TABLE t1;
#
# Bug mdev-4418: impossible multiple equality in OR formula
# after row substitution
#
CREATE TABLE t1 (a int, b varchar(1)) ENGINE=MyISAM;
INSERT INTO t1 VALUES (0,'j'), (8,'v');
CREATE TABLE t2 (c varchar(1), d varchar(1)) ENGINE=MyISAM;
INSERT INTO t2 VALUES ('k','k');
EXPLAIN EXTENDED
SELECT * FROM t1, t2 WHERE c=b AND (1=2OR ((b='h'OR a=136) AND d=b));
id select_type table type possible_keys key key_len ref rows filtered Extra 1 SIMPLE t2 system NULL NULL NULL NULL 1100.00 1 SIMPLE t1 ALL NULL NULL NULL NULL 2100.00 Using where
Warnings:
Note 1003 select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,'k' AS `c`,'k' AS `d` from `test`.`t1` where `test`.`t1`.`b` = 'k'and `test`.`t1`.`a` = 136
SELECT * FROM t1, t2 WHERE c=b AND (1=2OR ((b='h'OR a=136) AND d=b));
a b c d
DROP TABLE t1,t2;
#
# Bug mdev-4944: range conditition in OR formula with fields
# belonging to multiple equalities
#
CREATE TABLE t1 (i1 int, j1 int) ENGINE=MyISAM;
INSERT INTO t1 VALUES (1,8);
CREATE TABLE t2 (i2 int, INDEX idx (i2)) ENGINE=MyISAM;
INSERT INTO t2 VALUES (8), (9);
EXPLAIN EXTENDED
SELECT * FROM t1, t2
WHERE i1 = i2 AND ( FALSE OR ( j1 > 27AND j1 < 100OR j1 <= 3 ) AND j1 = i2 );
id select_type table type possible_keys key key_len ref rows filtered Extra 1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
Warnings:
Note 1003 select 1 AS `i1`,8 AS `j1`,NULL AS `i2` from `test`.`t2` where 0
SELECT * FROM t1, t2
WHERE i1 = i2 AND ( FALSE OR ( j1 > 27AND j1 < 100OR j1 <= 3 ) AND j1 = i2 );
i1 j1 i2
DROP TABLE t1,t2;
#
# Bug mdev-4971: equality propagation after merging degenerate
# disjunction into embedding AND level
#
CREATE TABLE t1 (pk1 int, a1 int, b1 int, PRIMARY KEY(pk1)) ENGINE=MyISAM;
INSERT INTO t1 VALUES (1,10,100), (2,20,200) ;
CREATE TABLE t2 (pk2 int, a2 int, PRIMARY KEY(pk2)) ENGINE=MyISAM;
INSERT INTO t2 VALUES (1,1);
SELECT * FROM t1, t2
WHERE a1 = pk2 AND ( ( b1 = 6OR a2 > 4 ) AND pk2 = a2 OR pk1 IS NULL );
pk1 a1 b1 pk2 a2
EXPLAIN EXTENDED
SELECT * FROM t1, t2
WHERE a1 = pk2 AND ( ( b1 = 6OR a2 > 4 ) AND pk2 = a2 OR pk1 IS NULL );
id select_type table type possible_keys key key_len ref rows filtered Extra 1 SIMPLE t2 system PRIMARY NULL NULL NULL 1100.00 1 SIMPLE t1 ALL NULL NULL NULL NULL 2100.00 Using where
Warnings:
Note 1003 select `test`.`t1`.`pk1` AS `pk1`,`test`.`t1`.`a1` AS `a1`,`test`.`t1`.`b1` AS `b1`,1 AS `pk2`,1 AS `a2` from `test`.`t1` where `test`.`t1`.`a1` = 1and `test`.`t1`.`b1` = 6
INSERT INTO t1 VALUES (3,1,6);
SELECT * FROM t1, t2
WHERE a1 = pk2 AND ( ( b1 = 6OR a2 > 4 ) AND pk2 = a2 OR pk1 IS NULL );
pk1 a1 b1 pk2 a2 31611
DROP TABLE t1,t2;
End of 5.3 tests
#
# mysql BUG#1271 Undefined variable in PASSWORD()
# function is not handled correctly
#
create table t1 (
name VARCHAR(50) NOT NULL PRIMARY KEY,
pw VARCHAR(41) NOT NULL);
INSERT INTO t1 (name, pw)
VALUES ('tom', PASSWORD('my_pw')); SET @pass='my_pw'; SET @wrong='incorrect';
select * from t1;
name pw
tom *F305E8EC27734F687F2EB6EC03CF0F7AF27C18E1
select length(PASSWORD(@pass));
length(PASSWORD(@pass)) 41
SELECT name FROM t1 WHERE name='tom'AND pw=PASSWORD(@pass);
name
tom
SELECT name FROM t1 WHERE name='tom'AND pw=PASSWORD(@wrong);
name
SELECT name FROM t1 WHERE name='tom'AND pw=PASSWORD(@undefined);
name
select (SELECT name FROM t1 WHERE name='tom'AND pw=PASSWORD(@pass));
(SELECT name FROM t1 WHERE name='tom'AND pw=PASSWORD(@pass))
tom
select (SELECT name FROM t1 WHERE name='tom'AND pw=PASSWORD(@wrong));
(SELECT name FROM t1 WHERE name='tom'AND pw=PASSWORD(@wrong))
NULL
select (SELECT name FROM t1 WHERE name='tom'AND pw=PASSWORD(@undefined));
(SELECT name FROM t1 WHERE name='tom'AND pw=PASSWORD(@undefined))
NULL
drop table t1;
#
# Bug MDEV-24262 Server crashes in st_join_table::cleanup upon
# erroneous GROUP_CONCAT
#
CREATE TABLE t1 (a INT, b INT);
INSERT INTO t1 VALUES (1,10),(2,20);
SELECT b, GROUP_CONCAT(b ORDER BY 2), MIN(a) AS f FROM t1 GROUP BY b ORDER BY f; ERROR42S22: Unknown column '2' in 'ORDER BY'
DROP TABLE t1;
#
# Bug MDEV-24560 SIGSEGV in st_join_table::cleanup + server and client
# hang + cross-mysqld-interaction + double free or corruption (!prev)
#
CREATE TABLE t1 (c INT); SET SESSION sql_buffer_result=1;
SELECT GROUP_CONCAT(c ORDER BY 2) FROM t1;
GROUP_CONCAT(c ORDER BY 2)
NULL
SELECT GROUP_CONCAT(c ORDER BY 0) FROM t1;
GROUP_CONCAT(c ORDER BY 0)
NULL
DROP TABLE t1;
CREATE TABLE t1 (grp INT,c CHAR); SET sql_buffer_result=1;
SELECT grp,GROUP_CONCAT(c ORDER BY 2) FROM t1 GROUP BY grp;
grp GROUP_CONCAT(c ORDER BY 2)
DROP TABLE t1;
#
# Bug MDEV-28077"Wrong create options" with "big_tables" option enabled
#
CREATE TABLE t1(a VARCHAR(16383) CHARACTER SET UTF32, KEY k(a));
Warnings:
Note 1071 Specified key was too long; max key length is 1000 bytes
INSERT INTO t1 VALUES ('abc'), ('def'), ('FFF'), ('abc'), ('FFF'); set tmp_memory_table_size=0;
SELECT DISTINCT COUNT(DISTINCT a) FROM t1;
COUNT(DISTINCT a) 3
PREPARE stmt FROM 'SELECT DISTINCT COUNT(DISTINCT a) FROM t1';
EXECUTE stmt;
COUNT(DISTINCT a) 3
EXECUTE stmt;
COUNT(DISTINCT a) 3 set tmp_memory_table_size=default;
DROP TABLE t1;
#
# MDEV-29294: Assertion `functype() == ((Item_cond *) new_item)->functype()'
# failed in Item_cond::remove_eq_conds on SELECT
#
CREATE TABLE t1 (a INT);
INSERT INTO t1 VALUES (1),(2),(3);
# Test for nested OR conditions:
SELECT * FROM t1 WHERE a = 1AND
(3 = 0OR (SELECT a = 1OR (SELECT 3 WHERE a = a) = 3));
a 1
EXPLAIN EXTENDED
SELECT * FROM t1 WHERE a = 1AND
(3 = 0OR (SELECT a = 1OR (SELECT 3 WHERE a = a) = 3));
id select_type table type possible_keys key key_len ref rows filtered Extra 1 PRIMARY t1 ALL NULL NULL NULL NULL 3100.00 Using where; Using temporary 3 DEPENDENT SUBQUERY NULL NULL NULL NULL NULL NULL NULL NULL No tables used
Warnings:
Note 1276 Field or reference 'test.t1.a' of SELECT #2 was resolved in SELECT #1
Note 1276 Field or reference 'test.t1.a' of SELECT #3 was resolved in SELECT #1
Note 1276 Field or reference 'test.t1.a' of SELECT #3 was resolved in SELECT #1
Note 1249 Select 2 was reduced during optimization
Note 1003/* select#1 */ select `test`.`t1`.`a` AS `a` from `test`.`t1` where `test`.`t1`.`a` = 1 and (1 or <expr_cache><`test`.`t1`.`a`>((/* select#3 */ select 3 from DUAL where `test`.`t1`.`a` = `test`.`t1`.`a`)) = 3)
PREPARE stmt FROM 'SELECT * FROM t1 WHERE a = 1 AND
(3 = 0OR (SELECT a = 1OR (SELECT 3 WHERE a = a) = 3))';
EXECUTE stmt;
a 1
EXECUTE stmt;
a 1
CREATE VIEW v1 AS SELECT * FROM t1 WHERE a = 1AND
(3 = 0OR (SELECT a = 1OR (SELECT 3 WHERE a = a) = 3));
SELECT * FROM v1;
a 1
# Test for nested AND conditions:
SELECT * FROM t1 WHERE a = 1OR
(3 = 3AND (SELECT a = 1AND (SELECT 3 WHERE a = a) = 3));
a 1
PREPARE stmt FROM 'SELECT * FROM t1 WHERE a = 1 OR
(3 = 3AND (SELECT a = 1AND (SELECT 3 WHERE a = a) = 3))';
EXECUTE stmt;
a 1
EXECUTE stmt;
a 1
CREATE VIEW v2 AS SELECT * FROM t1 WHERE a = 1OR
(3 = 3AND (SELECT a = 1AND (SELECT 3 WHERE a = a) = 3));
SELECT * FROM v2;
a 1
DROP TABLE t1;
DROP VIEW v1, v2;
End of 10.0 tests
ALTER DATABASE test CHARACTER SET utf8mb4 COLLATE utf8mb4_uca1400_ai_ci; set join_cache_level=default; set @@optimizer_switch=@save_optimizer_switch_jcl6; set @optimizer_switch_for_select_test=NULL; set @join_cache_level_for_select_test=NULL;
ALTER DATABASE test CHARACTER SET utf8mb4 COLLATE utf8mb4_uca1400_ai_ci;
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.171 Sekunden
(vorverarbeitet am 2026-10-08)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.