vitess.io/vitess@v0.16.2/go/vt/vtgate/planbuilder/testdata/wireup_cases.json (about)

     1  [
     2    {
     3      "comment": "join on having clause",
     4      "query": "select e.col, u.id uid, e.id eid from user u join user_extra e having uid = eid",
     5      "v3-plan": {
     6        "QueryType": "SELECT",
     7        "Original": "select e.col, u.id uid, e.id eid from user u join user_extra e having uid = eid",
     8        "Instructions": {
     9          "OperatorType": "Join",
    10          "Variant": "Join",
    11          "JoinColumnIndexes": "R:0,L:0,R:1",
    12          "JoinVars": {
    13            "uid": 0
    14          },
    15          "TableName": "`user`_user_extra",
    16          "Inputs": [
    17            {
    18              "OperatorType": "Route",
    19              "Variant": "Scatter",
    20              "Keyspace": {
    21                "Name": "user",
    22                "Sharded": true
    23              },
    24              "FieldQuery": "select u.id as uid from `user` as u where 1 != 1",
    25              "Query": "select u.id as uid from `user` as u",
    26              "Table": "`user`"
    27            },
    28            {
    29              "OperatorType": "Route",
    30              "Variant": "Scatter",
    31              "Keyspace": {
    32                "Name": "user",
    33                "Sharded": true
    34              },
    35              "FieldQuery": "select e.col, e.id as eid from user_extra as e where 1 != 1",
    36              "Query": "select e.col, e.id as eid from user_extra as e having eid = :uid",
    37              "Table": "user_extra"
    38            }
    39          ]
    40        }
    41      },
    42      "gen4-plan": {
    43        "QueryType": "SELECT",
    44        "Original": "select e.col, u.id uid, e.id eid from user u join user_extra e having uid = eid",
    45        "Instructions": {
    46          "OperatorType": "Join",
    47          "Variant": "Join",
    48          "JoinColumnIndexes": "L:1,R:0,L:2",
    49          "JoinVars": {
    50            "e_id": 0
    51          },
    52          "TableName": "user_extra_`user`",
    53          "Inputs": [
    54            {
    55              "OperatorType": "Route",
    56              "Variant": "Scatter",
    57              "Keyspace": {
    58                "Name": "user",
    59                "Sharded": true
    60              },
    61              "FieldQuery": "select e.id, e.col, e.id as eid from user_extra as e where 1 != 1",
    62              "Query": "select e.id, e.col, e.id as eid from user_extra as e",
    63              "Table": "user_extra"
    64            },
    65            {
    66              "OperatorType": "Route",
    67              "Variant": "EqualUnique",
    68              "Keyspace": {
    69                "Name": "user",
    70                "Sharded": true
    71              },
    72              "FieldQuery": "select u.id as uid from `user` as u where 1 != 1",
    73              "Query": "select u.id as uid from `user` as u where u.id = :e_id",
    74              "Table": "`user`",
    75              "Values": [
    76                ":e_id"
    77              ],
    78              "Vindex": "user_index"
    79            }
    80          ]
    81        },
    82        "TablesUsed": [
    83          "user.user",
    84          "user.user_extra"
    85        ]
    86      }
    87    },
    88    {
    89      "comment": "bind var already in use",
    90      "query": "select e.col, u.id uid, e.id eid from user u join user_extra e having uid = eid and e.col = :uid",
    91      "v3-plan": {
    92        "QueryType": "SELECT",
    93        "Original": "select e.col, u.id uid, e.id eid from user u join user_extra e having uid = eid and e.col = :uid",
    94        "Instructions": {
    95          "OperatorType": "Join",
    96          "Variant": "Join",
    97          "JoinColumnIndexes": "R:0,L:0,R:1",
    98          "JoinVars": {
    99            "uid1": 0
   100          },
   101          "TableName": "`user`_user_extra",
   102          "Inputs": [
   103            {
   104              "OperatorType": "Route",
   105              "Variant": "Scatter",
   106              "Keyspace": {
   107                "Name": "user",
   108                "Sharded": true
   109              },
   110              "FieldQuery": "select u.id as uid from `user` as u where 1 != 1",
   111              "Query": "select u.id as uid from `user` as u",
   112              "Table": "`user`"
   113            },
   114            {
   115              "OperatorType": "Route",
   116              "Variant": "Scatter",
   117              "Keyspace": {
   118                "Name": "user",
   119                "Sharded": true
   120              },
   121              "FieldQuery": "select e.col, e.id as eid from user_extra as e where 1 != 1",
   122              "Query": "select e.col, e.id as eid from user_extra as e having eid = :uid1 and e.col = :uid",
   123              "Table": "user_extra"
   124            }
   125          ]
   126        }
   127      },
   128      "gen4-plan": {
   129        "QueryType": "SELECT",
   130        "Original": "select e.col, u.id uid, e.id eid from user u join user_extra e having uid = eid and e.col = :uid",
   131        "Instructions": {
   132          "OperatorType": "Join",
   133          "Variant": "Join",
   134          "JoinColumnIndexes": "L:1,R:0,L:2",
   135          "JoinVars": {
   136            "e_id": 0
   137          },
   138          "TableName": "user_extra_`user`",
   139          "Inputs": [
   140            {
   141              "OperatorType": "Route",
   142              "Variant": "Scatter",
   143              "Keyspace": {
   144                "Name": "user",
   145                "Sharded": true
   146              },
   147              "FieldQuery": "select e.id, e.col, e.id as eid from user_extra as e where 1 != 1",
   148              "Query": "select e.id, e.col, e.id as eid from user_extra as e where e.col = :uid",
   149              "Table": "user_extra"
   150            },
   151            {
   152              "OperatorType": "Route",
   153              "Variant": "EqualUnique",
   154              "Keyspace": {
   155                "Name": "user",
   156                "Sharded": true
   157              },
   158              "FieldQuery": "select u.id as uid from `user` as u where 1 != 1",
   159              "Query": "select u.id as uid from `user` as u where u.id = :e_id",
   160              "Table": "`user`",
   161              "Values": [
   162                ":e_id"
   163              ],
   164              "Vindex": "user_index"
   165            }
   166          ]
   167        },
   168        "TablesUsed": [
   169          "user.user",
   170          "user.user_extra"
   171        ]
   172      }
   173    },
   174    {
   175      "comment": "wire-up join with join, going left",
   176      "query": "select u1.id from user u1 join user u2 join user u3 where u3.col = u1.col",
   177      "v3-plan": {
   178        "QueryType": "SELECT",
   179        "Original": "select u1.id from user u1 join user u2 join user u3 where u3.col = u1.col",
   180        "Instructions": {
   181          "OperatorType": "Join",
   182          "Variant": "Join",
   183          "JoinColumnIndexes": "L:0",
   184          "JoinVars": {
   185            "u1_col": 1
   186          },
   187          "TableName": "`user`_`user`_`user`",
   188          "Inputs": [
   189            {
   190              "OperatorType": "Join",
   191              "Variant": "Join",
   192              "JoinColumnIndexes": "L:0,L:1",
   193              "TableName": "`user`_`user`",
   194              "Inputs": [
   195                {
   196                  "OperatorType": "Route",
   197                  "Variant": "Scatter",
   198                  "Keyspace": {
   199                    "Name": "user",
   200                    "Sharded": true
   201                  },
   202                  "FieldQuery": "select u1.id, u1.col from `user` as u1 where 1 != 1",
   203                  "Query": "select u1.id, u1.col from `user` as u1",
   204                  "Table": "`user`"
   205                },
   206                {
   207                  "OperatorType": "Route",
   208                  "Variant": "Scatter",
   209                  "Keyspace": {
   210                    "Name": "user",
   211                    "Sharded": true
   212                  },
   213                  "FieldQuery": "select 1 from `user` as u2 where 1 != 1",
   214                  "Query": "select 1 from `user` as u2",
   215                  "Table": "`user`"
   216                }
   217              ]
   218            },
   219            {
   220              "OperatorType": "Route",
   221              "Variant": "Scatter",
   222              "Keyspace": {
   223                "Name": "user",
   224                "Sharded": true
   225              },
   226              "FieldQuery": "select 1 from `user` as u3 where 1 != 1",
   227              "Query": "select 1 from `user` as u3 where u3.col = :u1_col",
   228              "Table": "`user`"
   229            }
   230          ]
   231        }
   232      },
   233      "gen4-plan": {
   234        "QueryType": "SELECT",
   235        "Original": "select u1.id from user u1 join user u2 join user u3 where u3.col = u1.col",
   236        "Instructions": {
   237          "OperatorType": "Join",
   238          "Variant": "Join",
   239          "JoinColumnIndexes": "R:0",
   240          "TableName": "`user`_`user`_`user`",
   241          "Inputs": [
   242            {
   243              "OperatorType": "Route",
   244              "Variant": "Scatter",
   245              "Keyspace": {
   246                "Name": "user",
   247                "Sharded": true
   248              },
   249              "FieldQuery": "select 1 from `user` as u2 where 1 != 1",
   250              "Query": "select 1 from `user` as u2",
   251              "Table": "`user`"
   252            },
   253            {
   254              "OperatorType": "Join",
   255              "Variant": "Join",
   256              "JoinColumnIndexes": "L:1",
   257              "JoinVars": {
   258                "u1_col": 0
   259              },
   260              "TableName": "`user`_`user`",
   261              "Inputs": [
   262                {
   263                  "OperatorType": "Route",
   264                  "Variant": "Scatter",
   265                  "Keyspace": {
   266                    "Name": "user",
   267                    "Sharded": true
   268                  },
   269                  "FieldQuery": "select u1.col, u1.id from `user` as u1 where 1 != 1",
   270                  "Query": "select u1.col, u1.id from `user` as u1",
   271                  "Table": "`user`"
   272                },
   273                {
   274                  "OperatorType": "Route",
   275                  "Variant": "Scatter",
   276                  "Keyspace": {
   277                    "Name": "user",
   278                    "Sharded": true
   279                  },
   280                  "FieldQuery": "select 1 from `user` as u3 where 1 != 1",
   281                  "Query": "select 1 from `user` as u3 where u3.col = :u1_col",
   282                  "Table": "`user`"
   283                }
   284              ]
   285            }
   286          ]
   287        },
   288        "TablesUsed": [
   289          "user.user"
   290        ]
   291      }
   292    },
   293    {
   294      "comment": "wire-up join with join, going left, then right",
   295      "query": "select u1.id from user u1 join user u2 join user u3 where u3.col = u2.col",
   296      "v3-plan": {
   297        "QueryType": "SELECT",
   298        "Original": "select u1.id from user u1 join user u2 join user u3 where u3.col = u2.col",
   299        "Instructions": {
   300          "OperatorType": "Join",
   301          "Variant": "Join",
   302          "JoinColumnIndexes": "L:0",
   303          "JoinVars": {
   304            "u2_col": 1
   305          },
   306          "TableName": "`user`_`user`_`user`",
   307          "Inputs": [
   308            {
   309              "OperatorType": "Join",
   310              "Variant": "Join",
   311              "JoinColumnIndexes": "L:0,R:0",
   312              "TableName": "`user`_`user`",
   313              "Inputs": [
   314                {
   315                  "OperatorType": "Route",
   316                  "Variant": "Scatter",
   317                  "Keyspace": {
   318                    "Name": "user",
   319                    "Sharded": true
   320                  },
   321                  "FieldQuery": "select u1.id from `user` as u1 where 1 != 1",
   322                  "Query": "select u1.id from `user` as u1",
   323                  "Table": "`user`"
   324                },
   325                {
   326                  "OperatorType": "Route",
   327                  "Variant": "Scatter",
   328                  "Keyspace": {
   329                    "Name": "user",
   330                    "Sharded": true
   331                  },
   332                  "FieldQuery": "select u2.col from `user` as u2 where 1 != 1",
   333                  "Query": "select u2.col from `user` as u2",
   334                  "Table": "`user`"
   335                }
   336              ]
   337            },
   338            {
   339              "OperatorType": "Route",
   340              "Variant": "Scatter",
   341              "Keyspace": {
   342                "Name": "user",
   343                "Sharded": true
   344              },
   345              "FieldQuery": "select 1 from `user` as u3 where 1 != 1",
   346              "Query": "select 1 from `user` as u3 where u3.col = :u2_col",
   347              "Table": "`user`"
   348            }
   349          ]
   350        }
   351      },
   352      "gen4-plan": {
   353        "QueryType": "SELECT",
   354        "Original": "select u1.id from user u1 join user u2 join user u3 where u3.col = u2.col",
   355        "Instructions": {
   356          "OperatorType": "Join",
   357          "Variant": "Join",
   358          "JoinColumnIndexes": "L:0",
   359          "TableName": "`user`_`user`_`user`",
   360          "Inputs": [
   361            {
   362              "OperatorType": "Route",
   363              "Variant": "Scatter",
   364              "Keyspace": {
   365                "Name": "user",
   366                "Sharded": true
   367              },
   368              "FieldQuery": "select u1.id from `user` as u1 where 1 != 1",
   369              "Query": "select u1.id from `user` as u1",
   370              "Table": "`user`"
   371            },
   372            {
   373              "OperatorType": "Join",
   374              "Variant": "Join",
   375              "JoinVars": {
   376                "u2_col": 0
   377              },
   378              "TableName": "`user`_`user`",
   379              "Inputs": [
   380                {
   381                  "OperatorType": "Route",
   382                  "Variant": "Scatter",
   383                  "Keyspace": {
   384                    "Name": "user",
   385                    "Sharded": true
   386                  },
   387                  "FieldQuery": "select u2.col from `user` as u2 where 1 != 1",
   388                  "Query": "select u2.col from `user` as u2",
   389                  "Table": "`user`"
   390                },
   391                {
   392                  "OperatorType": "Route",
   393                  "Variant": "Scatter",
   394                  "Keyspace": {
   395                    "Name": "user",
   396                    "Sharded": true
   397                  },
   398                  "FieldQuery": "select 1 from `user` as u3 where 1 != 1",
   399                  "Query": "select 1 from `user` as u3 where u3.col = :u2_col",
   400                  "Table": "`user`"
   401                }
   402              ]
   403            }
   404          ]
   405        },
   406        "TablesUsed": [
   407          "user.user"
   408        ]
   409      }
   410    },
   411    {
   412      "comment": "wire-up join with join, reuse existing result from a lower join",
   413      "query": "select u1.id from user u1 join user u2 on u2.col = u1.col join user u3 where u3.col = u1.col",
   414      "v3-plan": {
   415        "QueryType": "SELECT",
   416        "Original": "select u1.id from user u1 join user u2 on u2.col = u1.col join user u3 where u3.col = u1.col",
   417        "Instructions": {
   418          "OperatorType": "Join",
   419          "Variant": "Join",
   420          "JoinColumnIndexes": "L:0",
   421          "JoinVars": {
   422            "u1_col": 1
   423          },
   424          "TableName": "`user`_`user`_`user`",
   425          "Inputs": [
   426            {
   427              "OperatorType": "Join",
   428              "Variant": "Join",
   429              "JoinColumnIndexes": "L:0,L:1",
   430              "JoinVars": {
   431                "u1_col": 1
   432              },
   433              "TableName": "`user`_`user`",
   434              "Inputs": [
   435                {
   436                  "OperatorType": "Route",
   437                  "Variant": "Scatter",
   438                  "Keyspace": {
   439                    "Name": "user",
   440                    "Sharded": true
   441                  },
   442                  "FieldQuery": "select u1.id, u1.col from `user` as u1 where 1 != 1",
   443                  "Query": "select u1.id, u1.col from `user` as u1",
   444                  "Table": "`user`"
   445                },
   446                {
   447                  "OperatorType": "Route",
   448                  "Variant": "Scatter",
   449                  "Keyspace": {
   450                    "Name": "user",
   451                    "Sharded": true
   452                  },
   453                  "FieldQuery": "select 1 from `user` as u2 where 1 != 1",
   454                  "Query": "select 1 from `user` as u2 where u2.col = :u1_col",
   455                  "Table": "`user`"
   456                }
   457              ]
   458            },
   459            {
   460              "OperatorType": "Route",
   461              "Variant": "Scatter",
   462              "Keyspace": {
   463                "Name": "user",
   464                "Sharded": true
   465              },
   466              "FieldQuery": "select 1 from `user` as u3 where 1 != 1",
   467              "Query": "select 1 from `user` as u3 where u3.col = :u1_col",
   468              "Table": "`user`"
   469            }
   470          ]
   471        }
   472      },
   473      "gen4-plan": {
   474        "QueryType": "SELECT",
   475        "Original": "select u1.id from user u1 join user u2 on u2.col = u1.col join user u3 where u3.col = u1.col",
   476        "Instructions": {
   477          "OperatorType": "Join",
   478          "Variant": "Join",
   479          "JoinColumnIndexes": "R:0",
   480          "JoinVars": {
   481            "u3_col": 0
   482          },
   483          "TableName": "`user`_`user`_`user`",
   484          "Inputs": [
   485            {
   486              "OperatorType": "Route",
   487              "Variant": "Scatter",
   488              "Keyspace": {
   489                "Name": "user",
   490                "Sharded": true
   491              },
   492              "FieldQuery": "select u3.col from `user` as u3 where 1 != 1",
   493              "Query": "select u3.col from `user` as u3",
   494              "Table": "`user`"
   495            },
   496            {
   497              "OperatorType": "Join",
   498              "Variant": "Join",
   499              "JoinColumnIndexes": "L:1",
   500              "JoinVars": {
   501                "u1_col": 0
   502              },
   503              "TableName": "`user`_`user`",
   504              "Inputs": [
   505                {
   506                  "OperatorType": "Route",
   507                  "Variant": "Scatter",
   508                  "Keyspace": {
   509                    "Name": "user",
   510                    "Sharded": true
   511                  },
   512                  "FieldQuery": "select u1.col, u1.id from `user` as u1 where 1 != 1",
   513                  "Query": "select u1.col, u1.id from `user` as u1 where u1.col = :u3_col",
   514                  "Table": "`user`"
   515                },
   516                {
   517                  "OperatorType": "Route",
   518                  "Variant": "Scatter",
   519                  "Keyspace": {
   520                    "Name": "user",
   521                    "Sharded": true
   522                  },
   523                  "FieldQuery": "select 1 from `user` as u2 where 1 != 1",
   524                  "Query": "select 1 from `user` as u2 where u2.col = :u1_col",
   525                  "Table": "`user`"
   526                }
   527              ]
   528            }
   529          ]
   530        },
   531        "TablesUsed": [
   532          "user.user"
   533        ]
   534      }
   535    },
   536    {
   537      "comment": "wire-up join with join, reuse existing result from a lower join.\n# You need two levels of join nesting to test this: when u3 requests\n# col from u1, the u1-u2 joins exports the column to u2-u3. When\n# u4 requests it, it should be reused from the u1-u2 join.",
   538      "query": "select u1.id from user u1 join user u2 join user u3 on u3.id = u1.col join user u4 where u4.col = u1.col",
   539      "v3-plan": {
   540        "QueryType": "SELECT",
   541        "Original": "select u1.id from user u1 join user u2 join user u3 on u3.id = u1.col join user u4 where u4.col = u1.col",
   542        "Instructions": {
   543          "OperatorType": "Join",
   544          "Variant": "Join",
   545          "JoinColumnIndexes": "L:0",
   546          "JoinVars": {
   547            "u1_col": 1
   548          },
   549          "TableName": "`user`_`user`_`user`_`user`",
   550          "Inputs": [
   551            {
   552              "OperatorType": "Join",
   553              "Variant": "Join",
   554              "JoinColumnIndexes": "L:0,L:1",
   555              "JoinVars": {
   556                "u1_col": 1
   557              },
   558              "TableName": "`user`_`user`_`user`",
   559              "Inputs": [
   560                {
   561                  "OperatorType": "Join",
   562                  "Variant": "Join",
   563                  "JoinColumnIndexes": "L:0,L:1",
   564                  "TableName": "`user`_`user`",
   565                  "Inputs": [
   566                    {
   567                      "OperatorType": "Route",
   568                      "Variant": "Scatter",
   569                      "Keyspace": {
   570                        "Name": "user",
   571                        "Sharded": true
   572                      },
   573                      "FieldQuery": "select u1.id, u1.col from `user` as u1 where 1 != 1",
   574                      "Query": "select u1.id, u1.col from `user` as u1",
   575                      "Table": "`user`"
   576                    },
   577                    {
   578                      "OperatorType": "Route",
   579                      "Variant": "Scatter",
   580                      "Keyspace": {
   581                        "Name": "user",
   582                        "Sharded": true
   583                      },
   584                      "FieldQuery": "select 1 from `user` as u2 where 1 != 1",
   585                      "Query": "select 1 from `user` as u2",
   586                      "Table": "`user`"
   587                    }
   588                  ]
   589                },
   590                {
   591                  "OperatorType": "Route",
   592                  "Variant": "EqualUnique",
   593                  "Keyspace": {
   594                    "Name": "user",
   595                    "Sharded": true
   596                  },
   597                  "FieldQuery": "select 1 from `user` as u3 where 1 != 1",
   598                  "Query": "select 1 from `user` as u3 where u3.id = :u1_col",
   599                  "Table": "`user`",
   600                  "Values": [
   601                    ":u1_col"
   602                  ],
   603                  "Vindex": "user_index"
   604                }
   605              ]
   606            },
   607            {
   608              "OperatorType": "Route",
   609              "Variant": "Scatter",
   610              "Keyspace": {
   611                "Name": "user",
   612                "Sharded": true
   613              },
   614              "FieldQuery": "select 1 from `user` as u4 where 1 != 1",
   615              "Query": "select 1 from `user` as u4 where u4.col = :u1_col",
   616              "Table": "`user`"
   617            }
   618          ]
   619        }
   620      },
   621      "gen4-plan": {
   622        "QueryType": "SELECT",
   623        "Original": "select u1.id from user u1 join user u2 join user u3 on u3.id = u1.col join user u4 where u4.col = u1.col",
   624        "Instructions": {
   625          "OperatorType": "Join",
   626          "Variant": "Join",
   627          "JoinColumnIndexes": "R:0",
   628          "TableName": "`user`_`user`_`user`_`user`",
   629          "Inputs": [
   630            {
   631              "OperatorType": "Route",
   632              "Variant": "Scatter",
   633              "Keyspace": {
   634                "Name": "user",
   635                "Sharded": true
   636              },
   637              "FieldQuery": "select 1 from `user` as u2 where 1 != 1",
   638              "Query": "select 1 from `user` as u2",
   639              "Table": "`user`"
   640            },
   641            {
   642              "OperatorType": "Join",
   643              "Variant": "Join",
   644              "JoinColumnIndexes": "R:0",
   645              "JoinVars": {
   646                "u4_col": 0
   647              },
   648              "TableName": "`user`_`user`_`user`",
   649              "Inputs": [
   650                {
   651                  "OperatorType": "Route",
   652                  "Variant": "Scatter",
   653                  "Keyspace": {
   654                    "Name": "user",
   655                    "Sharded": true
   656                  },
   657                  "FieldQuery": "select u4.col from `user` as u4 where 1 != 1",
   658                  "Query": "select u4.col from `user` as u4",
   659                  "Table": "`user`"
   660                },
   661                {
   662                  "OperatorType": "Join",
   663                  "Variant": "Join",
   664                  "JoinColumnIndexes": "L:1",
   665                  "JoinVars": {
   666                    "u1_col": 0
   667                  },
   668                  "TableName": "`user`_`user`",
   669                  "Inputs": [
   670                    {
   671                      "OperatorType": "Route",
   672                      "Variant": "Scatter",
   673                      "Keyspace": {
   674                        "Name": "user",
   675                        "Sharded": true
   676                      },
   677                      "FieldQuery": "select u1.col, u1.id from `user` as u1 where 1 != 1",
   678                      "Query": "select u1.col, u1.id from `user` as u1 where u1.col = :u4_col",
   679                      "Table": "`user`"
   680                    },
   681                    {
   682                      "OperatorType": "Route",
   683                      "Variant": "EqualUnique",
   684                      "Keyspace": {
   685                        "Name": "user",
   686                        "Sharded": true
   687                      },
   688                      "FieldQuery": "select 1 from `user` as u3 where 1 != 1",
   689                      "Query": "select 1 from `user` as u3 where u3.id = :u1_col",
   690                      "Table": "`user`",
   691                      "Values": [
   692                        ":u1_col"
   693                      ],
   694                      "Vindex": "user_index"
   695                    }
   696                  ]
   697                }
   698              ]
   699            }
   700          ]
   701        },
   702        "TablesUsed": [
   703          "user.user"
   704        ]
   705      }
   706    },
   707    {
   708      "comment": "Test reuse of join var already being supplied to the right of a node.",
   709      "query": "select u1.id from user u1 join (user u2 join user u3) where u2.id = u1.col and u3.id = u1.col",
   710      "v3-plan": {
   711        "QueryType": "SELECT",
   712        "Original": "select u1.id from user u1 join (user u2 join user u3) where u2.id = u1.col and u3.id = u1.col",
   713        "Instructions": {
   714          "OperatorType": "Join",
   715          "Variant": "Join",
   716          "JoinColumnIndexes": "L:0",
   717          "JoinVars": {
   718            "u1_col": 1
   719          },
   720          "TableName": "`user`_`user`_`user`",
   721          "Inputs": [
   722            {
   723              "OperatorType": "Route",
   724              "Variant": "Scatter",
   725              "Keyspace": {
   726                "Name": "user",
   727                "Sharded": true
   728              },
   729              "FieldQuery": "select u1.id, u1.col from `user` as u1 where 1 != 1",
   730              "Query": "select u1.id, u1.col from `user` as u1",
   731              "Table": "`user`"
   732            },
   733            {
   734              "OperatorType": "Join",
   735              "Variant": "Join",
   736              "TableName": "`user`_`user`",
   737              "Inputs": [
   738                {
   739                  "OperatorType": "Route",
   740                  "Variant": "EqualUnique",
   741                  "Keyspace": {
   742                    "Name": "user",
   743                    "Sharded": true
   744                  },
   745                  "FieldQuery": "select 1 from `user` as u2 where 1 != 1",
   746                  "Query": "select 1 from `user` as u2 where u2.id = :u1_col",
   747                  "Table": "`user`",
   748                  "Values": [
   749                    ":u1_col"
   750                  ],
   751                  "Vindex": "user_index"
   752                },
   753                {
   754                  "OperatorType": "Route",
   755                  "Variant": "EqualUnique",
   756                  "Keyspace": {
   757                    "Name": "user",
   758                    "Sharded": true
   759                  },
   760                  "FieldQuery": "select 1 from `user` as u3 where 1 != 1",
   761                  "Query": "select 1 from `user` as u3 where u3.id = :u1_col",
   762                  "Table": "`user`",
   763                  "Values": [
   764                    ":u1_col"
   765                  ],
   766                  "Vindex": "user_index"
   767                }
   768              ]
   769            }
   770          ]
   771        }
   772      },
   773      "gen4-plan": {
   774        "QueryType": "SELECT",
   775        "Original": "select u1.id from user u1 join (user u2 join user u3) where u2.id = u1.col and u3.id = u1.col",
   776        "Instructions": {
   777          "OperatorType": "Join",
   778          "Variant": "Join",
   779          "JoinColumnIndexes": "L:1",
   780          "JoinVars": {
   781            "u1_col": 0
   782          },
   783          "TableName": "`user`_`user`_`user`",
   784          "Inputs": [
   785            {
   786              "OperatorType": "Join",
   787              "Variant": "Join",
   788              "JoinColumnIndexes": "L:0,L:1",
   789              "JoinVars": {
   790                "u1_col": 0
   791              },
   792              "TableName": "`user`_`user`",
   793              "Inputs": [
   794                {
   795                  "OperatorType": "Route",
   796                  "Variant": "Scatter",
   797                  "Keyspace": {
   798                    "Name": "user",
   799                    "Sharded": true
   800                  },
   801                  "FieldQuery": "select u1.col, u1.id from `user` as u1 where 1 != 1",
   802                  "Query": "select u1.col, u1.id from `user` as u1",
   803                  "Table": "`user`"
   804                },
   805                {
   806                  "OperatorType": "Route",
   807                  "Variant": "EqualUnique",
   808                  "Keyspace": {
   809                    "Name": "user",
   810                    "Sharded": true
   811                  },
   812                  "FieldQuery": "select 1 from `user` as u2 where 1 != 1",
   813                  "Query": "select 1 from `user` as u2 where u2.id = :u1_col",
   814                  "Table": "`user`",
   815                  "Values": [
   816                    ":u1_col"
   817                  ],
   818                  "Vindex": "user_index"
   819                }
   820              ]
   821            },
   822            {
   823              "OperatorType": "Route",
   824              "Variant": "EqualUnique",
   825              "Keyspace": {
   826                "Name": "user",
   827                "Sharded": true
   828              },
   829              "FieldQuery": "select 1 from `user` as u3 where 1 != 1",
   830              "Query": "select 1 from `user` as u3 where u3.id = :u1_col",
   831              "Table": "`user`",
   832              "Values": [
   833                ":u1_col"
   834              ],
   835              "Vindex": "user_index"
   836            }
   837          ]
   838        },
   839        "TablesUsed": [
   840          "user.user"
   841        ]
   842      }
   843    },
   844    {
   845      "comment": "Join on weird columns.",
   846      "query": "select `weird``name`.a, unsharded.b from `weird``name` join unsharded on `weird``name`.`a``b*c` = unsharded.id",
   847      "v3-plan": {
   848        "QueryType": "SELECT",
   849        "Original": "select `weird``name`.a, unsharded.b from `weird``name` join unsharded on `weird``name`.`a``b*c` = unsharded.id",
   850        "Instructions": {
   851          "OperatorType": "Join",
   852          "Variant": "Join",
   853          "JoinColumnIndexes": "L:0,R:0",
   854          "JoinVars": {
   855            "weird_name_a_b_c": 1
   856          },
   857          "TableName": "`weird``name`_unsharded",
   858          "Inputs": [
   859            {
   860              "OperatorType": "Route",
   861              "Variant": "Scatter",
   862              "Keyspace": {
   863                "Name": "user",
   864                "Sharded": true
   865              },
   866              "FieldQuery": "select `weird``name`.a, `weird``name`.`a``b*c` from `weird``name` where 1 != 1",
   867              "Query": "select `weird``name`.a, `weird``name`.`a``b*c` from `weird``name`",
   868              "Table": "`weird``name`"
   869            },
   870            {
   871              "OperatorType": "Route",
   872              "Variant": "Unsharded",
   873              "Keyspace": {
   874                "Name": "main",
   875                "Sharded": false
   876              },
   877              "FieldQuery": "select unsharded.b from unsharded where 1 != 1",
   878              "Query": "select unsharded.b from unsharded where unsharded.id = :weird_name_a_b_c",
   879              "Table": "unsharded"
   880            }
   881          ]
   882        }
   883      },
   884      "gen4-plan": {
   885        "QueryType": "SELECT",
   886        "Original": "select `weird``name`.a, unsharded.b from `weird``name` join unsharded on `weird``name`.`a``b*c` = unsharded.id",
   887        "Instructions": {
   888          "OperatorType": "Join",
   889          "Variant": "Join",
   890          "JoinColumnIndexes": "R:0,L:1",
   891          "JoinVars": {
   892            "unsharded_id": 0
   893          },
   894          "TableName": "unsharded_`weird``name`",
   895          "Inputs": [
   896            {
   897              "OperatorType": "Route",
   898              "Variant": "Unsharded",
   899              "Keyspace": {
   900                "Name": "main",
   901                "Sharded": false
   902              },
   903              "FieldQuery": "select unsharded.id, unsharded.b from unsharded where 1 != 1",
   904              "Query": "select unsharded.id, unsharded.b from unsharded",
   905              "Table": "unsharded"
   906            },
   907            {
   908              "OperatorType": "Route",
   909              "Variant": "EqualUnique",
   910              "Keyspace": {
   911                "Name": "user",
   912                "Sharded": true
   913              },
   914              "FieldQuery": "select `weird``name`.a from `weird``name` where 1 != 1",
   915              "Query": "select `weird``name`.a from `weird``name` where `weird``name`.`a``b*c` = :unsharded_id",
   916              "Table": "`weird``name`",
   917              "Values": [
   918                ":unsharded_id"
   919              ],
   920              "Vindex": "user_index"
   921            }
   922          ]
   923        },
   924        "TablesUsed": [
   925          "main.unsharded",
   926          "user.weird`name"
   927        ]
   928      }
   929    },
   930    {
   931      "comment": "Join on weird column (col is not in select)",
   932      "query": "select unsharded.b from `weird``name` join unsharded on `weird``name`.`a``b*c` = unsharded.id",
   933      "v3-plan": {
   934        "QueryType": "SELECT",
   935        "Original": "select unsharded.b from `weird``name` join unsharded on `weird``name`.`a``b*c` = unsharded.id",
   936        "Instructions": {
   937          "OperatorType": "Join",
   938          "Variant": "Join",
   939          "JoinColumnIndexes": "R:0",
   940          "JoinVars": {
   941            "weird_name_a_b_c": 0
   942          },
   943          "TableName": "`weird``name`_unsharded",
   944          "Inputs": [
   945            {
   946              "OperatorType": "Route",
   947              "Variant": "Scatter",
   948              "Keyspace": {
   949                "Name": "user",
   950                "Sharded": true
   951              },
   952              "FieldQuery": "select `weird``name`.`a``b*c` from `weird``name` where 1 != 1",
   953              "Query": "select `weird``name`.`a``b*c` from `weird``name`",
   954              "Table": "`weird``name`"
   955            },
   956            {
   957              "OperatorType": "Route",
   958              "Variant": "Unsharded",
   959              "Keyspace": {
   960                "Name": "main",
   961                "Sharded": false
   962              },
   963              "FieldQuery": "select unsharded.b from unsharded where 1 != 1",
   964              "Query": "select unsharded.b from unsharded where unsharded.id = :weird_name_a_b_c",
   965              "Table": "unsharded"
   966            }
   967          ]
   968        }
   969      },
   970      "gen4-plan": {
   971        "QueryType": "SELECT",
   972        "Original": "select unsharded.b from `weird``name` join unsharded on `weird``name`.`a``b*c` = unsharded.id",
   973        "Instructions": {
   974          "OperatorType": "Join",
   975          "Variant": "Join",
   976          "JoinColumnIndexes": "L:1",
   977          "JoinVars": {
   978            "unsharded_id": 0
   979          },
   980          "TableName": "unsharded_`weird``name`",
   981          "Inputs": [
   982            {
   983              "OperatorType": "Route",
   984              "Variant": "Unsharded",
   985              "Keyspace": {
   986                "Name": "main",
   987                "Sharded": false
   988              },
   989              "FieldQuery": "select unsharded.id, unsharded.b from unsharded where 1 != 1",
   990              "Query": "select unsharded.id, unsharded.b from unsharded",
   991              "Table": "unsharded"
   992            },
   993            {
   994              "OperatorType": "Route",
   995              "Variant": "EqualUnique",
   996              "Keyspace": {
   997                "Name": "user",
   998                "Sharded": true
   999              },
  1000              "FieldQuery": "select 1 from `weird``name` where 1 != 1",
  1001              "Query": "select 1 from `weird``name` where `weird``name`.`a``b*c` = :unsharded_id",
  1002              "Table": "`weird``name`",
  1003              "Values": [
  1004                ":unsharded_id"
  1005              ],
  1006              "Vindex": "user_index"
  1007            }
  1008          ]
  1009        },
  1010        "TablesUsed": [
  1011          "main.unsharded",
  1012          "user.weird`name"
  1013        ]
  1014      }
  1015    },
  1016    {
  1017      "comment": "wire-up with limit primitive",
  1018      "query": "select u.id, e.id from user u join user_extra e where e.id = u.col limit 10",
  1019      "v3-plan": {
  1020        "QueryType": "SELECT",
  1021        "Original": "select u.id, e.id from user u join user_extra e where e.id = u.col limit 10",
  1022        "Instructions": {
  1023          "OperatorType": "Limit",
  1024          "Count": "INT64(10)",
  1025          "Inputs": [
  1026            {
  1027              "OperatorType": "Join",
  1028              "Variant": "Join",
  1029              "JoinColumnIndexes": "L:0,R:0",
  1030              "JoinVars": {
  1031                "u_col": 1
  1032              },
  1033              "TableName": "`user`_user_extra",
  1034              "Inputs": [
  1035                {
  1036                  "OperatorType": "Route",
  1037                  "Variant": "Scatter",
  1038                  "Keyspace": {
  1039                    "Name": "user",
  1040                    "Sharded": true
  1041                  },
  1042                  "FieldQuery": "select u.id, u.col from `user` as u where 1 != 1",
  1043                  "Query": "select u.id, u.col from `user` as u",
  1044                  "Table": "`user`"
  1045                },
  1046                {
  1047                  "OperatorType": "Route",
  1048                  "Variant": "Scatter",
  1049                  "Keyspace": {
  1050                    "Name": "user",
  1051                    "Sharded": true
  1052                  },
  1053                  "FieldQuery": "select e.id from user_extra as e where 1 != 1",
  1054                  "Query": "select e.id from user_extra as e where e.id = :u_col",
  1055                  "Table": "user_extra"
  1056                }
  1057              ]
  1058            }
  1059          ]
  1060        }
  1061      },
  1062      "gen4-plan": {
  1063        "QueryType": "SELECT",
  1064        "Original": "select u.id, e.id from user u join user_extra e where e.id = u.col limit 10",
  1065        "Instructions": {
  1066          "OperatorType": "Limit",
  1067          "Count": "INT64(10)",
  1068          "Inputs": [
  1069            {
  1070              "OperatorType": "Join",
  1071              "Variant": "Join",
  1072              "JoinColumnIndexes": "L:1,R:0",
  1073              "JoinVars": {
  1074                "u_col": 0
  1075              },
  1076              "TableName": "`user`_user_extra",
  1077              "Inputs": [
  1078                {
  1079                  "OperatorType": "Route",
  1080                  "Variant": "Scatter",
  1081                  "Keyspace": {
  1082                    "Name": "user",
  1083                    "Sharded": true
  1084                  },
  1085                  "FieldQuery": "select u.col, u.id from `user` as u where 1 != 1",
  1086                  "Query": "select u.col, u.id from `user` as u",
  1087                  "Table": "`user`"
  1088                },
  1089                {
  1090                  "OperatorType": "Route",
  1091                  "Variant": "Scatter",
  1092                  "Keyspace": {
  1093                    "Name": "user",
  1094                    "Sharded": true
  1095                  },
  1096                  "FieldQuery": "select e.id from user_extra as e where 1 != 1",
  1097                  "Query": "select e.id from user_extra as e where e.id = :u_col",
  1098                  "Table": "user_extra"
  1099                }
  1100              ]
  1101            }
  1102          ]
  1103        },
  1104        "TablesUsed": [
  1105          "user.user",
  1106          "user.user_extra"
  1107        ]
  1108      }
  1109    },
  1110    {
  1111      "comment": "Wire-up in subquery",
  1112      "query": "select 1 from user where id in (select u.id, e.id from user u join user_extra e where e.id = u.col limit 10)",
  1113      "v3-plan": {
  1114        "QueryType": "SELECT",
  1115        "Original": "select 1 from user where id in (select u.id, e.id from user u join user_extra e where e.id = u.col limit 10)",
  1116        "Instructions": {
  1117          "OperatorType": "Subquery",
  1118          "Variant": "PulloutIn",
  1119          "PulloutVars": [
  1120            "__sq_has_values1",
  1121            "__sq1"
  1122          ],
  1123          "Inputs": [
  1124            {
  1125              "OperatorType": "Limit",
  1126              "Count": "INT64(10)",
  1127              "Inputs": [
  1128                {
  1129                  "OperatorType": "Join",
  1130                  "Variant": "Join",
  1131                  "JoinColumnIndexes": "L:0,R:0",
  1132                  "JoinVars": {
  1133                    "u_col": 1
  1134                  },
  1135                  "TableName": "`user`_user_extra",
  1136                  "Inputs": [
  1137                    {
  1138                      "OperatorType": "Route",
  1139                      "Variant": "Scatter",
  1140                      "Keyspace": {
  1141                        "Name": "user",
  1142                        "Sharded": true
  1143                      },
  1144                      "FieldQuery": "select u.id, u.col from `user` as u where 1 != 1",
  1145                      "Query": "select u.id, u.col from `user` as u",
  1146                      "Table": "`user`"
  1147                    },
  1148                    {
  1149                      "OperatorType": "Route",
  1150                      "Variant": "Scatter",
  1151                      "Keyspace": {
  1152                        "Name": "user",
  1153                        "Sharded": true
  1154                      },
  1155                      "FieldQuery": "select e.id from user_extra as e where 1 != 1",
  1156                      "Query": "select e.id from user_extra as e where e.id = :u_col",
  1157                      "Table": "user_extra"
  1158                    }
  1159                  ]
  1160                }
  1161              ]
  1162            },
  1163            {
  1164              "OperatorType": "Route",
  1165              "Variant": "IN",
  1166              "Keyspace": {
  1167                "Name": "user",
  1168                "Sharded": true
  1169              },
  1170              "FieldQuery": "select 1 from `user` where 1 != 1",
  1171              "Query": "select 1 from `user` where :__sq_has_values1 = 1 and id in ::__vals",
  1172              "Table": "`user`",
  1173              "Values": [
  1174                ":__sq1"
  1175              ],
  1176              "Vindex": "user_index"
  1177            }
  1178          ]
  1179        }
  1180      },
  1181      "gen4-plan": {
  1182        "QueryType": "SELECT",
  1183        "Original": "select 1 from user where id in (select u.id, e.id from user u join user_extra e where e.id = u.col limit 10)",
  1184        "Instructions": {
  1185          "OperatorType": "Subquery",
  1186          "Variant": "PulloutIn",
  1187          "PulloutVars": [
  1188            "__sq_has_values1",
  1189            "__sq1"
  1190          ],
  1191          "Inputs": [
  1192            {
  1193              "OperatorType": "Limit",
  1194              "Count": "INT64(10)",
  1195              "Inputs": [
  1196                {
  1197                  "OperatorType": "Join",
  1198                  "Variant": "Join",
  1199                  "JoinColumnIndexes": "L:1,R:0",
  1200                  "JoinVars": {
  1201                    "u_col": 0
  1202                  },
  1203                  "TableName": "`user`_user_extra",
  1204                  "Inputs": [
  1205                    {
  1206                      "OperatorType": "Route",
  1207                      "Variant": "Scatter",
  1208                      "Keyspace": {
  1209                        "Name": "user",
  1210                        "Sharded": true
  1211                      },
  1212                      "FieldQuery": "select u.col, u.id from `user` as u where 1 != 1",
  1213                      "Query": "select u.col, u.id from `user` as u",
  1214                      "Table": "`user`"
  1215                    },
  1216                    {
  1217                      "OperatorType": "Route",
  1218                      "Variant": "Scatter",
  1219                      "Keyspace": {
  1220                        "Name": "user",
  1221                        "Sharded": true
  1222                      },
  1223                      "FieldQuery": "select e.id from user_extra as e where 1 != 1",
  1224                      "Query": "select e.id from user_extra as e where e.id = :u_col",
  1225                      "Table": "user_extra"
  1226                    }
  1227                  ]
  1228                }
  1229              ]
  1230            },
  1231            {
  1232              "OperatorType": "Route",
  1233              "Variant": "IN",
  1234              "Keyspace": {
  1235                "Name": "user",
  1236                "Sharded": true
  1237              },
  1238              "FieldQuery": "select 1 from `user` where 1 != 1",
  1239              "Query": "select 1 from `user` where :__sq_has_values1 = 1 and id in ::__vals",
  1240              "Table": "`user`",
  1241              "Values": [
  1242                ":__sq1"
  1243              ],
  1244              "Vindex": "user_index"
  1245            }
  1246          ]
  1247        },
  1248        "TablesUsed": [
  1249          "user.user",
  1250          "user.user_extra"
  1251        ]
  1252      }
  1253    },
  1254    {
  1255      "comment": "Wire-up in underlying primitive after pullout",
  1256      "query": "select u.id, e.id, (select col from user) from user u join user_extra e where e.id = u.col limit 10",
  1257      "v3-plan": {
  1258        "QueryType": "SELECT",
  1259        "Original": "select u.id, e.id, (select col from user) from user u join user_extra e where e.id = u.col limit 10",
  1260        "Instructions": {
  1261          "OperatorType": "Limit",
  1262          "Count": "INT64(10)",
  1263          "Inputs": [
  1264            {
  1265              "OperatorType": "Subquery",
  1266              "Variant": "PulloutValue",
  1267              "PulloutVars": [
  1268                "__sq_has_values1",
  1269                "__sq1"
  1270              ],
  1271              "Inputs": [
  1272                {
  1273                  "OperatorType": "Route",
  1274                  "Variant": "Scatter",
  1275                  "Keyspace": {
  1276                    "Name": "user",
  1277                    "Sharded": true
  1278                  },
  1279                  "FieldQuery": "select col from `user` where 1 != 1",
  1280                  "Query": "select col from `user`",
  1281                  "Table": "`user`"
  1282                },
  1283                {
  1284                  "OperatorType": "Join",
  1285                  "Variant": "Join",
  1286                  "JoinColumnIndexes": "L:0,R:0,L:1",
  1287                  "JoinVars": {
  1288                    "u_col": 2
  1289                  },
  1290                  "TableName": "`user`_user_extra",
  1291                  "Inputs": [
  1292                    {
  1293                      "OperatorType": "Route",
  1294                      "Variant": "Scatter",
  1295                      "Keyspace": {
  1296                        "Name": "user",
  1297                        "Sharded": true
  1298                      },
  1299                      "FieldQuery": "select u.id, :__sq1, u.col from `user` as u where 1 != 1",
  1300                      "Query": "select u.id, :__sq1, u.col from `user` as u",
  1301                      "Table": "`user`"
  1302                    },
  1303                    {
  1304                      "OperatorType": "Route",
  1305                      "Variant": "Scatter",
  1306                      "Keyspace": {
  1307                        "Name": "user",
  1308                        "Sharded": true
  1309                      },
  1310                      "FieldQuery": "select e.id from user_extra as e where 1 != 1",
  1311                      "Query": "select e.id from user_extra as e where e.id = :u_col",
  1312                      "Table": "user_extra"
  1313                    }
  1314                  ]
  1315                }
  1316              ]
  1317            }
  1318          ]
  1319        }
  1320      },
  1321      "gen4-plan": {
  1322        "QueryType": "SELECT",
  1323        "Original": "select u.id, e.id, (select col from user) from user u join user_extra e where e.id = u.col limit 10",
  1324        "Instructions": {
  1325          "OperatorType": "Limit",
  1326          "Count": "INT64(10)",
  1327          "Inputs": [
  1328            {
  1329              "OperatorType": "Subquery",
  1330              "Variant": "PulloutValue",
  1331              "PulloutVars": [
  1332                "__sq1"
  1333              ],
  1334              "Inputs": [
  1335                {
  1336                  "OperatorType": "Route",
  1337                  "Variant": "Scatter",
  1338                  "Keyspace": {
  1339                    "Name": "user",
  1340                    "Sharded": true
  1341                  },
  1342                  "FieldQuery": "select col from `user` where 1 != 1",
  1343                  "Query": "select col from `user`",
  1344                  "Table": "`user`"
  1345                },
  1346                {
  1347                  "OperatorType": "Join",
  1348                  "Variant": "Join",
  1349                  "JoinColumnIndexes": "L:1,R:0,L:2",
  1350                  "JoinVars": {
  1351                    "u_col": 0
  1352                  },
  1353                  "TableName": "`user`_user_extra",
  1354                  "Inputs": [
  1355                    {
  1356                      "OperatorType": "Route",
  1357                      "Variant": "Scatter",
  1358                      "Keyspace": {
  1359                        "Name": "user",
  1360                        "Sharded": true
  1361                      },
  1362                      "FieldQuery": "select u.col, u.id, :__sq1 from `user` as u where 1 != 1",
  1363                      "Query": "select u.col, u.id, :__sq1 from `user` as u",
  1364                      "Table": "`user`"
  1365                    },
  1366                    {
  1367                      "OperatorType": "Route",
  1368                      "Variant": "Scatter",
  1369                      "Keyspace": {
  1370                        "Name": "user",
  1371                        "Sharded": true
  1372                      },
  1373                      "FieldQuery": "select e.id from user_extra as e where 1 != 1",
  1374                      "Query": "select e.id from user_extra as e where e.id = :u_col",
  1375                      "Table": "user_extra"
  1376                    }
  1377                  ]
  1378                }
  1379              ]
  1380            }
  1381          ]
  1382        },
  1383        "TablesUsed": [
  1384          "user.user",
  1385          "user.user_extra"
  1386        ]
  1387      }
  1388    },
  1389    {
  1390      "comment": "Invalid value in IN clause",
  1391      "query": "select id from user where id in (18446744073709551616, 1)",
  1392      "v3-plan": {
  1393        "QueryType": "SELECT",
  1394        "Original": "select id from user where id in (18446744073709551616, 1)",
  1395        "Instructions": {
  1396          "OperatorType": "Route",
  1397          "Variant": "IN",
  1398          "Keyspace": {
  1399            "Name": "user",
  1400            "Sharded": true
  1401          },
  1402          "FieldQuery": "select id from `user` where 1 != 1",
  1403          "Query": "select id from `user` where id in ::__vals",
  1404          "Table": "`user`",
  1405          "Values": [
  1406            "(DECIMAL(18446744073709551616), INT64(1))"
  1407          ],
  1408          "Vindex": "user_index"
  1409        }
  1410      },
  1411      "gen4-plan": {
  1412        "QueryType": "SELECT",
  1413        "Original": "select id from user where id in (18446744073709551616, 1)",
  1414        "Instructions": {
  1415          "OperatorType": "Route",
  1416          "Variant": "IN",
  1417          "Keyspace": {
  1418            "Name": "user",
  1419            "Sharded": true
  1420          },
  1421          "FieldQuery": "select id from `user` where 1 != 1",
  1422          "Query": "select id from `user` where id in ::__vals",
  1423          "Table": "`user`",
  1424          "Values": [
  1425            "(DECIMAL(18446744073709551616), INT64(1))"
  1426          ],
  1427          "Vindex": "user_index"
  1428        },
  1429        "TablesUsed": [
  1430          "user.user"
  1431        ]
  1432      }
  1433    },
  1434    {
  1435      "comment": "Invalid value in IN clause from LHS of join",
  1436      "query": "select u1.id from user u1 join user u2 where u1.id = 18446744073709551616",
  1437      "v3-plan": {
  1438        "QueryType": "SELECT",
  1439        "Original": "select u1.id from user u1 join user u2 where u1.id = 18446744073709551616",
  1440        "Instructions": {
  1441          "OperatorType": "Join",
  1442          "Variant": "Join",
  1443          "JoinColumnIndexes": "L:0",
  1444          "TableName": "`user`_`user`",
  1445          "Inputs": [
  1446            {
  1447              "OperatorType": "Route",
  1448              "Variant": "EqualUnique",
  1449              "Keyspace": {
  1450                "Name": "user",
  1451                "Sharded": true
  1452              },
  1453              "FieldQuery": "select u1.id from `user` as u1 where 1 != 1",
  1454              "Query": "select u1.id from `user` as u1 where u1.id = 18446744073709551616",
  1455              "Table": "`user`",
  1456              "Values": [
  1457                "DECIMAL(18446744073709551616)"
  1458              ],
  1459              "Vindex": "user_index"
  1460            },
  1461            {
  1462              "OperatorType": "Route",
  1463              "Variant": "Scatter",
  1464              "Keyspace": {
  1465                "Name": "user",
  1466                "Sharded": true
  1467              },
  1468              "FieldQuery": "select 1 from `user` as u2 where 1 != 1",
  1469              "Query": "select 1 from `user` as u2",
  1470              "Table": "`user`"
  1471            }
  1472          ]
  1473        }
  1474      },
  1475      "gen4-plan": {
  1476        "QueryType": "SELECT",
  1477        "Original": "select u1.id from user u1 join user u2 where u1.id = 18446744073709551616",
  1478        "Instructions": {
  1479          "OperatorType": "Join",
  1480          "Variant": "Join",
  1481          "JoinColumnIndexes": "L:0",
  1482          "TableName": "`user`_`user`",
  1483          "Inputs": [
  1484            {
  1485              "OperatorType": "Route",
  1486              "Variant": "EqualUnique",
  1487              "Keyspace": {
  1488                "Name": "user",
  1489                "Sharded": true
  1490              },
  1491              "FieldQuery": "select u1.id from `user` as u1 where 1 != 1",
  1492              "Query": "select u1.id from `user` as u1 where u1.id = 18446744073709551616",
  1493              "Table": "`user`",
  1494              "Values": [
  1495                "DECIMAL(18446744073709551616)"
  1496              ],
  1497              "Vindex": "user_index"
  1498            },
  1499            {
  1500              "OperatorType": "Route",
  1501              "Variant": "Scatter",
  1502              "Keyspace": {
  1503                "Name": "user",
  1504                "Sharded": true
  1505              },
  1506              "FieldQuery": "select 1 from `user` as u2 where 1 != 1",
  1507              "Query": "select 1 from `user` as u2",
  1508              "Table": "`user`"
  1509            }
  1510          ]
  1511        },
  1512        "TablesUsed": [
  1513          "user.user"
  1514        ]
  1515      }
  1516    },
  1517    {
  1518      "comment": "Invalid value in IN clause from RHS of join",
  1519      "query": "select u1.id from user u1 join user u2 where u2.id = 18446744073709551616",
  1520      "v3-plan": {
  1521        "QueryType": "SELECT",
  1522        "Original": "select u1.id from user u1 join user u2 where u2.id = 18446744073709551616",
  1523        "Instructions": {
  1524          "OperatorType": "Join",
  1525          "Variant": "Join",
  1526          "JoinColumnIndexes": "L:0",
  1527          "TableName": "`user`_`user`",
  1528          "Inputs": [
  1529            {
  1530              "OperatorType": "Route",
  1531              "Variant": "Scatter",
  1532              "Keyspace": {
  1533                "Name": "user",
  1534                "Sharded": true
  1535              },
  1536              "FieldQuery": "select u1.id from `user` as u1 where 1 != 1",
  1537              "Query": "select u1.id from `user` as u1",
  1538              "Table": "`user`"
  1539            },
  1540            {
  1541              "OperatorType": "Route",
  1542              "Variant": "EqualUnique",
  1543              "Keyspace": {
  1544                "Name": "user",
  1545                "Sharded": true
  1546              },
  1547              "FieldQuery": "select 1 from `user` as u2 where 1 != 1",
  1548              "Query": "select 1 from `user` as u2 where u2.id = 18446744073709551616",
  1549              "Table": "`user`",
  1550              "Values": [
  1551                "DECIMAL(18446744073709551616)"
  1552              ],
  1553              "Vindex": "user_index"
  1554            }
  1555          ]
  1556        }
  1557      },
  1558      "gen4-plan": {
  1559        "QueryType": "SELECT",
  1560        "Original": "select u1.id from user u1 join user u2 where u2.id = 18446744073709551616",
  1561        "Instructions": {
  1562          "OperatorType": "Join",
  1563          "Variant": "Join",
  1564          "JoinColumnIndexes": "L:0",
  1565          "TableName": "`user`_`user`",
  1566          "Inputs": [
  1567            {
  1568              "OperatorType": "Route",
  1569              "Variant": "Scatter",
  1570              "Keyspace": {
  1571                "Name": "user",
  1572                "Sharded": true
  1573              },
  1574              "FieldQuery": "select u1.id from `user` as u1 where 1 != 1",
  1575              "Query": "select u1.id from `user` as u1",
  1576              "Table": "`user`"
  1577            },
  1578            {
  1579              "OperatorType": "Route",
  1580              "Variant": "EqualUnique",
  1581              "Keyspace": {
  1582                "Name": "user",
  1583                "Sharded": true
  1584              },
  1585              "FieldQuery": "select 1 from `user` as u2 where 1 != 1",
  1586              "Query": "select 1 from `user` as u2 where u2.id = 18446744073709551616",
  1587              "Table": "`user`",
  1588              "Values": [
  1589                "DECIMAL(18446744073709551616)"
  1590              ],
  1591              "Vindex": "user_index"
  1592            }
  1593          ]
  1594        },
  1595        "TablesUsed": [
  1596          "user.user"
  1597        ]
  1598      }
  1599    },
  1600    {
  1601      "comment": "derived table with column aliases not supported by v3, but planner is overridden with hint",
  1602      "query": "select /*vt+ PLANNER=gen4 */ u.a from (select id as b, name from user) u(a, n) where u.n = 1",
  1603      "plan": {
  1604        "QueryType": "SELECT",
  1605        "Original": "select /*vt+ PLANNER=gen4 */ u.a from (select id as b, name from user) u(a, n) where u.n = 1",
  1606        "Instructions": {
  1607          "OperatorType": "VindexLookup",
  1608          "Variant": "Equal",
  1609          "Keyspace": {
  1610            "Name": "user",
  1611            "Sharded": true
  1612          },
  1613          "Values": [
  1614            "INT64(1)"
  1615          ],
  1616          "Vindex": "name_user_map",
  1617          "Inputs": [
  1618            {
  1619              "OperatorType": "Route",
  1620              "Variant": "IN",
  1621              "Keyspace": {
  1622                "Name": "user",
  1623                "Sharded": true
  1624              },
  1625              "FieldQuery": "select `name`, keyspace_id from name_user_vdx where 1 != 1",
  1626              "Query": "select `name`, keyspace_id from name_user_vdx where `name` in ::__vals",
  1627              "Table": "name_user_vdx",
  1628              "Values": [
  1629                ":name"
  1630              ],
  1631              "Vindex": "user_index"
  1632            },
  1633            {
  1634              "OperatorType": "Route",
  1635              "Variant": "ByDestination",
  1636              "Keyspace": {
  1637                "Name": "user",
  1638                "Sharded": true
  1639              },
  1640              "FieldQuery": "select u.a from (select id as b, `name` from `user` where 1 != 1) as u(a, n) where 1 != 1",
  1641              "Query": "select /*vt+ PLANNER=gen4 */ u.a from (select id as b, `name` from `user` where `name` = 1) as u(a, n)",
  1642              "Table": "`user`"
  1643            }
  1644          ]
  1645        },
  1646        "TablesUsed": [
  1647          "user.user"
  1648        ]
  1649      }
  1650    },
  1651    {
  1652      "comment": "derived table with column aliases not supported by v3, but planner is overridden with hint",
  1653      "query": "select /*vt+ PLANNER=v3 */ u.a from (select id as b, name from user) u(a, n) where u.n = 1",
  1654      "plan": "VT12001: unsupported: column aliases in derived table"
  1655    },
  1656    {
  1657      "comment": "Three-way join using the left2right. The normal gen4 planner would merge m1 and m2 first, but the left to right doesnt",
  1658      "query": "select /*vt+ PLANNER=left2right */ user.col from user join unsharded as m1 join unsharded as m2",
  1659      "plan": {
  1660        "QueryType": "SELECT",
  1661        "Original": "select /*vt+ PLANNER=left2right */ user.col from user join unsharded as m1 join unsharded as m2",
  1662        "Instructions": {
  1663          "OperatorType": "Join",
  1664          "Variant": "Join",
  1665          "JoinColumnIndexes": "L:0",
  1666          "TableName": "`user`_unsharded_unsharded",
  1667          "Inputs": [
  1668            {
  1669              "OperatorType": "Join",
  1670              "Variant": "Join",
  1671              "JoinColumnIndexes": "L:0",
  1672              "TableName": "`user`_unsharded",
  1673              "Inputs": [
  1674                {
  1675                  "OperatorType": "Route",
  1676                  "Variant": "Scatter",
  1677                  "Keyspace": {
  1678                    "Name": "user",
  1679                    "Sharded": true
  1680                  },
  1681                  "FieldQuery": "select `user`.col from `user` where 1 != 1",
  1682                  "Query": "select /*vt+ PLANNER=left2right */ `user`.col from `user`",
  1683                  "Table": "`user`"
  1684                },
  1685                {
  1686                  "OperatorType": "Route",
  1687                  "Variant": "Unsharded",
  1688                  "Keyspace": {
  1689                    "Name": "main",
  1690                    "Sharded": false
  1691                  },
  1692                  "FieldQuery": "select 1 from unsharded as m1 where 1 != 1",
  1693                  "Query": "select /*vt+ PLANNER=left2right */ 1 from unsharded as m1",
  1694                  "Table": "unsharded"
  1695                }
  1696              ]
  1697            },
  1698            {
  1699              "OperatorType": "Route",
  1700              "Variant": "Unsharded",
  1701              "Keyspace": {
  1702                "Name": "main",
  1703                "Sharded": false
  1704              },
  1705              "FieldQuery": "select 1 from unsharded as m2 where 1 != 1",
  1706              "Query": "select /*vt+ PLANNER=left2right */ 1 from unsharded as m2",
  1707              "Table": "unsharded"
  1708            }
  1709          ]
  1710        },
  1711        "TablesUsed": [
  1712          "main.unsharded",
  1713          "user.user"
  1714        ]
  1715      }
  1716    }
  1717  ]