Eine aufbereitete Darstellung der Quelle

 
     
 
 
Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 

Benutzer

Impressum join_outer_reorder.test  Sprache: unbekannt

 
Spracherkennung für: .test vermutete Sprache: SQL {SQL[81] ABAP[72] Masm[38]} [Methode: maximale Elemente, drei Dimensionen]

#
# Tests for MDEV-36055 : Outer join reordering
#
--source include/have_sequence.inc

# We need optimizer trace:
--source include/not_embedded.inc

set @join_outer_reorder_tmp=@@optimizer_switch;
set optimizer_switch='reorder_outer_joins=on';

create table t1 (a int);
insert into t1 select seq from seq_1_to_10000;

create table t2 (
  a int,
  b int,
  index(a)
);
insert into t2
select
  A.seq,
  B.seq
from
  seq_1_to_1000 A,
  seq_1_to_10 B;

create table t3 (
  a int,
  b int,
  index(a)
);
insert into t3
select
  A.seq,
  A.seq
from
  seq_1_to_1000 A;

analyze table t1,t2,t3;

set optimizer_trace=1;
explain
select *
from
  t1
  left join t3 on t3.a=t1.a
  left join t2 on t2.a=t1.a;

--echo # This will show that t2 and t3 only depend on t1:
select json_pretty(json_extract(trace, '$**.table_dependencies')) as DEPS 
from information_schema.optimizer_trace;

--echo  # This will have same join order like previous EXPLAIN
--echo  #  as the optimizer considers the queries identical
explain
select *
from
  t1
  left join t2 on t2.a=t1.a
  left join t3 on t3.a=t1.a;

--echo # This will show that t2 and t3 only depend on t1:
select json_pretty(json_extract(trace, '$**.table_dependencies')) as DEPS 
from information_schema.optimizer_trace;

--echo # Make t3's ON expression depend on t2:
explain
select *
from
  t1
  left join t2 on t2.a=t1.a
  left join t3 on t3.a=t1.a and t3.b=t2.b;
select json_pretty(json_extract(trace, '$**.table_dependencies')) as DEPS 
from information_schema.optimizer_trace;


--echo #
--echo # Now, try a nested join:
--echo #
create table t4 (
  a int,
  b int
);
insert into t4 values (1,1);

explain
select *
from
  t1
  left join (t2 join t4 as t4_2 on t2.b=t4_2.b) on t2.a=t1.a
  left join (t3 join t4 as t4_3 on t3.b=t4_3.b) on t3.a=t1.a;
select json_pretty(json_extract(trace, '$**.table_dependencies')) as DEPS 
from information_schema.optimizer_trace;
drop table t1,t2,t3,t4;

# The below tests produce the same result regardless of the reorder_outer_joins
# setting. Which may mean there's not a lot of meaningful coverage but let's
# show we do not break outer join handling:
#set optimizer_switch='reorder_outer_joins=off';
--source join_nested.test
--source join_outer.test

# This produces one .result change where rows come in different order:
--source suite/compat/oracle/t/ora_outer_join.test

set optimizer_switch=@join_outer_reorder_tmp;


[Seitenstruktur0.13Druckenetwas mehr zur Ethik2026-10-08]

                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Open Source Software

     Quellcodebibliothek
     Eigene Quellcodes
     Fremde Quellcodes
     Suchen

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik

Statistik
#Sources=1126438
#Domains=1867298