github.com/cockroachdb/cockroach@v20.2.0-alpha.1+incompatible/pkg/sql/opt/testutils/opttester/testdata/explore-trace (about)

     1  exec-ddl
     2  CREATE TABLE ab (a INT PRIMARY KEY, b INT, INDEX(b))
     3  ----
     4  
     5  exploretrace
     6  SELECT * FROM ab WHERE b=1
     7  ----
     8  ----
     9  ================================================================================
    10  GenerateIndexScans
    11  ================================================================================
    12  Source expression:
    13    select
    14     ├── columns: a:1(int!null) b:2(int!null)
    15     ├── key: (1)
    16     ├── fd: ()-->(2)
    17     ├── scan ab
    18     │    ├── columns: a:1(int!null) b:2(int)
    19     │    ├── key: (1)
    20     │    └── fd: (1)-->(2)
    21     └── filters
    22          └── eq [type=bool, outer=(2), constraints=(/2: [/1 - /1]; tight), fd=()-->(2)]
    23               ├── variable: b:2 [type=int]
    24               └── const: 1 [type=int]
    25  
    26  New expression 1 of 1:
    27    select
    28     ├── columns: a:1(int!null) b:2(int!null)
    29     ├── key: (1)
    30     ├── fd: ()-->(2)
    31     ├── scan ab@secondary
    32     │    ├── columns: a:1(int!null) b:2(int)
    33     │    ├── key: (1)
    34     │    └── fd: (1)-->(2)
    35     └── filters
    36          └── eq [type=bool, outer=(2), constraints=(/2: [/1 - /1]; tight), fd=()-->(2)]
    37               ├── variable: b:2 [type=int]
    38               └── const: 1 [type=int]
    39  
    40  ================================================================================
    41  GenerateZigzagJoins
    42  ================================================================================
    43  Source expression:
    44    select
    45     ├── columns: a:1(int!null) b:2(int!null)
    46     ├── key: (1)
    47     ├── fd: ()-->(2)
    48     ├── scan ab
    49     │    ├── columns: a:1(int!null) b:2(int)
    50     │    ├── key: (1)
    51     │    └── fd: (1)-->(2)
    52     └── filters
    53          └── eq [type=bool, outer=(2), constraints=(/2: [/1 - /1]; tight), fd=()-->(2)]
    54               ├── variable: b:2 [type=int]
    55               └── const: 1 [type=int]
    56  
    57  No new expressions.
    58  
    59  ================================================================================
    60  GenerateConstrainedScans
    61  ================================================================================
    62  Source expression:
    63    select
    64     ├── columns: a:1(int!null) b:2(int!null)
    65     ├── key: (1)
    66     ├── fd: ()-->(2)
    67     ├── scan ab
    68     │    ├── columns: a:1(int!null) b:2(int)
    69     │    ├── key: (1)
    70     │    └── fd: (1)-->(2)
    71     └── filters
    72          └── eq [type=bool, outer=(2), constraints=(/2: [/1 - /1]; tight), fd=()-->(2)]
    73               ├── variable: b:2 [type=int]
    74               └── const: 1 [type=int]
    75  
    76  New expression 1 of 1:
    77    scan ab@secondary
    78     ├── columns: a:1(int!null) b:2(int!null)
    79     ├── constraint: /2/1: [/1 - /1]
    80     ├── key: (1)
    81     └── fd: ()-->(2)
    82  ----
    83  ----
    84  
    85  exec-ddl
    86  CREATE TABLE parent (pid INT PRIMARY KEY, pa INT)
    87  ----
    88  
    89  exec-ddl
    90  CREATE TABLE child (
    91    pid INT,
    92    cid INT,
    93    ca INT,
    94    PRIMARY KEY(pid, cid)
    95  )
    96  ----
    97  
    98  exec-ddl
    99  CREATE TABLE grandchild (
   100    pid INT,
   101    cid INT,
   102    gcid INT,
   103    gca INT,
   104    PRIMARY KEY(pid, cid, gcid)
   105  )
   106  ----
   107  
   108  # Regression test for 36225.
   109  exploretrace join-limit=4 rule=AssociateJoin skip-no-op format=hide-all
   110  SELECT * FROM
   111    grandchild
   112    JOIN child USING (pid, cid)
   113    JOIN parent USING (pid)
   114  ORDER BY pid
   115  ----
   116  ----
   117  ================================================================================
   118  AssociateJoin
   119  ================================================================================
   120  Source expression:
   121    sort
   122     └── project
   123          └── inner-join (hash)
   124               ├── inner-join (merge)
   125               │    ├── scan grandchild
   126               │    ├── scan child
   127               │    └── filters (true)
   128               ├── scan parent
   129               └── filters
   130                    └── grandchild.pid = parent.pid
   131  
   132  New expression 1 of 1:
   133    sort
   134     └── project
   135          └── inner-join (hash)
   136               ├── scan grandchild
   137               ├── inner-join (hash)
   138               │    ├── scan child
   139               │    ├── scan parent
   140               │    └── filters
   141               │         └── child.pid = parent.pid
   142               └── filters
   143                    ├── grandchild.pid = child.pid
   144                    └── grandchild.cid = child.cid
   145  
   146  ================================================================================
   147  AssociateJoin
   148  ================================================================================
   149  Source expression:
   150    sort
   151     └── project
   152          └── inner-join (hash)
   153               ├── inner-join (merge)
   154               │    ├── scan grandchild
   155               │    ├── scan child
   156               │    └── filters (true)
   157               ├── scan parent
   158               └── filters
   159                    └── grandchild.pid = parent.pid
   160  
   161  New expression 1 of 1:
   162    sort
   163     └── project
   164          └── inner-join (hash)
   165               ├── scan child
   166               ├── inner-join (hash)
   167               │    ├── scan grandchild
   168               │    ├── scan parent
   169               │    └── filters
   170               │         └── grandchild.pid = parent.pid
   171               └── filters
   172                    ├── grandchild.pid = child.pid
   173                    └── grandchild.cid = child.cid
   174  
   175  ================================================================================
   176  AssociateJoin
   177  ================================================================================
   178  Source expression:
   179    sort
   180     └── project
   181          └── inner-join (hash)
   182               ├── inner-join (merge)
   183               │    ├── scan child
   184               │    ├── scan parent
   185               │    └── filters (true)
   186               ├── scan grandchild
   187               └── filters
   188                    ├── grandchild.pid = child.pid
   189                    └── grandchild.cid = child.cid
   190  
   191  New expression 1 of 1:
   192    sort
   193     └── project
   194          └── inner-join (hash)
   195               ├── scan child
   196               ├── inner-join (merge)
   197               │    ├── scan grandchild
   198               │    ├── scan parent
   199               │    └── filters (true)
   200               └── filters
   201                    ├── grandchild.cid = child.cid
   202                    └── child.pid = grandchild.pid
   203  
   204  ================================================================================
   205  AssociateJoin
   206  ================================================================================
   207  Source expression:
   208    sort
   209     └── project
   210          └── inner-join (hash)
   211               ├── inner-join (merge)
   212               │    ├── scan child
   213               │    ├── scan parent
   214               │    └── filters (true)
   215               ├── scan grandchild
   216               └── filters
   217                    ├── grandchild.pid = child.pid
   218                    └── grandchild.cid = child.cid
   219  
   220  New expression 1 of 1:
   221    sort
   222     └── project
   223          └── inner-join (hash)
   224               ├── scan parent
   225               ├── inner-join (merge)
   226               │    ├── scan grandchild
   227               │    ├── scan child
   228               │    └── filters (true)
   229               └── filters
   230                    └── child.pid = parent.pid
   231  
   232  ================================================================================
   233  AssociateJoin
   234  ================================================================================
   235  Source expression:
   236    sort
   237     └── project
   238          └── inner-join (hash)
   239               ├── inner-join (merge)
   240               │    ├── scan grandchild
   241               │    ├── scan parent
   242               │    └── filters (true)
   243               ├── scan child
   244               └── filters
   245                    ├── grandchild.cid = child.cid
   246                    └── child.pid = grandchild.pid
   247  
   248  New expression 1 of 1:
   249    sort
   250     └── project
   251          └── inner-join (hash)
   252               ├── scan parent
   253               ├── inner-join (hash)
   254               │    ├── scan grandchild
   255               │    ├── scan child
   256               │    └── filters
   257               │         ├── grandchild.cid = child.cid
   258               │         └── child.pid = grandchild.pid
   259               └── filters
   260                    └── grandchild.pid = parent.pid
   261  ----
   262  ----