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

     1  [
     2    {
     3      "comment": "No column referenced",
     4      "query": "select 1 from user",
     5      "v3-plan": {
     6        "QueryType": "SELECT",
     7        "Original": "select 1 from user",
     8        "Instructions": {
     9          "OperatorType": "Route",
    10          "Variant": "Scatter",
    11          "Keyspace": {
    12            "Name": "user",
    13            "Sharded": true
    14          },
    15          "FieldQuery": "select 1 from `user` where 1 != 1",
    16          "Query": "select 1 from `user`",
    17          "Table": "`user`"
    18        }
    19      },
    20      "gen4-plan": {
    21        "QueryType": "SELECT",
    22        "Original": "select 1 from user",
    23        "Instructions": {
    24          "OperatorType": "Route",
    25          "Variant": "Scatter",
    26          "Keyspace": {
    27            "Name": "user",
    28            "Sharded": true
    29          },
    30          "FieldQuery": "select 1 from `user` where 1 != 1",
    31          "Query": "select 1 from `user`",
    32          "Table": "`user`"
    33        },
    34        "TablesUsed": [
    35          "user.user"
    36        ]
    37      }
    38    },
    39    {
    40      "comment": "'*' expression for simple route",
    41      "query": "select user.* from user",
    42      "v3-plan": {
    43        "QueryType": "SELECT",
    44        "Original": "select user.* from user",
    45        "Instructions": {
    46          "OperatorType": "Route",
    47          "Variant": "Scatter",
    48          "Keyspace": {
    49            "Name": "user",
    50            "Sharded": true
    51          },
    52          "FieldQuery": "select `user`.* from `user` where 1 != 1",
    53          "Query": "select `user`.* from `user`",
    54          "Table": "`user`"
    55        }
    56      },
    57      "gen4-plan": {
    58        "QueryType": "SELECT",
    59        "Original": "select user.* from user",
    60        "Instructions": {
    61          "OperatorType": "Route",
    62          "Variant": "Scatter",
    63          "Keyspace": {
    64            "Name": "user",
    65            "Sharded": true
    66          },
    67          "FieldQuery": "select `user`.* from `user` where 1 != 1",
    68          "Query": "select `user`.* from `user`",
    69          "Table": "`user`"
    70        },
    71        "TablesUsed": [
    72          "user.user"
    73        ]
    74      }
    75    },
    76    {
    77      "comment": "unqualified '*' expression for simple route",
    78      "query": "select * from user",
    79      "v3-plan": {
    80        "QueryType": "SELECT",
    81        "Original": "select * from user",
    82        "Instructions": {
    83          "OperatorType": "Route",
    84          "Variant": "Scatter",
    85          "Keyspace": {
    86            "Name": "user",
    87            "Sharded": true
    88          },
    89          "FieldQuery": "select * from `user` where 1 != 1",
    90          "Query": "select * from `user`",
    91          "Table": "`user`"
    92        }
    93      },
    94      "gen4-plan": {
    95        "QueryType": "SELECT",
    96        "Original": "select * from user",
    97        "Instructions": {
    98          "OperatorType": "Route",
    99          "Variant": "Scatter",
   100          "Keyspace": {
   101            "Name": "user",
   102            "Sharded": true
   103          },
   104          "FieldQuery": "select * from `user` where 1 != 1",
   105          "Query": "select * from `user`",
   106          "Table": "`user`"
   107        },
   108        "TablesUsed": [
   109          "user.user"
   110        ]
   111      }
   112    },
   113    {
   114      "comment": "select with timeout directive sets QueryTimeout in the route",
   115      "query": "select /*vt+ QUERY_TIMEOUT_MS=1000 */ * from user",
   116      "v3-plan": {
   117        "QueryType": "SELECT",
   118        "Original": "select /*vt+ QUERY_TIMEOUT_MS=1000 */ * from user",
   119        "Instructions": {
   120          "OperatorType": "Route",
   121          "Variant": "Scatter",
   122          "Keyspace": {
   123            "Name": "user",
   124            "Sharded": true
   125          },
   126          "FieldQuery": "select * from `user` where 1 != 1",
   127          "Query": "select /*vt+ QUERY_TIMEOUT_MS=1000 */ * from `user`",
   128          "QueryTimeout": 1000,
   129          "Table": "`user`"
   130        }
   131      },
   132      "gen4-plan": {
   133        "QueryType": "SELECT",
   134        "Original": "select /*vt+ QUERY_TIMEOUT_MS=1000 */ * from user",
   135        "Instructions": {
   136          "OperatorType": "Route",
   137          "Variant": "Scatter",
   138          "Keyspace": {
   139            "Name": "user",
   140            "Sharded": true
   141          },
   142          "FieldQuery": "select * from `user` where 1 != 1",
   143          "Query": "select /*vt+ QUERY_TIMEOUT_MS=1000 */ * from `user`",
   144          "QueryTimeout": 1000,
   145          "Table": "`user`"
   146        },
   147        "TablesUsed": [
   148          "user.user"
   149        ]
   150      }
   151    },
   152    {
   153      "comment": "select aggregation with timeout directive sets QueryTimeout in the route",
   154      "query": "select /*vt+ QUERY_TIMEOUT_MS=1000 */ count(*) from user",
   155      "v3-plan": {
   156        "QueryType": "SELECT",
   157        "Original": "select /*vt+ QUERY_TIMEOUT_MS=1000 */ count(*) from user",
   158        "Instructions": {
   159          "OperatorType": "Aggregate",
   160          "Variant": "Scalar",
   161          "Aggregates": "sum_count(0) AS count",
   162          "Inputs": [
   163            {
   164              "OperatorType": "Route",
   165              "Variant": "Scatter",
   166              "Keyspace": {
   167                "Name": "user",
   168                "Sharded": true
   169              },
   170              "FieldQuery": "select count(*) from `user` where 1 != 1",
   171              "Query": "select /*vt+ QUERY_TIMEOUT_MS=1000 */ count(*) from `user`",
   172              "QueryTimeout": 1000,
   173              "Table": "`user`"
   174            }
   175          ]
   176        }
   177      },
   178      "gen4-plan": {
   179        "QueryType": "SELECT",
   180        "Original": "select /*vt+ QUERY_TIMEOUT_MS=1000 */ count(*) from user",
   181        "Instructions": {
   182          "OperatorType": "Aggregate",
   183          "Variant": "Scalar",
   184          "Aggregates": "sum_count_star(0) AS count(*)",
   185          "Inputs": [
   186            {
   187              "OperatorType": "Route",
   188              "Variant": "Scatter",
   189              "Keyspace": {
   190                "Name": "user",
   191                "Sharded": true
   192              },
   193              "FieldQuery": "select count(*) from `user` where 1 != 1",
   194              "Query": "select /*vt+ QUERY_TIMEOUT_MS=1000 */ count(*) from `user`",
   195              "QueryTimeout": 1000,
   196              "Table": "`user`"
   197            }
   198          ]
   199        },
   200        "TablesUsed": [
   201          "user.user"
   202        ]
   203      }
   204    },
   205    {
   206      "comment": "select limit with timeout directive sets QueryTimeout in the route",
   207      "query": "select /*vt+ QUERY_TIMEOUT_MS=1000 */ * from user limit 10",
   208      "v3-plan": {
   209        "QueryType": "SELECT",
   210        "Original": "select /*vt+ QUERY_TIMEOUT_MS=1000 */ * from user limit 10",
   211        "Instructions": {
   212          "OperatorType": "Limit",
   213          "Count": "INT64(10)",
   214          "Inputs": [
   215            {
   216              "OperatorType": "Route",
   217              "Variant": "Scatter",
   218              "Keyspace": {
   219                "Name": "user",
   220                "Sharded": true
   221              },
   222              "FieldQuery": "select * from `user` where 1 != 1",
   223              "Query": "select /*vt+ QUERY_TIMEOUT_MS=1000 */ * from `user` limit :__upper_limit",
   224              "QueryTimeout": 1000,
   225              "Table": "`user`"
   226            }
   227          ]
   228        }
   229      },
   230      "gen4-plan": {
   231        "QueryType": "SELECT",
   232        "Original": "select /*vt+ QUERY_TIMEOUT_MS=1000 */ * from user limit 10",
   233        "Instructions": {
   234          "OperatorType": "Limit",
   235          "Count": "INT64(10)",
   236          "Inputs": [
   237            {
   238              "OperatorType": "Route",
   239              "Variant": "Scatter",
   240              "Keyspace": {
   241                "Name": "user",
   242                "Sharded": true
   243              },
   244              "FieldQuery": "select * from `user` where 1 != 1",
   245              "Query": "select /*vt+ QUERY_TIMEOUT_MS=1000 */ * from `user` limit :__upper_limit",
   246              "QueryTimeout": 1000,
   247              "Table": "`user`"
   248            }
   249          ]
   250        },
   251        "TablesUsed": [
   252          "user.user"
   253        ]
   254      }
   255    },
   256    {
   257      "comment": "select limit with timeout directive sets QueryTimeout in the route",
   258      "query": "select /*vt+ QUERY_TIMEOUT_MS=1000 */ * from main.unsharded limit 10",
   259      "v3-plan": {
   260        "QueryType": "SELECT",
   261        "Original": "select /*vt+ QUERY_TIMEOUT_MS=1000 */ * from main.unsharded limit 10",
   262        "Instructions": {
   263          "OperatorType": "Route",
   264          "Variant": "Unsharded",
   265          "Keyspace": {
   266            "Name": "main",
   267            "Sharded": false
   268          },
   269          "FieldQuery": "select * from unsharded where 1 != 1",
   270          "Query": "select /*vt+ QUERY_TIMEOUT_MS=1000 */ * from unsharded limit 10",
   271          "QueryTimeout": 1000,
   272          "Table": "unsharded"
   273        }
   274      },
   275      "gen4-plan": {
   276        "QueryType": "SELECT",
   277        "Original": "select /*vt+ QUERY_TIMEOUT_MS=1000 */ * from main.unsharded limit 10",
   278        "Instructions": {
   279          "OperatorType": "Route",
   280          "Variant": "Unsharded",
   281          "Keyspace": {
   282            "Name": "main",
   283            "Sharded": false
   284          },
   285          "FieldQuery": "select * from unsharded where 1 != 1",
   286          "Query": "select /*vt+ QUERY_TIMEOUT_MS=1000 */ * from unsharded limit 10",
   287          "QueryTimeout": 1000,
   288          "Table": "unsharded"
   289        },
   290        "TablesUsed": [
   291          "main.unsharded"
   292        ]
   293      }
   294    },
   295    {
   296      "comment": "select with partial scatter directive",
   297      "query": "select /*vt+ SCATTER_ERRORS_AS_WARNINGS */ * from user",
   298      "v3-plan": {
   299        "QueryType": "SELECT",
   300        "Original": "select /*vt+ SCATTER_ERRORS_AS_WARNINGS */ * from user",
   301        "Instructions": {
   302          "OperatorType": "Route",
   303          "Variant": "Scatter",
   304          "Keyspace": {
   305            "Name": "user",
   306            "Sharded": true
   307          },
   308          "FieldQuery": "select * from `user` where 1 != 1",
   309          "Query": "select /*vt+ SCATTER_ERRORS_AS_WARNINGS */ * from `user`",
   310          "ScatterErrorsAsWarnings": true,
   311          "Table": "`user`"
   312        }
   313      },
   314      "gen4-plan": {
   315        "QueryType": "SELECT",
   316        "Original": "select /*vt+ SCATTER_ERRORS_AS_WARNINGS */ * from user",
   317        "Instructions": {
   318          "OperatorType": "Route",
   319          "Variant": "Scatter",
   320          "Keyspace": {
   321            "Name": "user",
   322            "Sharded": true
   323          },
   324          "FieldQuery": "select * from `user` where 1 != 1",
   325          "Query": "select /*vt+ SCATTER_ERRORS_AS_WARNINGS */ * from `user`",
   326          "ScatterErrorsAsWarnings": true,
   327          "Table": "`user`"
   328        },
   329        "TablesUsed": [
   330          "user.user"
   331        ]
   332      }
   333    },
   334    {
   335      "comment": "select aggregation with partial scatter directive",
   336      "query": "select /*vt+ SCATTER_ERRORS_AS_WARNINGS=1 */ count(*) from user",
   337      "v3-plan": {
   338        "QueryType": "SELECT",
   339        "Original": "select /*vt+ SCATTER_ERRORS_AS_WARNINGS=1 */ count(*) from user",
   340        "Instructions": {
   341          "OperatorType": "Aggregate",
   342          "Variant": "Scalar",
   343          "Aggregates": "sum_count(0) AS count",
   344          "Inputs": [
   345            {
   346              "OperatorType": "Route",
   347              "Variant": "Scatter",
   348              "Keyspace": {
   349                "Name": "user",
   350                "Sharded": true
   351              },
   352              "FieldQuery": "select count(*) from `user` where 1 != 1",
   353              "Query": "select /*vt+ SCATTER_ERRORS_AS_WARNINGS=1 */ count(*) from `user`",
   354              "ScatterErrorsAsWarnings": true,
   355              "Table": "`user`"
   356            }
   357          ]
   358        }
   359      },
   360      "gen4-plan": {
   361        "QueryType": "SELECT",
   362        "Original": "select /*vt+ SCATTER_ERRORS_AS_WARNINGS=1 */ count(*) from user",
   363        "Instructions": {
   364          "OperatorType": "Aggregate",
   365          "Variant": "Scalar",
   366          "Aggregates": "sum_count_star(0) AS count(*)",
   367          "Inputs": [
   368            {
   369              "OperatorType": "Route",
   370              "Variant": "Scatter",
   371              "Keyspace": {
   372                "Name": "user",
   373                "Sharded": true
   374              },
   375              "FieldQuery": "select count(*) from `user` where 1 != 1",
   376              "Query": "select /*vt+ SCATTER_ERRORS_AS_WARNINGS=1 */ count(*) from `user`",
   377              "ScatterErrorsAsWarnings": true,
   378              "Table": "`user`"
   379            }
   380          ]
   381        },
   382        "TablesUsed": [
   383          "user.user"
   384        ]
   385      }
   386    },
   387    {
   388      "comment": "select aggregation with partial scatter directive - added comments to try to confuse the hint extraction",
   389      "query": "/*VT_SPAN_CONTEXT=123*/select /*vt+ SCATTER_ERRORS_AS_WARNINGS=1 */ count(*) from user",
   390      "v3-plan": {
   391        "QueryType": "SELECT",
   392        "Original": "/*VT_SPAN_CONTEXT=123*/select /*vt+ SCATTER_ERRORS_AS_WARNINGS=1 */ count(*) from user",
   393        "Instructions": {
   394          "OperatorType": "Aggregate",
   395          "Variant": "Scalar",
   396          "Aggregates": "sum_count(0) AS count",
   397          "Inputs": [
   398            {
   399              "OperatorType": "Route",
   400              "Variant": "Scatter",
   401              "Keyspace": {
   402                "Name": "user",
   403                "Sharded": true
   404              },
   405              "FieldQuery": "select count(*) from `user` where 1 != 1",
   406              "Query": "select /*vt+ SCATTER_ERRORS_AS_WARNINGS=1 */ count(*) from `user`",
   407              "ScatterErrorsAsWarnings": true,
   408              "Table": "`user`"
   409            }
   410          ]
   411        }
   412      },
   413      "gen4-plan": {
   414        "QueryType": "SELECT",
   415        "Original": "/*VT_SPAN_CONTEXT=123*/select /*vt+ SCATTER_ERRORS_AS_WARNINGS=1 */ count(*) from user",
   416        "Instructions": {
   417          "OperatorType": "Aggregate",
   418          "Variant": "Scalar",
   419          "Aggregates": "sum_count_star(0) AS count(*)",
   420          "Inputs": [
   421            {
   422              "OperatorType": "Route",
   423              "Variant": "Scatter",
   424              "Keyspace": {
   425                "Name": "user",
   426                "Sharded": true
   427              },
   428              "FieldQuery": "select count(*) from `user` where 1 != 1",
   429              "Query": "select /*vt+ SCATTER_ERRORS_AS_WARNINGS=1 */ count(*) from `user`",
   430              "ScatterErrorsAsWarnings": true,
   431              "Table": "`user`"
   432            }
   433          ]
   434        },
   435        "TablesUsed": [
   436          "user.user"
   437        ]
   438      }
   439    },
   440    {
   441      "comment": "select limit with partial scatter directive",
   442      "query": "select /*vt+ SCATTER_ERRORS_AS_WARNINGS=1 */ * from user limit 10",
   443      "v3-plan": {
   444        "QueryType": "SELECT",
   445        "Original": "select /*vt+ SCATTER_ERRORS_AS_WARNINGS=1 */ * from user limit 10",
   446        "Instructions": {
   447          "OperatorType": "Limit",
   448          "Count": "INT64(10)",
   449          "Inputs": [
   450            {
   451              "OperatorType": "Route",
   452              "Variant": "Scatter",
   453              "Keyspace": {
   454                "Name": "user",
   455                "Sharded": true
   456              },
   457              "FieldQuery": "select * from `user` where 1 != 1",
   458              "Query": "select /*vt+ SCATTER_ERRORS_AS_WARNINGS=1 */ * from `user` limit :__upper_limit",
   459              "ScatterErrorsAsWarnings": true,
   460              "Table": "`user`"
   461            }
   462          ]
   463        }
   464      },
   465      "gen4-plan": {
   466        "QueryType": "SELECT",
   467        "Original": "select /*vt+ SCATTER_ERRORS_AS_WARNINGS=1 */ * from user limit 10",
   468        "Instructions": {
   469          "OperatorType": "Limit",
   470          "Count": "INT64(10)",
   471          "Inputs": [
   472            {
   473              "OperatorType": "Route",
   474              "Variant": "Scatter",
   475              "Keyspace": {
   476                "Name": "user",
   477                "Sharded": true
   478              },
   479              "FieldQuery": "select * from `user` where 1 != 1",
   480              "Query": "select /*vt+ SCATTER_ERRORS_AS_WARNINGS=1 */ * from `user` limit :__upper_limit",
   481              "ScatterErrorsAsWarnings": true,
   482              "Table": "`user`"
   483            }
   484          ]
   485        },
   486        "TablesUsed": [
   487          "user.user"
   488        ]
   489      }
   490    },
   491    {
   492      "comment": "qualified '*' expression for simple route",
   493      "query": "select user.* from user",
   494      "v3-plan": {
   495        "QueryType": "SELECT",
   496        "Original": "select user.* from user",
   497        "Instructions": {
   498          "OperatorType": "Route",
   499          "Variant": "Scatter",
   500          "Keyspace": {
   501            "Name": "user",
   502            "Sharded": true
   503          },
   504          "FieldQuery": "select `user`.* from `user` where 1 != 1",
   505          "Query": "select `user`.* from `user`",
   506          "Table": "`user`"
   507        }
   508      },
   509      "gen4-plan": {
   510        "QueryType": "SELECT",
   511        "Original": "select user.* from user",
   512        "Instructions": {
   513          "OperatorType": "Route",
   514          "Variant": "Scatter",
   515          "Keyspace": {
   516            "Name": "user",
   517            "Sharded": true
   518          },
   519          "FieldQuery": "select `user`.* from `user` where 1 != 1",
   520          "Query": "select `user`.* from `user`",
   521          "Table": "`user`"
   522        },
   523        "TablesUsed": [
   524          "user.user"
   525        ]
   526      }
   527    },
   528    {
   529      "comment": "fully qualified '*' expression for simple route",
   530      "query": "select user.user.* from user.user",
   531      "v3-plan": {
   532        "QueryType": "SELECT",
   533        "Original": "select user.user.* from user.user",
   534        "Instructions": {
   535          "OperatorType": "Route",
   536          "Variant": "Scatter",
   537          "Keyspace": {
   538            "Name": "user",
   539            "Sharded": true
   540          },
   541          "FieldQuery": "select `user`.* from `user` where 1 != 1",
   542          "Query": "select `user`.* from `user`",
   543          "Table": "`user`"
   544        }
   545      },
   546      "gen4-plan": {
   547        "QueryType": "SELECT",
   548        "Original": "select user.user.* from user.user",
   549        "Instructions": {
   550          "OperatorType": "Route",
   551          "Variant": "Scatter",
   552          "Keyspace": {
   553            "Name": "user",
   554            "Sharded": true
   555          },
   556          "FieldQuery": "select `user`.* from `user` where 1 != 1",
   557          "Query": "select `user`.* from `user`",
   558          "Table": "`user`"
   559        },
   560        "TablesUsed": [
   561          "user.user"
   562        ]
   563      }
   564    },
   565    {
   566      "comment": "select * from authoritative table",
   567      "query": "select * from authoritative",
   568      "v3-plan": {
   569        "QueryType": "SELECT",
   570        "Original": "select * from authoritative",
   571        "Instructions": {
   572          "OperatorType": "Route",
   573          "Variant": "Scatter",
   574          "Keyspace": {
   575            "Name": "user",
   576            "Sharded": true
   577          },
   578          "FieldQuery": "select user_id, col1, col2 from authoritative where 1 != 1",
   579          "Query": "select user_id, col1, col2 from authoritative",
   580          "Table": "authoritative"
   581        }
   582      },
   583      "gen4-plan": {
   584        "QueryType": "SELECT",
   585        "Original": "select * from authoritative",
   586        "Instructions": {
   587          "OperatorType": "Route",
   588          "Variant": "Scatter",
   589          "Keyspace": {
   590            "Name": "user",
   591            "Sharded": true
   592          },
   593          "FieldQuery": "select user_id, col1, col2 from authoritative where 1 != 1",
   594          "Query": "select user_id, col1, col2 from authoritative",
   595          "Table": "authoritative"
   596        },
   597        "TablesUsed": [
   598          "user.authoritative"
   599        ]
   600      }
   601    },
   602    {
   603      "comment": "select * from join of authoritative tables",
   604      "query": "select * from authoritative a join authoritative b on a.user_id=b.user_id",
   605      "v3-plan": {
   606        "QueryType": "SELECT",
   607        "Original": "select * from authoritative a join authoritative b on a.user_id=b.user_id",
   608        "Instructions": {
   609          "OperatorType": "Route",
   610          "Variant": "Scatter",
   611          "Keyspace": {
   612            "Name": "user",
   613            "Sharded": true
   614          },
   615          "FieldQuery": "select a.user_id as user_id, a.col1 as col1, a.col2 as col2, b.user_id as user_id, b.col1 as col1, b.col2 as col2 from authoritative as a join authoritative as b on a.user_id = b.user_id where 1 != 1",
   616          "Query": "select a.user_id as user_id, a.col1 as col1, a.col2 as col2, b.user_id as user_id, b.col1 as col1, b.col2 as col2 from authoritative as a join authoritative as b on a.user_id = b.user_id",
   617          "Table": "authoritative"
   618        }
   619      },
   620      "gen4-plan": {
   621        "QueryType": "SELECT",
   622        "Original": "select * from authoritative a join authoritative b on a.user_id=b.user_id",
   623        "Instructions": {
   624          "OperatorType": "Route",
   625          "Variant": "Scatter",
   626          "Keyspace": {
   627            "Name": "user",
   628            "Sharded": true
   629          },
   630          "FieldQuery": "select a.user_id as user_id, a.col1 as col1, a.col2 as col2, b.user_id as user_id, b.col1 as col1, b.col2 as col2 from authoritative as a, authoritative as b where 1 != 1",
   631          "Query": "select a.user_id as user_id, a.col1 as col1, a.col2 as col2, b.user_id as user_id, b.col1 as col1, b.col2 as col2 from authoritative as a, authoritative as b where a.user_id = b.user_id",
   632          "Table": "authoritative"
   633        },
   634        "TablesUsed": [
   635          "user.authoritative"
   636        ]
   637      }
   638    },
   639    {
   640      "comment": "test table lookup failure for authoritative code path",
   641      "query": "select a.* from authoritative",
   642      "v3-plan": "VT05004: table 'a' does not exist",
   643      "gen4-plan": "Unknown table 'a'"
   644    },
   645    {
   646      "comment": "select * from qualified authoritative table",
   647      "query": "select a.* from authoritative a",
   648      "v3-plan": {
   649        "QueryType": "SELECT",
   650        "Original": "select a.* from authoritative a",
   651        "Instructions": {
   652          "OperatorType": "Route",
   653          "Variant": "Scatter",
   654          "Keyspace": {
   655            "Name": "user",
   656            "Sharded": true
   657          },
   658          "FieldQuery": "select a.user_id, a.col1, a.col2 from authoritative as a where 1 != 1",
   659          "Query": "select a.user_id, a.col1, a.col2 from authoritative as a",
   660          "Table": "authoritative"
   661        }
   662      },
   663      "gen4-plan": {
   664        "QueryType": "SELECT",
   665        "Original": "select a.* from authoritative a",
   666        "Instructions": {
   667          "OperatorType": "Route",
   668          "Variant": "Scatter",
   669          "Keyspace": {
   670            "Name": "user",
   671            "Sharded": true
   672          },
   673          "FieldQuery": "select a.user_id, a.col1, a.col2 from authoritative as a where 1 != 1",
   674          "Query": "select a.user_id, a.col1, a.col2 from authoritative as a",
   675          "Table": "authoritative"
   676        },
   677        "TablesUsed": [
   678          "user.authoritative"
   679        ]
   680      }
   681    },
   682    {
   683      "comment": "select * from intermixing of authoritative table with non-authoritative results in no expansion",
   684      "query": "select * from authoritative join user on authoritative.user_id=user.id",
   685      "v3-plan": {
   686        "QueryType": "SELECT",
   687        "Original": "select * from authoritative join user on authoritative.user_id=user.id",
   688        "Instructions": {
   689          "OperatorType": "Route",
   690          "Variant": "Scatter",
   691          "Keyspace": {
   692            "Name": "user",
   693            "Sharded": true
   694          },
   695          "FieldQuery": "select * from authoritative join `user` on authoritative.user_id = `user`.id where 1 != 1",
   696          "Query": "select * from authoritative join `user` on authoritative.user_id = `user`.id",
   697          "Table": "authoritative, `user`"
   698        }
   699      },
   700      "gen4-plan": {
   701        "QueryType": "SELECT",
   702        "Original": "select * from authoritative join user on authoritative.user_id=user.id",
   703        "Instructions": {
   704          "OperatorType": "Route",
   705          "Variant": "Scatter",
   706          "Keyspace": {
   707            "Name": "user",
   708            "Sharded": true
   709          },
   710          "FieldQuery": "select * from authoritative, `user` where 1 != 1",
   711          "Query": "select * from authoritative, `user` where authoritative.user_id = `user`.id",
   712          "Table": "`user`, authoritative"
   713        },
   714        "TablesUsed": [
   715          "user.authoritative",
   716          "user.user"
   717        ]
   718      }
   719    },
   720    {
   721      "comment": "select authoritative.* with intermixing still expands",
   722      "query": "select user.id, a.*, user.col1 from authoritative a join user on a.user_id=user.id",
   723      "v3-plan": {
   724        "QueryType": "SELECT",
   725        "Original": "select user.id, a.*, user.col1 from authoritative a join user on a.user_id=user.id",
   726        "Instructions": {
   727          "OperatorType": "Route",
   728          "Variant": "Scatter",
   729          "Keyspace": {
   730            "Name": "user",
   731            "Sharded": true
   732          },
   733          "FieldQuery": "select `user`.id, a.user_id, a.col1, a.col2, `user`.col1 from authoritative as a join `user` on a.user_id = `user`.id where 1 != 1",
   734          "Query": "select `user`.id, a.user_id, a.col1, a.col2, `user`.col1 from authoritative as a join `user` on a.user_id = `user`.id",
   735          "Table": "authoritative, `user`"
   736        }
   737      },
   738      "gen4-plan": {
   739        "QueryType": "SELECT",
   740        "Original": "select user.id, a.*, user.col1 from authoritative a join user on a.user_id=user.id",
   741        "Instructions": {
   742          "OperatorType": "Route",
   743          "Variant": "Scatter",
   744          "Keyspace": {
   745            "Name": "user",
   746            "Sharded": true
   747          },
   748          "FieldQuery": "select `user`.id, a.user_id as user_id, a.col1 as col1, a.col2 as col2, `user`.col1 from authoritative as a, `user` where 1 != 1",
   749          "Query": "select `user`.id, a.user_id as user_id, a.col1 as col1, a.col2 as col2, `user`.col1 from authoritative as a, `user` where a.user_id = `user`.id",
   750          "Table": "`user`, authoritative"
   751        },
   752        "TablesUsed": [
   753          "user.authoritative",
   754          "user.user"
   755        ]
   756      }
   757    },
   758    {
   759      "comment": "auto-resolve anonymous columns for simple route",
   760      "query": "select anon_col from user join user_extra on user.id = user_extra.user_id",
   761      "v3-plan": {
   762        "QueryType": "SELECT",
   763        "Original": "select anon_col from user join user_extra on user.id = user_extra.user_id",
   764        "Instructions": {
   765          "OperatorType": "Route",
   766          "Variant": "Scatter",
   767          "Keyspace": {
   768            "Name": "user",
   769            "Sharded": true
   770          },
   771          "FieldQuery": "select anon_col from `user` join user_extra on `user`.id = user_extra.user_id where 1 != 1",
   772          "Query": "select anon_col from `user` join user_extra on `user`.id = user_extra.user_id",
   773          "Table": "`user`, user_extra"
   774        }
   775      },
   776      "gen4-plan": {
   777        "QueryType": "SELECT",
   778        "Original": "select anon_col from user join user_extra on user.id = user_extra.user_id",
   779        "Instructions": {
   780          "OperatorType": "Route",
   781          "Variant": "Scatter",
   782          "Keyspace": {
   783            "Name": "user",
   784            "Sharded": true
   785          },
   786          "FieldQuery": "select anon_col from `user`, user_extra where 1 != 1",
   787          "Query": "select anon_col from `user`, user_extra where `user`.id = user_extra.user_id",
   788          "Table": "`user`, user_extra"
   789        },
   790        "TablesUsed": [
   791          "user.user",
   792          "user.user_extra"
   793        ]
   794      }
   795    },
   796    {
   797      "comment": "Cannot auto-resolve for cross-shard joins",
   798      "query": "select col from user join user_extra",
   799      "v3-plan": "VT03019: symbol col not found",
   800      "gen4-plan": "Column 'col' in field list is ambiguous"
   801    },
   802    {
   803      "comment": "Auto-resolve should work if unique vindex columns are referenced",
   804      "query": "select id, user_id from user join user_extra",
   805      "v3-plan": {
   806        "QueryType": "SELECT",
   807        "Original": "select id, user_id from user join user_extra",
   808        "Instructions": {
   809          "OperatorType": "Join",
   810          "Variant": "Join",
   811          "JoinColumnIndexes": "L:0,R:0",
   812          "TableName": "`user`_user_extra",
   813          "Inputs": [
   814            {
   815              "OperatorType": "Route",
   816              "Variant": "Scatter",
   817              "Keyspace": {
   818                "Name": "user",
   819                "Sharded": true
   820              },
   821              "FieldQuery": "select id from `user` where 1 != 1",
   822              "Query": "select id from `user`",
   823              "Table": "`user`"
   824            },
   825            {
   826              "OperatorType": "Route",
   827              "Variant": "Scatter",
   828              "Keyspace": {
   829                "Name": "user",
   830                "Sharded": true
   831              },
   832              "FieldQuery": "select user_id from user_extra where 1 != 1",
   833              "Query": "select user_id from user_extra",
   834              "Table": "user_extra"
   835            }
   836          ]
   837        }
   838      },
   839      "gen4-plan": {
   840        "QueryType": "SELECT",
   841        "Original": "select id, user_id from user join user_extra",
   842        "Instructions": {
   843          "OperatorType": "Join",
   844          "Variant": "Join",
   845          "JoinColumnIndexes": "L:0,R:0",
   846          "TableName": "`user`_user_extra",
   847          "Inputs": [
   848            {
   849              "OperatorType": "Route",
   850              "Variant": "Scatter",
   851              "Keyspace": {
   852                "Name": "user",
   853                "Sharded": true
   854              },
   855              "FieldQuery": "select id from `user` where 1 != 1",
   856              "Query": "select id from `user`",
   857              "Table": "`user`"
   858            },
   859            {
   860              "OperatorType": "Route",
   861              "Variant": "Scatter",
   862              "Keyspace": {
   863                "Name": "user",
   864                "Sharded": true
   865              },
   866              "FieldQuery": "select user_id from user_extra where 1 != 1",
   867              "Query": "select user_id from user_extra",
   868              "Table": "user_extra"
   869            }
   870          ]
   871        },
   872        "TablesUsed": [
   873          "user.user",
   874          "user.user_extra"
   875        ]
   876      }
   877    },
   878    {
   879      "comment": "database calls should be substituted",
   880      "query": "select database() from dual",
   881      "v3-plan": {
   882        "QueryType": "SELECT",
   883        "Original": "select database() from dual",
   884        "Instructions": {
   885          "OperatorType": "Projection",
   886          "Expressions": [
   887            ":__vtdbname as database()"
   888          ],
   889          "Inputs": [
   890            {
   891              "OperatorType": "SingleRow"
   892            }
   893          ]
   894        }
   895      },
   896      "gen4-plan": {
   897        "QueryType": "SELECT",
   898        "Original": "select database() from dual",
   899        "Instructions": {
   900          "OperatorType": "Projection",
   901          "Expressions": [
   902            ":__vtdbname as database()"
   903          ],
   904          "Inputs": [
   905            {
   906              "OperatorType": "SingleRow"
   907            }
   908          ]
   909        },
   910        "TablesUsed": [
   911          "main.dual"
   912        ]
   913      }
   914    },
   915    {
   916      "comment": "last_insert_id for unsharded route",
   917      "query": "select last_insert_id() as x from main.unsharded",
   918      "v3-plan": {
   919        "QueryType": "SELECT",
   920        "Original": "select last_insert_id() as x from main.unsharded",
   921        "Instructions": {
   922          "OperatorType": "Route",
   923          "Variant": "Unsharded",
   924          "Keyspace": {
   925            "Name": "main",
   926            "Sharded": false
   927          },
   928          "FieldQuery": "select :__lastInsertId as x from unsharded where 1 != 1",
   929          "Query": "select :__lastInsertId as x from unsharded",
   930          "Table": "unsharded"
   931        }
   932      },
   933      "gen4-plan": {
   934        "QueryType": "SELECT",
   935        "Original": "select last_insert_id() as x from main.unsharded",
   936        "Instructions": {
   937          "OperatorType": "Route",
   938          "Variant": "Unsharded",
   939          "Keyspace": {
   940            "Name": "main",
   941            "Sharded": false
   942          },
   943          "FieldQuery": "select :__lastInsertId as x from unsharded where 1 != 1",
   944          "Query": "select :__lastInsertId as x from unsharded",
   945          "Table": "unsharded"
   946        },
   947        "TablesUsed": [
   948          "main.unsharded"
   949        ]
   950      }
   951    },
   952    {
   953      "comment": "select from dual on unqualified keyspace",
   954      "query": "select @@session.auto_increment_increment from dual",
   955      "v3-plan": {
   956        "QueryType": "SELECT",
   957        "Original": "select @@session.auto_increment_increment from dual",
   958        "Instructions": {
   959          "OperatorType": "Route",
   960          "Variant": "Reference",
   961          "Keyspace": {
   962            "Name": "main",
   963            "Sharded": false
   964          },
   965          "FieldQuery": "select @@auto_increment_increment from dual where 1 != 1",
   966          "Query": "select @@auto_increment_increment from dual",
   967          "Table": "dual"
   968        }
   969      },
   970      "gen4-plan": {
   971        "QueryType": "SELECT",
   972        "Original": "select @@session.auto_increment_increment from dual",
   973        "Instructions": {
   974          "OperatorType": "Route",
   975          "Variant": "Reference",
   976          "Keyspace": {
   977            "Name": "main",
   978            "Sharded": false
   979          },
   980          "FieldQuery": "select @@auto_increment_increment from dual where 1 != 1",
   981          "Query": "select @@auto_increment_increment from dual",
   982          "Table": "dual"
   983        },
   984        "TablesUsed": [
   985          "main.dual"
   986        ]
   987      }
   988    },
   989    {
   990      "comment": "select from pinned table",
   991      "query": "select * from pin_test",
   992      "v3-plan": {
   993        "QueryType": "SELECT",
   994        "Original": "select * from pin_test",
   995        "Instructions": {
   996          "OperatorType": "Route",
   997          "Variant": "EqualUnique",
   998          "Keyspace": {
   999            "Name": "user",
  1000            "Sharded": true
  1001          },
  1002          "FieldQuery": "select * from pin_test where 1 != 1",
  1003          "Query": "select * from pin_test",
  1004          "Table": "pin_test",
  1005          "Values": [
  1006            "VARCHAR(\"\\x80\")"
  1007          ],
  1008          "Vindex": "binary"
  1009        }
  1010      },
  1011      "gen4-plan": {
  1012        "QueryType": "SELECT",
  1013        "Original": "select * from pin_test",
  1014        "Instructions": {
  1015          "OperatorType": "Route",
  1016          "Variant": "EqualUnique",
  1017          "Keyspace": {
  1018            "Name": "user",
  1019            "Sharded": true
  1020          },
  1021          "FieldQuery": "select * from pin_test where 1 != 1",
  1022          "Query": "select * from pin_test",
  1023          "Table": "pin_test",
  1024          "Values": [
  1025            "VARCHAR(\"\\x80\")"
  1026          ],
  1027          "Vindex": "binary"
  1028        },
  1029        "TablesUsed": [
  1030          "user.pin_test"
  1031        ]
  1032      }
  1033    },
  1034    {
  1035      "comment": "select from dual on sharded keyspace",
  1036      "query": "select @@session.auto_increment_increment from user.dual",
  1037      "v3-plan": {
  1038        "QueryType": "SELECT",
  1039        "Original": "select @@session.auto_increment_increment from user.dual",
  1040        "Instructions": {
  1041          "OperatorType": "Route",
  1042          "Variant": "Reference",
  1043          "Keyspace": {
  1044            "Name": "user",
  1045            "Sharded": true
  1046          },
  1047          "FieldQuery": "select @@auto_increment_increment from dual where 1 != 1",
  1048          "Query": "select @@auto_increment_increment from dual",
  1049          "Table": "dual"
  1050        }
  1051      },
  1052      "gen4-plan": {
  1053        "QueryType": "SELECT",
  1054        "Original": "select @@session.auto_increment_increment from user.dual",
  1055        "Instructions": {
  1056          "OperatorType": "Route",
  1057          "Variant": "Reference",
  1058          "Keyspace": {
  1059            "Name": "user",
  1060            "Sharded": true
  1061          },
  1062          "FieldQuery": "select @@auto_increment_increment from dual where 1 != 1",
  1063          "Query": "select @@auto_increment_increment from dual",
  1064          "Table": "dual"
  1065        },
  1066        "TablesUsed": [
  1067          "user.dual"
  1068        ]
  1069      }
  1070    },
  1071    {
  1072      "comment": "RHS route referenced",
  1073      "query": "select user_extra.id from user join user_extra",
  1074      "v3-plan": {
  1075        "QueryType": "SELECT",
  1076        "Original": "select user_extra.id from user join user_extra",
  1077        "Instructions": {
  1078          "OperatorType": "Join",
  1079          "Variant": "Join",
  1080          "JoinColumnIndexes": "R:0",
  1081          "TableName": "`user`_user_extra",
  1082          "Inputs": [
  1083            {
  1084              "OperatorType": "Route",
  1085              "Variant": "Scatter",
  1086              "Keyspace": {
  1087                "Name": "user",
  1088                "Sharded": true
  1089              },
  1090              "FieldQuery": "select 1 from `user` where 1 != 1",
  1091              "Query": "select 1 from `user`",
  1092              "Table": "`user`"
  1093            },
  1094            {
  1095              "OperatorType": "Route",
  1096              "Variant": "Scatter",
  1097              "Keyspace": {
  1098                "Name": "user",
  1099                "Sharded": true
  1100              },
  1101              "FieldQuery": "select user_extra.id from user_extra where 1 != 1",
  1102              "Query": "select user_extra.id from user_extra",
  1103              "Table": "user_extra"
  1104            }
  1105          ]
  1106        }
  1107      },
  1108      "gen4-plan": {
  1109        "QueryType": "SELECT",
  1110        "Original": "select user_extra.id from user join user_extra",
  1111        "Instructions": {
  1112          "OperatorType": "Join",
  1113          "Variant": "Join",
  1114          "JoinColumnIndexes": "R:0",
  1115          "TableName": "`user`_user_extra",
  1116          "Inputs": [
  1117            {
  1118              "OperatorType": "Route",
  1119              "Variant": "Scatter",
  1120              "Keyspace": {
  1121                "Name": "user",
  1122                "Sharded": true
  1123              },
  1124              "FieldQuery": "select 1 from `user` where 1 != 1",
  1125              "Query": "select 1 from `user`",
  1126              "Table": "`user`"
  1127            },
  1128            {
  1129              "OperatorType": "Route",
  1130              "Variant": "Scatter",
  1131              "Keyspace": {
  1132                "Name": "user",
  1133                "Sharded": true
  1134              },
  1135              "FieldQuery": "select user_extra.id from user_extra where 1 != 1",
  1136              "Query": "select user_extra.id from user_extra",
  1137              "Table": "user_extra"
  1138            }
  1139          ]
  1140        },
  1141        "TablesUsed": [
  1142          "user.user",
  1143          "user.user_extra"
  1144        ]
  1145      }
  1146    },
  1147    {
  1148      "comment": "Both routes referenced",
  1149      "query": "select user.col, user_extra.id from user join user_extra",
  1150      "v3-plan": {
  1151        "QueryType": "SELECT",
  1152        "Original": "select user.col, user_extra.id from user join user_extra",
  1153        "Instructions": {
  1154          "OperatorType": "Join",
  1155          "Variant": "Join",
  1156          "JoinColumnIndexes": "L:0,R:0",
  1157          "TableName": "`user`_user_extra",
  1158          "Inputs": [
  1159            {
  1160              "OperatorType": "Route",
  1161              "Variant": "Scatter",
  1162              "Keyspace": {
  1163                "Name": "user",
  1164                "Sharded": true
  1165              },
  1166              "FieldQuery": "select `user`.col from `user` where 1 != 1",
  1167              "Query": "select `user`.col from `user`",
  1168              "Table": "`user`"
  1169            },
  1170            {
  1171              "OperatorType": "Route",
  1172              "Variant": "Scatter",
  1173              "Keyspace": {
  1174                "Name": "user",
  1175                "Sharded": true
  1176              },
  1177              "FieldQuery": "select user_extra.id from user_extra where 1 != 1",
  1178              "Query": "select user_extra.id from user_extra",
  1179              "Table": "user_extra"
  1180            }
  1181          ]
  1182        }
  1183      },
  1184      "gen4-plan": {
  1185        "QueryType": "SELECT",
  1186        "Original": "select user.col, user_extra.id from user join user_extra",
  1187        "Instructions": {
  1188          "OperatorType": "Join",
  1189          "Variant": "Join",
  1190          "JoinColumnIndexes": "L:0,R:0",
  1191          "TableName": "`user`_user_extra",
  1192          "Inputs": [
  1193            {
  1194              "OperatorType": "Route",
  1195              "Variant": "Scatter",
  1196              "Keyspace": {
  1197                "Name": "user",
  1198                "Sharded": true
  1199              },
  1200              "FieldQuery": "select `user`.col from `user` where 1 != 1",
  1201              "Query": "select `user`.col from `user`",
  1202              "Table": "`user`"
  1203            },
  1204            {
  1205              "OperatorType": "Route",
  1206              "Variant": "Scatter",
  1207              "Keyspace": {
  1208                "Name": "user",
  1209                "Sharded": true
  1210              },
  1211              "FieldQuery": "select user_extra.id from user_extra where 1 != 1",
  1212              "Query": "select user_extra.id from user_extra",
  1213              "Table": "user_extra"
  1214            }
  1215          ]
  1216        },
  1217        "TablesUsed": [
  1218          "user.user",
  1219          "user.user_extra"
  1220        ]
  1221      }
  1222    },
  1223    {
  1224      "comment": "Expression with single-route reference",
  1225      "query": "select user.col, user_extra.id + user_extra.col from user join user_extra",
  1226      "v3-plan": {
  1227        "QueryType": "SELECT",
  1228        "Original": "select user.col, user_extra.id + user_extra.col from user join user_extra",
  1229        "Instructions": {
  1230          "OperatorType": "Join",
  1231          "Variant": "Join",
  1232          "JoinColumnIndexes": "L:0,R:0",
  1233          "TableName": "`user`_user_extra",
  1234          "Inputs": [
  1235            {
  1236              "OperatorType": "Route",
  1237              "Variant": "Scatter",
  1238              "Keyspace": {
  1239                "Name": "user",
  1240                "Sharded": true
  1241              },
  1242              "FieldQuery": "select `user`.col from `user` where 1 != 1",
  1243              "Query": "select `user`.col from `user`",
  1244              "Table": "`user`"
  1245            },
  1246            {
  1247              "OperatorType": "Route",
  1248              "Variant": "Scatter",
  1249              "Keyspace": {
  1250                "Name": "user",
  1251                "Sharded": true
  1252              },
  1253              "FieldQuery": "select user_extra.id + user_extra.col from user_extra where 1 != 1",
  1254              "Query": "select user_extra.id + user_extra.col from user_extra",
  1255              "Table": "user_extra"
  1256            }
  1257          ]
  1258        }
  1259      },
  1260      "gen4-plan": {
  1261        "QueryType": "SELECT",
  1262        "Original": "select user.col, user_extra.id + user_extra.col from user join user_extra",
  1263        "Instructions": {
  1264          "OperatorType": "Join",
  1265          "Variant": "Join",
  1266          "JoinColumnIndexes": "L:0,R:0",
  1267          "TableName": "`user`_user_extra",
  1268          "Inputs": [
  1269            {
  1270              "OperatorType": "Route",
  1271              "Variant": "Scatter",
  1272              "Keyspace": {
  1273                "Name": "user",
  1274                "Sharded": true
  1275              },
  1276              "FieldQuery": "select `user`.col from `user` where 1 != 1",
  1277              "Query": "select `user`.col from `user`",
  1278              "Table": "`user`"
  1279            },
  1280            {
  1281              "OperatorType": "Route",
  1282              "Variant": "Scatter",
  1283              "Keyspace": {
  1284                "Name": "user",
  1285                "Sharded": true
  1286              },
  1287              "FieldQuery": "select user_extra.id + user_extra.col from user_extra where 1 != 1",
  1288              "Query": "select user_extra.id + user_extra.col from user_extra",
  1289              "Table": "user_extra"
  1290            }
  1291          ]
  1292        },
  1293        "TablesUsed": [
  1294          "user.user",
  1295          "user.user_extra"
  1296        ]
  1297      }
  1298    },
  1299    {
  1300      "comment": "Jumbled references",
  1301      "query": "select user.col, user_extra.id, user.col2 from user join user_extra",
  1302      "v3-plan": {
  1303        "QueryType": "SELECT",
  1304        "Original": "select user.col, user_extra.id, user.col2 from user join user_extra",
  1305        "Instructions": {
  1306          "OperatorType": "Join",
  1307          "Variant": "Join",
  1308          "JoinColumnIndexes": "L:0,R:0,L:1",
  1309          "TableName": "`user`_user_extra",
  1310          "Inputs": [
  1311            {
  1312              "OperatorType": "Route",
  1313              "Variant": "Scatter",
  1314              "Keyspace": {
  1315                "Name": "user",
  1316                "Sharded": true
  1317              },
  1318              "FieldQuery": "select `user`.col, `user`.col2 from `user` where 1 != 1",
  1319              "Query": "select `user`.col, `user`.col2 from `user`",
  1320              "Table": "`user`"
  1321            },
  1322            {
  1323              "OperatorType": "Route",
  1324              "Variant": "Scatter",
  1325              "Keyspace": {
  1326                "Name": "user",
  1327                "Sharded": true
  1328              },
  1329              "FieldQuery": "select user_extra.id from user_extra where 1 != 1",
  1330              "Query": "select user_extra.id from user_extra",
  1331              "Table": "user_extra"
  1332            }
  1333          ]
  1334        }
  1335      },
  1336      "gen4-plan": {
  1337        "QueryType": "SELECT",
  1338        "Original": "select user.col, user_extra.id, user.col2 from user join user_extra",
  1339        "Instructions": {
  1340          "OperatorType": "Join",
  1341          "Variant": "Join",
  1342          "JoinColumnIndexes": "L:0,R:0,L:1",
  1343          "TableName": "`user`_user_extra",
  1344          "Inputs": [
  1345            {
  1346              "OperatorType": "Route",
  1347              "Variant": "Scatter",
  1348              "Keyspace": {
  1349                "Name": "user",
  1350                "Sharded": true
  1351              },
  1352              "FieldQuery": "select `user`.col, `user`.col2 from `user` where 1 != 1",
  1353              "Query": "select `user`.col, `user`.col2 from `user`",
  1354              "Table": "`user`"
  1355            },
  1356            {
  1357              "OperatorType": "Route",
  1358              "Variant": "Scatter",
  1359              "Keyspace": {
  1360                "Name": "user",
  1361                "Sharded": true
  1362              },
  1363              "FieldQuery": "select user_extra.id from user_extra where 1 != 1",
  1364              "Query": "select user_extra.id from user_extra",
  1365              "Table": "user_extra"
  1366            }
  1367          ]
  1368        },
  1369        "TablesUsed": [
  1370          "user.user",
  1371          "user.user_extra"
  1372        ]
  1373      }
  1374    },
  1375    {
  1376      "comment": "Comments",
  1377      "query": "select /* comment */ user.col from user join user_extra",
  1378      "v3-plan": {
  1379        "QueryType": "SELECT",
  1380        "Original": "select /* comment */ user.col from user join user_extra",
  1381        "Instructions": {
  1382          "OperatorType": "Join",
  1383          "Variant": "Join",
  1384          "JoinColumnIndexes": "L:0",
  1385          "TableName": "`user`_user_extra",
  1386          "Inputs": [
  1387            {
  1388              "OperatorType": "Route",
  1389              "Variant": "Scatter",
  1390              "Keyspace": {
  1391                "Name": "user",
  1392                "Sharded": true
  1393              },
  1394              "FieldQuery": "select `user`.col from `user` where 1 != 1",
  1395              "Query": "select /* comment */ `user`.col from `user`",
  1396              "Table": "`user`"
  1397            },
  1398            {
  1399              "OperatorType": "Route",
  1400              "Variant": "Scatter",
  1401              "Keyspace": {
  1402                "Name": "user",
  1403                "Sharded": true
  1404              },
  1405              "FieldQuery": "select 1 from user_extra where 1 != 1",
  1406              "Query": "select /* comment */ 1 from user_extra",
  1407              "Table": "user_extra"
  1408            }
  1409          ]
  1410        }
  1411      },
  1412      "gen4-plan": {
  1413        "QueryType": "SELECT",
  1414        "Original": "select /* comment */ user.col from user join user_extra",
  1415        "Instructions": {
  1416          "OperatorType": "Join",
  1417          "Variant": "Join",
  1418          "JoinColumnIndexes": "L:0",
  1419          "TableName": "`user`_user_extra",
  1420          "Inputs": [
  1421            {
  1422              "OperatorType": "Route",
  1423              "Variant": "Scatter",
  1424              "Keyspace": {
  1425                "Name": "user",
  1426                "Sharded": true
  1427              },
  1428              "FieldQuery": "select `user`.col from `user` where 1 != 1",
  1429              "Query": "select /* comment */ `user`.col from `user`",
  1430              "Table": "`user`"
  1431            },
  1432            {
  1433              "OperatorType": "Route",
  1434              "Variant": "Scatter",
  1435              "Keyspace": {
  1436                "Name": "user",
  1437                "Sharded": true
  1438              },
  1439              "FieldQuery": "select 1 from user_extra where 1 != 1",
  1440              "Query": "select /* comment */ 1 from user_extra",
  1441              "Table": "user_extra"
  1442            }
  1443          ]
  1444        },
  1445        "TablesUsed": [
  1446          "user.user",
  1447          "user.user_extra"
  1448        ]
  1449      }
  1450    },
  1451    {
  1452      "comment": "for update",
  1453      "query": "select user.col from user join user_extra for update",
  1454      "v3-plan": {
  1455        "QueryType": "SELECT",
  1456        "Original": "select user.col from user join user_extra for update",
  1457        "Instructions": {
  1458          "OperatorType": "Join",
  1459          "Variant": "Join",
  1460          "JoinColumnIndexes": "L:0",
  1461          "TableName": "`user`_user_extra",
  1462          "Inputs": [
  1463            {
  1464              "OperatorType": "Route",
  1465              "Variant": "Scatter",
  1466              "Keyspace": {
  1467                "Name": "user",
  1468                "Sharded": true
  1469              },
  1470              "FieldQuery": "select `user`.col from `user` where 1 != 1",
  1471              "Query": "select `user`.col from `user` for update",
  1472              "Table": "`user`"
  1473            },
  1474            {
  1475              "OperatorType": "Route",
  1476              "Variant": "Scatter",
  1477              "Keyspace": {
  1478                "Name": "user",
  1479                "Sharded": true
  1480              },
  1481              "FieldQuery": "select 1 from user_extra where 1 != 1",
  1482              "Query": "select 1 from user_extra for update",
  1483              "Table": "user_extra"
  1484            }
  1485          ]
  1486        }
  1487      },
  1488      "gen4-plan": {
  1489        "QueryType": "SELECT",
  1490        "Original": "select user.col from user join user_extra for update",
  1491        "Instructions": {
  1492          "OperatorType": "Join",
  1493          "Variant": "Join",
  1494          "JoinColumnIndexes": "L:0",
  1495          "TableName": "`user`_user_extra",
  1496          "Inputs": [
  1497            {
  1498              "OperatorType": "Route",
  1499              "Variant": "Scatter",
  1500              "Keyspace": {
  1501                "Name": "user",
  1502                "Sharded": true
  1503              },
  1504              "FieldQuery": "select `user`.col from `user` where 1 != 1",
  1505              "Query": "select `user`.col from `user` for update",
  1506              "Table": "`user`"
  1507            },
  1508            {
  1509              "OperatorType": "Route",
  1510              "Variant": "Scatter",
  1511              "Keyspace": {
  1512                "Name": "user",
  1513                "Sharded": true
  1514              },
  1515              "FieldQuery": "select 1 from user_extra where 1 != 1",
  1516              "Query": "select 1 from user_extra for update",
  1517              "Table": "user_extra"
  1518            }
  1519          ]
  1520        },
  1521        "TablesUsed": [
  1522          "user.user",
  1523          "user.user_extra"
  1524        ]
  1525      }
  1526    },
  1527    {
  1528      "comment": "Field query should work for joins select bind vars",
  1529      "query": "select user.id, (select user.id+outm.m+unsharded.m from unsharded) from user join unsharded outm",
  1530      "v3-plan": {
  1531        "QueryType": "SELECT",
  1532        "Original": "select user.id, (select user.id+outm.m+unsharded.m from unsharded) from user join unsharded outm",
  1533        "Instructions": {
  1534          "OperatorType": "Join",
  1535          "Variant": "Join",
  1536          "JoinColumnIndexes": "L:0,R:0",
  1537          "JoinVars": {
  1538            "user_id": 0
  1539          },
  1540          "TableName": "`user`_unsharded",
  1541          "Inputs": [
  1542            {
  1543              "OperatorType": "Route",
  1544              "Variant": "Scatter",
  1545              "Keyspace": {
  1546                "Name": "user",
  1547                "Sharded": true
  1548              },
  1549              "FieldQuery": "select `user`.id from `user` where 1 != 1",
  1550              "Query": "select `user`.id from `user`",
  1551              "Table": "`user`"
  1552            },
  1553            {
  1554              "OperatorType": "Route",
  1555              "Variant": "Unsharded",
  1556              "Keyspace": {
  1557                "Name": "main",
  1558                "Sharded": false
  1559              },
  1560              "FieldQuery": "select (select :user_id + outm.m + unsharded.m from unsharded where 1 != 1) from unsharded as outm where 1 != 1",
  1561              "Query": "select (select :user_id + outm.m + unsharded.m from unsharded) from unsharded as outm",
  1562              "Table": "unsharded"
  1563            }
  1564          ]
  1565        }
  1566      },
  1567      "gen4-plan": {
  1568        "QueryType": "SELECT",
  1569        "Original": "select user.id, (select user.id+outm.m+unsharded.m from unsharded) from user join unsharded outm",
  1570        "Instructions": {
  1571          "OperatorType": "Join",
  1572          "Variant": "Join",
  1573          "JoinColumnIndexes": "L:0,R:0",
  1574          "JoinVars": {
  1575            "user_id": 0
  1576          },
  1577          "TableName": "`user`_unsharded",
  1578          "Inputs": [
  1579            {
  1580              "OperatorType": "Route",
  1581              "Variant": "Scatter",
  1582              "Keyspace": {
  1583                "Name": "user",
  1584                "Sharded": true
  1585              },
  1586              "FieldQuery": "select `user`.id from `user` where 1 != 1",
  1587              "Query": "select `user`.id from `user`",
  1588              "Table": "`user`"
  1589            },
  1590            {
  1591              "OperatorType": "Route",
  1592              "Variant": "Unsharded",
  1593              "Keyspace": {
  1594                "Name": "main",
  1595                "Sharded": false
  1596              },
  1597              "FieldQuery": "select (select :user_id + outm.m + unsharded.m from unsharded where 1 != 1) from unsharded as outm where 1 != 1",
  1598              "Query": "select (select :user_id + outm.m + unsharded.m from unsharded) from unsharded as outm",
  1599              "Table": "unsharded"
  1600            }
  1601          ]
  1602        },
  1603        "TablesUsed": [
  1604          "main.unsharded",
  1605          "user.user"
  1606        ]
  1607      }
  1608    },
  1609    {
  1610      "comment": "Case preservation",
  1611      "query": "select user.Col, user_extra.Id from user join user_extra",
  1612      "v3-plan": {
  1613        "QueryType": "SELECT",
  1614        "Original": "select user.Col, user_extra.Id from user join user_extra",
  1615        "Instructions": {
  1616          "OperatorType": "Join",
  1617          "Variant": "Join",
  1618          "JoinColumnIndexes": "L:0,R:0",
  1619          "TableName": "`user`_user_extra",
  1620          "Inputs": [
  1621            {
  1622              "OperatorType": "Route",
  1623              "Variant": "Scatter",
  1624              "Keyspace": {
  1625                "Name": "user",
  1626                "Sharded": true
  1627              },
  1628              "FieldQuery": "select `user`.Col from `user` where 1 != 1",
  1629              "Query": "select `user`.Col from `user`",
  1630              "Table": "`user`"
  1631            },
  1632            {
  1633              "OperatorType": "Route",
  1634              "Variant": "Scatter",
  1635              "Keyspace": {
  1636                "Name": "user",
  1637                "Sharded": true
  1638              },
  1639              "FieldQuery": "select user_extra.Id from user_extra where 1 != 1",
  1640              "Query": "select user_extra.Id from user_extra",
  1641              "Table": "user_extra"
  1642            }
  1643          ]
  1644        }
  1645      },
  1646      "gen4-plan": {
  1647        "QueryType": "SELECT",
  1648        "Original": "select user.Col, user_extra.Id from user join user_extra",
  1649        "Instructions": {
  1650          "OperatorType": "Join",
  1651          "Variant": "Join",
  1652          "JoinColumnIndexes": "L:0,R:0",
  1653          "TableName": "`user`_user_extra",
  1654          "Inputs": [
  1655            {
  1656              "OperatorType": "Route",
  1657              "Variant": "Scatter",
  1658              "Keyspace": {
  1659                "Name": "user",
  1660                "Sharded": true
  1661              },
  1662              "FieldQuery": "select `user`.Col from `user` where 1 != 1",
  1663              "Query": "select `user`.Col from `user`",
  1664              "Table": "`user`"
  1665            },
  1666            {
  1667              "OperatorType": "Route",
  1668              "Variant": "Scatter",
  1669              "Keyspace": {
  1670                "Name": "user",
  1671                "Sharded": true
  1672              },
  1673              "FieldQuery": "select user_extra.Id from user_extra where 1 != 1",
  1674              "Query": "select user_extra.Id from user_extra",
  1675              "Table": "user_extra"
  1676            }
  1677          ]
  1678        },
  1679        "TablesUsed": [
  1680          "user.user",
  1681          "user.user_extra"
  1682        ]
  1683      }
  1684    },
  1685    {
  1686      "comment": "syntax error",
  1687      "query": "the quick brown fox",
  1688      "plan": "syntax error at position 4 near 'the'"
  1689    },
  1690    {
  1691      "comment": "Hex number is not treated as a simple value",
  1692      "query": "select * from user where id = 0x04",
  1693      "v3-plan": {
  1694        "QueryType": "SELECT",
  1695        "Original": "select * from user where id = 0x04",
  1696        "Instructions": {
  1697          "OperatorType": "Route",
  1698          "Variant": "Scatter",
  1699          "Keyspace": {
  1700            "Name": "user",
  1701            "Sharded": true
  1702          },
  1703          "FieldQuery": "select * from `user` where 1 != 1",
  1704          "Query": "select * from `user` where id = 0x04",
  1705          "Table": "`user`"
  1706        }
  1707      },
  1708      "gen4-plan": {
  1709        "QueryType": "SELECT",
  1710        "Original": "select * from user where id = 0x04",
  1711        "Instructions": {
  1712          "OperatorType": "Route",
  1713          "Variant": "EqualUnique",
  1714          "Keyspace": {
  1715            "Name": "user",
  1716            "Sharded": true
  1717          },
  1718          "FieldQuery": "select * from `user` where 1 != 1",
  1719          "Query": "select * from `user` where id = 0x04",
  1720          "Table": "`user`",
  1721          "Values": [
  1722            "VARBINARY(\"\\x04\")"
  1723          ],
  1724          "Vindex": "user_index"
  1725        },
  1726        "TablesUsed": [
  1727          "user.user"
  1728        ]
  1729      }
  1730    },
  1731    {
  1732      "comment": "sharded limit offset",
  1733      "query": "select user_id from music order by user_id limit 10, 20",
  1734      "v3-plan": {
  1735        "QueryType": "SELECT",
  1736        "Original": "select user_id from music order by user_id limit 10, 20",
  1737        "Instructions": {
  1738          "OperatorType": "Limit",
  1739          "Count": "INT64(20)",
  1740          "Offset": "INT64(10)",
  1741          "Inputs": [
  1742            {
  1743              "OperatorType": "Route",
  1744              "Variant": "Scatter",
  1745              "Keyspace": {
  1746                "Name": "user",
  1747                "Sharded": true
  1748              },
  1749              "FieldQuery": "select user_id, weight_string(user_id) from music where 1 != 1",
  1750              "OrderBy": "(0|1) ASC",
  1751              "Query": "select user_id, weight_string(user_id) from music order by user_id asc limit :__upper_limit",
  1752              "ResultColumns": 1,
  1753              "Table": "music"
  1754            }
  1755          ]
  1756        }
  1757      },
  1758      "gen4-plan": {
  1759        "QueryType": "SELECT",
  1760        "Original": "select user_id from music order by user_id limit 10, 20",
  1761        "Instructions": {
  1762          "OperatorType": "Limit",
  1763          "Count": "INT64(20)",
  1764          "Offset": "INT64(10)",
  1765          "Inputs": [
  1766            {
  1767              "OperatorType": "Route",
  1768              "Variant": "Scatter",
  1769              "Keyspace": {
  1770                "Name": "user",
  1771                "Sharded": true
  1772              },
  1773              "FieldQuery": "select user_id, weight_string(user_id) from music where 1 != 1",
  1774              "OrderBy": "(0|1) ASC",
  1775              "Query": "select user_id, weight_string(user_id) from music order by user_id asc limit :__upper_limit",
  1776              "ResultColumns": 1,
  1777              "Table": "music"
  1778            }
  1779          ]
  1780        },
  1781        "TablesUsed": [
  1782          "user.music"
  1783        ]
  1784      }
  1785    },
  1786    {
  1787      "comment": "Sharding Key Condition in Parenthesis",
  1788      "query": "select * from user where name ='abc' AND (id = 4) limit 5",
  1789      "v3-plan": {
  1790        "QueryType": "SELECT",
  1791        "Original": "select * from user where name ='abc' AND (id = 4) limit 5",
  1792        "Instructions": {
  1793          "OperatorType": "Route",
  1794          "Variant": "EqualUnique",
  1795          "Keyspace": {
  1796            "Name": "user",
  1797            "Sharded": true
  1798          },
  1799          "FieldQuery": "select * from `user` where 1 != 1",
  1800          "Query": "select * from `user` where `name` = 'abc' and id = 4 limit 5",
  1801          "Table": "`user`",
  1802          "Values": [
  1803            "INT64(4)"
  1804          ],
  1805          "Vindex": "user_index"
  1806        }
  1807      },
  1808      "gen4-plan": {
  1809        "QueryType": "SELECT",
  1810        "Original": "select * from user where name ='abc' AND (id = 4) limit 5",
  1811        "Instructions": {
  1812          "OperatorType": "Route",
  1813          "Variant": "EqualUnique",
  1814          "Keyspace": {
  1815            "Name": "user",
  1816            "Sharded": true
  1817          },
  1818          "FieldQuery": "select * from `user` where 1 != 1",
  1819          "Query": "select * from `user` where `name` = 'abc' and id = 4 limit 5",
  1820          "Table": "`user`",
  1821          "Values": [
  1822            "INT64(4)"
  1823          ],
  1824          "Vindex": "user_index"
  1825        },
  1826        "TablesUsed": [
  1827          "user.user"
  1828        ]
  1829      }
  1830    },
  1831    {
  1832      "comment": "Multiple parenthesized expressions",
  1833      "query": "select * from user where (id = 4) AND (name ='abc') limit 5",
  1834      "v3-plan": {
  1835        "QueryType": "SELECT",
  1836        "Original": "select * from user where (id = 4) AND (name ='abc') limit 5",
  1837        "Instructions": {
  1838          "OperatorType": "Route",
  1839          "Variant": "EqualUnique",
  1840          "Keyspace": {
  1841            "Name": "user",
  1842            "Sharded": true
  1843          },
  1844          "FieldQuery": "select * from `user` where 1 != 1",
  1845          "Query": "select * from `user` where id = 4 and `name` = 'abc' limit 5",
  1846          "Table": "`user`",
  1847          "Values": [
  1848            "INT64(4)"
  1849          ],
  1850          "Vindex": "user_index"
  1851        }
  1852      },
  1853      "gen4-plan": {
  1854        "QueryType": "SELECT",
  1855        "Original": "select * from user where (id = 4) AND (name ='abc') limit 5",
  1856        "Instructions": {
  1857          "OperatorType": "Route",
  1858          "Variant": "EqualUnique",
  1859          "Keyspace": {
  1860            "Name": "user",
  1861            "Sharded": true
  1862          },
  1863          "FieldQuery": "select * from `user` where 1 != 1",
  1864          "Query": "select * from `user` where id = 4 and `name` = 'abc' limit 5",
  1865          "Table": "`user`",
  1866          "Values": [
  1867            "INT64(4)"
  1868          ],
  1869          "Vindex": "user_index"
  1870        },
  1871        "TablesUsed": [
  1872          "user.user"
  1873        ]
  1874      }
  1875    },
  1876    {
  1877      "comment": "Multiple parenthesized expressions",
  1878      "query": "select * from user where (id = 4 and name ='abc') limit 5",
  1879      "v3-plan": {
  1880        "QueryType": "SELECT",
  1881        "Original": "select * from user where (id = 4 and name ='abc') limit 5",
  1882        "Instructions": {
  1883          "OperatorType": "Route",
  1884          "Variant": "EqualUnique",
  1885          "Keyspace": {
  1886            "Name": "user",
  1887            "Sharded": true
  1888          },
  1889          "FieldQuery": "select * from `user` where 1 != 1",
  1890          "Query": "select * from `user` where id = 4 and `name` = 'abc' limit 5",
  1891          "Table": "`user`",
  1892          "Values": [
  1893            "INT64(4)"
  1894          ],
  1895          "Vindex": "user_index"
  1896        }
  1897      },
  1898      "gen4-plan": {
  1899        "QueryType": "SELECT",
  1900        "Original": "select * from user where (id = 4 and name ='abc') limit 5",
  1901        "Instructions": {
  1902          "OperatorType": "Route",
  1903          "Variant": "EqualUnique",
  1904          "Keyspace": {
  1905            "Name": "user",
  1906            "Sharded": true
  1907          },
  1908          "FieldQuery": "select * from `user` where 1 != 1",
  1909          "Query": "select * from `user` where id = 4 and `name` = 'abc' limit 5",
  1910          "Table": "`user`",
  1911          "Values": [
  1912            "INT64(4)"
  1913          ],
  1914          "Vindex": "user_index"
  1915        },
  1916        "TablesUsed": [
  1917          "user.user"
  1918        ]
  1919      }
  1920    },
  1921    {
  1922      "comment": "Column Aliasing with Table.Column",
  1923      "query": "select user0_.col as col0_ from user user0_ where id = 1 order by user0_.col desc limit 2",
  1924      "v3-plan": {
  1925        "QueryType": "SELECT",
  1926        "Original": "select user0_.col as col0_ from user user0_ where id = 1 order by user0_.col desc limit 2",
  1927        "Instructions": {
  1928          "OperatorType": "Route",
  1929          "Variant": "EqualUnique",
  1930          "Keyspace": {
  1931            "Name": "user",
  1932            "Sharded": true
  1933          },
  1934          "FieldQuery": "select user0_.col as col0_ from `user` as user0_ where 1 != 1",
  1935          "Query": "select user0_.col as col0_ from `user` as user0_ where id = 1 order by user0_.col desc limit 2",
  1936          "Table": "`user`",
  1937          "Values": [
  1938            "INT64(1)"
  1939          ],
  1940          "Vindex": "user_index"
  1941        }
  1942      },
  1943      "gen4-plan": {
  1944        "QueryType": "SELECT",
  1945        "Original": "select user0_.col as col0_ from user user0_ where id = 1 order by user0_.col desc limit 2",
  1946        "Instructions": {
  1947          "OperatorType": "Route",
  1948          "Variant": "EqualUnique",
  1949          "Keyspace": {
  1950            "Name": "user",
  1951            "Sharded": true
  1952          },
  1953          "FieldQuery": "select user0_.col as col0_ from `user` as user0_ where 1 != 1",
  1954          "Query": "select user0_.col as col0_ from `user` as user0_ where id = 1 order by user0_.col desc limit 2",
  1955          "Table": "`user`",
  1956          "Values": [
  1957            "INT64(1)"
  1958          ],
  1959          "Vindex": "user_index"
  1960        },
  1961        "TablesUsed": [
  1962          "user.user"
  1963        ]
  1964      }
  1965    },
  1966    {
  1967      "comment": "Column Aliasing with Column",
  1968      "query": "select user0_.col as col0_ from user user0_ where id = 1 order by col0_ desc limit 3",
  1969      "v3-plan": {
  1970        "QueryType": "SELECT",
  1971        "Original": "select user0_.col as col0_ from user user0_ where id = 1 order by col0_ desc limit 3",
  1972        "Instructions": {
  1973          "OperatorType": "Route",
  1974          "Variant": "EqualUnique",
  1975          "Keyspace": {
  1976            "Name": "user",
  1977            "Sharded": true
  1978          },
  1979          "FieldQuery": "select user0_.col as col0_ from `user` as user0_ where 1 != 1",
  1980          "Query": "select user0_.col as col0_ from `user` as user0_ where id = 1 order by col0_ desc limit 3",
  1981          "Table": "`user`",
  1982          "Values": [
  1983            "INT64(1)"
  1984          ],
  1985          "Vindex": "user_index"
  1986        }
  1987      },
  1988      "gen4-plan": {
  1989        "QueryType": "SELECT",
  1990        "Original": "select user0_.col as col0_ from user user0_ where id = 1 order by col0_ desc limit 3",
  1991        "Instructions": {
  1992          "OperatorType": "Route",
  1993          "Variant": "EqualUnique",
  1994          "Keyspace": {
  1995            "Name": "user",
  1996            "Sharded": true
  1997          },
  1998          "FieldQuery": "select user0_.col as col0_ from `user` as user0_ where 1 != 1",
  1999          "Query": "select user0_.col as col0_ from `user` as user0_ where id = 1 order by col0_ desc limit 3",
  2000          "Table": "`user`",
  2001          "Values": [
  2002            "INT64(1)"
  2003          ],
  2004          "Vindex": "user_index"
  2005        },
  2006        "TablesUsed": [
  2007          "user.user"
  2008        ]
  2009      }
  2010    },
  2011    {
  2012      "comment": "Booleans and parenthesis",
  2013      "query": "select * from user where (id = 1) AND name = true limit 5",
  2014      "v3-plan": {
  2015        "QueryType": "SELECT",
  2016        "Original": "select * from user where (id = 1) AND name = true limit 5",
  2017        "Instructions": {
  2018          "OperatorType": "Route",
  2019          "Variant": "EqualUnique",
  2020          "Keyspace": {
  2021            "Name": "user",
  2022            "Sharded": true
  2023          },
  2024          "FieldQuery": "select * from `user` where 1 != 1",
  2025          "Query": "select * from `user` where id = 1 and `name` = true limit 5",
  2026          "Table": "`user`",
  2027          "Values": [
  2028            "INT64(1)"
  2029          ],
  2030          "Vindex": "user_index"
  2031        }
  2032      },
  2033      "gen4-plan": {
  2034        "QueryType": "SELECT",
  2035        "Original": "select * from user where (id = 1) AND name = true limit 5",
  2036        "Instructions": {
  2037          "OperatorType": "Route",
  2038          "Variant": "EqualUnique",
  2039          "Keyspace": {
  2040            "Name": "user",
  2041            "Sharded": true
  2042          },
  2043          "FieldQuery": "select * from `user` where 1 != 1",
  2044          "Query": "select * from `user` where id = 1 and `name` = true limit 5",
  2045          "Table": "`user`",
  2046          "Values": [
  2047            "INT64(1)"
  2048          ],
  2049          "Vindex": "user_index"
  2050        },
  2051        "TablesUsed": [
  2052          "user.user"
  2053        ]
  2054      }
  2055    },
  2056    {
  2057      "comment": "Column as boolean-ish",
  2058      "query": "select * from user where (id = 1) AND name limit 5",
  2059      "v3-plan": {
  2060        "QueryType": "SELECT",
  2061        "Original": "select * from user where (id = 1) AND name limit 5",
  2062        "Instructions": {
  2063          "OperatorType": "Route",
  2064          "Variant": "EqualUnique",
  2065          "Keyspace": {
  2066            "Name": "user",
  2067            "Sharded": true
  2068          },
  2069          "FieldQuery": "select * from `user` where 1 != 1",
  2070          "Query": "select * from `user` where id = 1 and `name` limit 5",
  2071          "Table": "`user`",
  2072          "Values": [
  2073            "INT64(1)"
  2074          ],
  2075          "Vindex": "user_index"
  2076        }
  2077      },
  2078      "gen4-plan": {
  2079        "QueryType": "SELECT",
  2080        "Original": "select * from user where (id = 1) AND name limit 5",
  2081        "Instructions": {
  2082          "OperatorType": "Route",
  2083          "Variant": "EqualUnique",
  2084          "Keyspace": {
  2085            "Name": "user",
  2086            "Sharded": true
  2087          },
  2088          "FieldQuery": "select * from `user` where 1 != 1",
  2089          "Query": "select * from `user` where id = 1 and `name` limit 5",
  2090          "Table": "`user`",
  2091          "Values": [
  2092            "INT64(1)"
  2093          ],
  2094          "Vindex": "user_index"
  2095        },
  2096        "TablesUsed": [
  2097          "user.user"
  2098        ]
  2099      }
  2100    },
  2101    {
  2102      "comment": "PK as fake boolean, and column as boolean-ish",
  2103      "query": "select * from user where (id = 5) AND name = true limit 5",
  2104      "v3-plan": {
  2105        "QueryType": "SELECT",
  2106        "Original": "select * from user where (id = 5) AND name = true limit 5",
  2107        "Instructions": {
  2108          "OperatorType": "Route",
  2109          "Variant": "EqualUnique",
  2110          "Keyspace": {
  2111            "Name": "user",
  2112            "Sharded": true
  2113          },
  2114          "FieldQuery": "select * from `user` where 1 != 1",
  2115          "Query": "select * from `user` where id = 5 and `name` = true limit 5",
  2116          "Table": "`user`",
  2117          "Values": [
  2118            "INT64(5)"
  2119          ],
  2120          "Vindex": "user_index"
  2121        }
  2122      },
  2123      "gen4-plan": {
  2124        "QueryType": "SELECT",
  2125        "Original": "select * from user where (id = 5) AND name = true limit 5",
  2126        "Instructions": {
  2127          "OperatorType": "Route",
  2128          "Variant": "EqualUnique",
  2129          "Keyspace": {
  2130            "Name": "user",
  2131            "Sharded": true
  2132          },
  2133          "FieldQuery": "select * from `user` where 1 != 1",
  2134          "Query": "select * from `user` where id = 5 and `name` = true limit 5",
  2135          "Table": "`user`",
  2136          "Values": [
  2137            "INT64(5)"
  2138          ],
  2139          "Vindex": "user_index"
  2140        },
  2141        "TablesUsed": [
  2142          "user.user"
  2143        ]
  2144      }
  2145    },
  2146    {
  2147      "comment": "top level subquery in select",
  2148      "query": "select a, (select col from user) from unsharded",
  2149      "v3-plan": {
  2150        "QueryType": "SELECT",
  2151        "Original": "select a, (select col from user) from unsharded",
  2152        "Instructions": {
  2153          "OperatorType": "Subquery",
  2154          "Variant": "PulloutValue",
  2155          "PulloutVars": [
  2156            "__sq_has_values1",
  2157            "__sq1"
  2158          ],
  2159          "Inputs": [
  2160            {
  2161              "OperatorType": "Route",
  2162              "Variant": "Scatter",
  2163              "Keyspace": {
  2164                "Name": "user",
  2165                "Sharded": true
  2166              },
  2167              "FieldQuery": "select col from `user` where 1 != 1",
  2168              "Query": "select col from `user`",
  2169              "Table": "`user`"
  2170            },
  2171            {
  2172              "OperatorType": "Route",
  2173              "Variant": "Unsharded",
  2174              "Keyspace": {
  2175                "Name": "main",
  2176                "Sharded": false
  2177              },
  2178              "FieldQuery": "select a, :__sq1 from unsharded where 1 != 1",
  2179              "Query": "select a, :__sq1 from unsharded",
  2180              "Table": "unsharded"
  2181            }
  2182          ]
  2183        }
  2184      },
  2185      "gen4-plan": {
  2186        "QueryType": "SELECT",
  2187        "Original": "select a, (select col from user) from unsharded",
  2188        "Instructions": {
  2189          "OperatorType": "Subquery",
  2190          "Variant": "PulloutValue",
  2191          "PulloutVars": [
  2192            "__sq1"
  2193          ],
  2194          "Inputs": [
  2195            {
  2196              "OperatorType": "Route",
  2197              "Variant": "Scatter",
  2198              "Keyspace": {
  2199                "Name": "user",
  2200                "Sharded": true
  2201              },
  2202              "FieldQuery": "select col from `user` where 1 != 1",
  2203              "Query": "select col from `user`",
  2204              "Table": "`user`"
  2205            },
  2206            {
  2207              "OperatorType": "Route",
  2208              "Variant": "Unsharded",
  2209              "Keyspace": {
  2210                "Name": "main",
  2211                "Sharded": false
  2212              },
  2213              "FieldQuery": "select a, :__sq1 from unsharded where 1 != 1",
  2214              "Query": "select a, :__sq1 from unsharded",
  2215              "Table": "unsharded"
  2216            }
  2217          ]
  2218        },
  2219        "TablesUsed": [
  2220          "main.unsharded",
  2221          "user.user"
  2222        ]
  2223      }
  2224    },
  2225    {
  2226      "comment": "sub-expression subquery in select",
  2227      "query": "select a, 1+(select col from user) from unsharded",
  2228      "v3-plan": {
  2229        "QueryType": "SELECT",
  2230        "Original": "select a, 1+(select col from user) from unsharded",
  2231        "Instructions": {
  2232          "OperatorType": "Subquery",
  2233          "Variant": "PulloutValue",
  2234          "PulloutVars": [
  2235            "__sq_has_values1",
  2236            "__sq1"
  2237          ],
  2238          "Inputs": [
  2239            {
  2240              "OperatorType": "Route",
  2241              "Variant": "Scatter",
  2242              "Keyspace": {
  2243                "Name": "user",
  2244                "Sharded": true
  2245              },
  2246              "FieldQuery": "select col from `user` where 1 != 1",
  2247              "Query": "select col from `user`",
  2248              "Table": "`user`"
  2249            },
  2250            {
  2251              "OperatorType": "Route",
  2252              "Variant": "Unsharded",
  2253              "Keyspace": {
  2254                "Name": "main",
  2255                "Sharded": false
  2256              },
  2257              "FieldQuery": "select a, 1 + :__sq1 from unsharded where 1 != 1",
  2258              "Query": "select a, 1 + :__sq1 from unsharded",
  2259              "Table": "unsharded"
  2260            }
  2261          ]
  2262        }
  2263      },
  2264      "gen4-plan": {
  2265        "QueryType": "SELECT",
  2266        "Original": "select a, 1+(select col from user) from unsharded",
  2267        "Instructions": {
  2268          "OperatorType": "Subquery",
  2269          "Variant": "PulloutValue",
  2270          "PulloutVars": [
  2271            "__sq1"
  2272          ],
  2273          "Inputs": [
  2274            {
  2275              "OperatorType": "Route",
  2276              "Variant": "Scatter",
  2277              "Keyspace": {
  2278                "Name": "user",
  2279                "Sharded": true
  2280              },
  2281              "FieldQuery": "select col from `user` where 1 != 1",
  2282              "Query": "select col from `user`",
  2283              "Table": "`user`"
  2284            },
  2285            {
  2286              "OperatorType": "Route",
  2287              "Variant": "Unsharded",
  2288              "Keyspace": {
  2289                "Name": "main",
  2290                "Sharded": false
  2291              },
  2292              "FieldQuery": "select a, 1 + :__sq1 from unsharded where 1 != 1",
  2293              "Query": "select a, 1 + :__sq1 from unsharded",
  2294              "Table": "unsharded"
  2295            }
  2296          ]
  2297        },
  2298        "TablesUsed": [
  2299          "main.unsharded",
  2300          "user.user"
  2301        ]
  2302      }
  2303    },
  2304    {
  2305      "comment": "select * from derived table expands specific columns",
  2306      "query": "select * from (select user.id id1, user_extra.id id2 from user join user_extra) as t",
  2307      "v3-plan": {
  2308        "QueryType": "SELECT",
  2309        "Original": "select * from (select user.id id1, user_extra.id id2 from user join user_extra) as t",
  2310        "Instructions": {
  2311          "OperatorType": "SimpleProjection",
  2312          "Columns": [
  2313            0,
  2314            1
  2315          ],
  2316          "Inputs": [
  2317            {
  2318              "OperatorType": "Join",
  2319              "Variant": "Join",
  2320              "JoinColumnIndexes": "L:0,R:0",
  2321              "TableName": "`user`_user_extra",
  2322              "Inputs": [
  2323                {
  2324                  "OperatorType": "Route",
  2325                  "Variant": "Scatter",
  2326                  "Keyspace": {
  2327                    "Name": "user",
  2328                    "Sharded": true
  2329                  },
  2330                  "FieldQuery": "select `user`.id as id1 from `user` where 1 != 1",
  2331                  "Query": "select `user`.id as id1 from `user`",
  2332                  "Table": "`user`"
  2333                },
  2334                {
  2335                  "OperatorType": "Route",
  2336                  "Variant": "Scatter",
  2337                  "Keyspace": {
  2338                    "Name": "user",
  2339                    "Sharded": true
  2340                  },
  2341                  "FieldQuery": "select user_extra.id as id2 from user_extra where 1 != 1",
  2342                  "Query": "select user_extra.id as id2 from user_extra",
  2343                  "Table": "user_extra"
  2344                }
  2345              ]
  2346            }
  2347          ]
  2348        }
  2349      },
  2350      "gen4-plan": {
  2351        "QueryType": "SELECT",
  2352        "Original": "select * from (select user.id id1, user_extra.id id2 from user join user_extra) as t",
  2353        "Instructions": {
  2354          "OperatorType": "SimpleProjection",
  2355          "Columns": [
  2356            0,
  2357            1
  2358          ],
  2359          "Inputs": [
  2360            {
  2361              "OperatorType": "Join",
  2362              "Variant": "Join",
  2363              "JoinColumnIndexes": "L:0,R:0",
  2364              "TableName": "`user`_user_extra",
  2365              "Inputs": [
  2366                {
  2367                  "OperatorType": "Route",
  2368                  "Variant": "Scatter",
  2369                  "Keyspace": {
  2370                    "Name": "user",
  2371                    "Sharded": true
  2372                  },
  2373                  "FieldQuery": "select `user`.id as id1 from `user` where 1 != 1",
  2374                  "Query": "select `user`.id as id1 from `user`",
  2375                  "Table": "`user`"
  2376                },
  2377                {
  2378                  "OperatorType": "Route",
  2379                  "Variant": "Scatter",
  2380                  "Keyspace": {
  2381                    "Name": "user",
  2382                    "Sharded": true
  2383                  },
  2384                  "FieldQuery": "select user_extra.id as id2 from user_extra where 1 != 1",
  2385                  "Query": "select user_extra.id as id2 from user_extra",
  2386                  "Table": "user_extra"
  2387                }
  2388              ]
  2389            }
  2390          ]
  2391        },
  2392        "TablesUsed": [
  2393          "user.user",
  2394          "user.user_extra"
  2395        ]
  2396      }
  2397    },
  2398    {
  2399      "comment": "duplicate columns not allowed in derived table",
  2400      "query": "select * from (select user.id, user_extra.id from user join user_extra) as t",
  2401      "v3-plan": "VT12001: unsupported: duplicate column names in subquery: id",
  2402      "gen4-plan": "Duplicate column name 'id'"
  2403    },
  2404    {
  2405      "comment": "non-existent symbol in cross-shard derived table",
  2406      "query": "select t.col from (select user.id from user join user_extra) as t",
  2407      "v3-plan": "VT03019: symbol t.col not found",
  2408      "gen4-plan": "symbol t.col not found"
  2409    },
  2410    {
  2411      "comment": "union with the same target shard",
  2412      "query": "select * from music where user_id = 1 union select * from user where id = 1",
  2413      "v3-plan": {
  2414        "QueryType": "SELECT",
  2415        "Original": "select * from music where user_id = 1 union select * from user where id = 1",
  2416        "Instructions": {
  2417          "OperatorType": "Route",
  2418          "Variant": "EqualUnique",
  2419          "Keyspace": {
  2420            "Name": "user",
  2421            "Sharded": true
  2422          },
  2423          "FieldQuery": "select * from music where 1 != 1 union select * from `user` where 1 != 1",
  2424          "Query": "select * from music where user_id = 1 union select * from `user` where id = 1",
  2425          "Table": "music",
  2426          "Values": [
  2427            "INT64(1)"
  2428          ],
  2429          "Vindex": "user_index"
  2430        }
  2431      },
  2432      "gen4-plan": {
  2433        "QueryType": "SELECT",
  2434        "Original": "select * from music where user_id = 1 union select * from user where id = 1",
  2435        "Instructions": {
  2436          "OperatorType": "Route",
  2437          "Variant": "EqualUnique",
  2438          "Keyspace": {
  2439            "Name": "user",
  2440            "Sharded": true
  2441          },
  2442          "FieldQuery": "select * from music where 1 != 1 union select * from `user` where 1 != 1",
  2443          "Query": "select * from music where user_id = 1 union select * from `user` where id = 1",
  2444          "Table": "music",
  2445          "Values": [
  2446            "INT64(1)"
  2447          ],
  2448          "Vindex": "user_index"
  2449        },
  2450        "TablesUsed": [
  2451          "user.music",
  2452          "user.user"
  2453        ]
  2454      }
  2455    },
  2456    {
  2457      "comment": "union with the same target shard last_insert_id",
  2458      "query": "select *, last_insert_id() from music where user_id = 1 union select * from user where id = 1",
  2459      "v3-plan": {
  2460        "QueryType": "SELECT",
  2461        "Original": "select *, last_insert_id() from music where user_id = 1 union select * from user where id = 1",
  2462        "Instructions": {
  2463          "OperatorType": "Route",
  2464          "Variant": "EqualUnique",
  2465          "Keyspace": {
  2466            "Name": "user",
  2467            "Sharded": true
  2468          },
  2469          "FieldQuery": "select *, :__lastInsertId as `last_insert_id()` from music where 1 != 1 union select * from `user` where 1 != 1",
  2470          "Query": "select *, :__lastInsertId as `last_insert_id()` from music where user_id = 1 union select * from `user` where id = 1",
  2471          "Table": "music",
  2472          "Values": [
  2473            "INT64(1)"
  2474          ],
  2475          "Vindex": "user_index"
  2476        }
  2477      },
  2478      "gen4-plan": {
  2479        "QueryType": "SELECT",
  2480        "Original": "select *, last_insert_id() from music where user_id = 1 union select * from user where id = 1",
  2481        "Instructions": {
  2482          "OperatorType": "Route",
  2483          "Variant": "EqualUnique",
  2484          "Keyspace": {
  2485            "Name": "user",
  2486            "Sharded": true
  2487          },
  2488          "FieldQuery": "select *, :__lastInsertId as `last_insert_id()` from music where 1 != 1 union select * from `user` where 1 != 1",
  2489          "Query": "select *, :__lastInsertId as `last_insert_id()` from music where user_id = 1 union select * from `user` where id = 1",
  2490          "Table": "music",
  2491          "Values": [
  2492            "INT64(1)"
  2493          ],
  2494          "Vindex": "user_index"
  2495        },
  2496        "TablesUsed": [
  2497          "user.music",
  2498          "user.user"
  2499        ]
  2500      }
  2501    },
  2502    {
  2503      "comment": "unsharded union in derived table",
  2504      "query": "select * from (select col1, col2 from unsharded where id = 1 union select col1, col2 from unsharded where id = 3) a",
  2505      "v3-plan": {
  2506        "QueryType": "SELECT",
  2507        "Original": "select * from (select col1, col2 from unsharded where id = 1 union select col1, col2 from unsharded where id = 3) a",
  2508        "Instructions": {
  2509          "OperatorType": "Route",
  2510          "Variant": "Unsharded",
  2511          "Keyspace": {
  2512            "Name": "main",
  2513            "Sharded": false
  2514          },
  2515          "FieldQuery": "select * from (select col1, col2 from unsharded where 1 != 1 union select col1, col2 from unsharded where 1 != 1) as a where 1 != 1",
  2516          "Query": "select * from (select col1, col2 from unsharded where id = 1 union select col1, col2 from unsharded where id = 3) as a",
  2517          "Table": "unsharded"
  2518        }
  2519      },
  2520      "gen4-plan": {
  2521        "QueryType": "SELECT",
  2522        "Original": "select * from (select col1, col2 from unsharded where id = 1 union select col1, col2 from unsharded where id = 3) a",
  2523        "Instructions": {
  2524          "OperatorType": "Route",
  2525          "Variant": "Unsharded",
  2526          "Keyspace": {
  2527            "Name": "main",
  2528            "Sharded": false
  2529          },
  2530          "FieldQuery": "select a.col1, a.col2 from (select col1, col2 from unsharded where 1 != 1 union select col1, col2 from unsharded where 1 != 1) as a where 1 != 1",
  2531          "Query": "select a.col1, a.col2 from (select col1, col2 from unsharded where id = 1 union select col1, col2 from unsharded where id = 3) as a",
  2532          "Table": "unsharded"
  2533        },
  2534        "TablesUsed": [
  2535          "main.unsharded"
  2536        ]
  2537      }
  2538    },
  2539    {
  2540      "comment": "unsharded union in subquery",
  2541      "query": "select id, name from unsharded where id in (select id from unsharded where id = 1 union select id from unsharded where id = 3)",
  2542      "v3-plan": {
  2543        "QueryType": "SELECT",
  2544        "Original": "select id, name from unsharded where id in (select id from unsharded where id = 1 union select id from unsharded where id = 3)",
  2545        "Instructions": {
  2546          "OperatorType": "Route",
  2547          "Variant": "Unsharded",
  2548          "Keyspace": {
  2549            "Name": "main",
  2550            "Sharded": false
  2551          },
  2552          "FieldQuery": "select id, `name` from unsharded where 1 != 1",
  2553          "Query": "select id, `name` from unsharded where id in (select id from unsharded where id = 1 union select id from unsharded where id = 3)",
  2554          "Table": "unsharded"
  2555        }
  2556      },
  2557      "gen4-plan": {
  2558        "QueryType": "SELECT",
  2559        "Original": "select id, name from unsharded where id in (select id from unsharded where id = 1 union select id from unsharded where id = 3)",
  2560        "Instructions": {
  2561          "OperatorType": "Route",
  2562          "Variant": "Unsharded",
  2563          "Keyspace": {
  2564            "Name": "main",
  2565            "Sharded": false
  2566          },
  2567          "FieldQuery": "select id, `name` from unsharded where 1 != 1",
  2568          "Query": "select id, `name` from unsharded where id in (select id from unsharded where id = 1 union select id from unsharded where id = 3)",
  2569          "Table": "unsharded"
  2570        },
  2571        "TablesUsed": [
  2572          "main.unsharded"
  2573        ]
  2574      }
  2575    },
  2576    {
  2577      "comment": "(select id from unsharded) union (select id from unsharded_auto) order by id limit 5",
  2578      "query": "(select id from unsharded) union (select id from unsharded_auto) order by id limit 5",
  2579      "v3-plan": {
  2580        "QueryType": "SELECT",
  2581        "Original": "(select id from unsharded) union (select id from unsharded_auto) order by id limit 5",
  2582        "Instructions": {
  2583          "OperatorType": "Route",
  2584          "Variant": "Unsharded",
  2585          "Keyspace": {
  2586            "Name": "main",
  2587            "Sharded": false
  2588          },
  2589          "FieldQuery": "select id from unsharded where 1 != 1 union select id from unsharded_auto where 1 != 1",
  2590          "Query": "select id from unsharded union select id from unsharded_auto order by id asc limit 5",
  2591          "Table": "unsharded"
  2592        }
  2593      },
  2594      "gen4-plan": {
  2595        "QueryType": "SELECT",
  2596        "Original": "(select id from unsharded) union (select id from unsharded_auto) order by id limit 5",
  2597        "Instructions": {
  2598          "OperatorType": "Route",
  2599          "Variant": "Unsharded",
  2600          "Keyspace": {
  2601            "Name": "main",
  2602            "Sharded": false
  2603          },
  2604          "FieldQuery": "select id from unsharded where 1 != 1 union select id from unsharded_auto where 1 != 1",
  2605          "Query": "select id from unsharded union select id from unsharded_auto order by id asc limit 5",
  2606          "Table": "unsharded, unsharded_auto"
  2607        },
  2608        "TablesUsed": [
  2609          "main.unsharded",
  2610          "main.unsharded_auto"
  2611        ]
  2612      }
  2613    },
  2614    {
  2615      "comment": "unsharded union",
  2616      "query": "select id from unsharded union select id from unsharded_auto union select id from unsharded_auto where id in (132)",
  2617      "v3-plan": {
  2618        "QueryType": "SELECT",
  2619        "Original": "select id from unsharded union select id from unsharded_auto union select id from unsharded_auto where id in (132)",
  2620        "Instructions": {
  2621          "OperatorType": "Route",
  2622          "Variant": "Unsharded",
  2623          "Keyspace": {
  2624            "Name": "main",
  2625            "Sharded": false
  2626          },
  2627          "FieldQuery": "select id from unsharded where 1 != 1 union select id from unsharded_auto where 1 != 1 union select id from unsharded_auto where 1 != 1",
  2628          "Query": "select id from unsharded union select id from unsharded_auto union select id from unsharded_auto where id in (132)",
  2629          "Table": "unsharded"
  2630        }
  2631      },
  2632      "gen4-plan": {
  2633        "QueryType": "SELECT",
  2634        "Original": "select id from unsharded union select id from unsharded_auto union select id from unsharded_auto where id in (132)",
  2635        "Instructions": {
  2636          "OperatorType": "Route",
  2637          "Variant": "Unsharded",
  2638          "Keyspace": {
  2639            "Name": "main",
  2640            "Sharded": false
  2641          },
  2642          "FieldQuery": "select id from unsharded where 1 != 1 union select id from unsharded_auto where 1 != 1 union select id from unsharded_auto where 1 != 1",
  2643          "Query": "select id from unsharded union select id from unsharded_auto union select id from unsharded_auto where id in (132)",
  2644          "Table": "unsharded, unsharded_auto"
  2645        },
  2646        "TablesUsed": [
  2647          "main.unsharded",
  2648          "main.unsharded_auto"
  2649        ]
  2650      }
  2651    },
  2652    {
  2653      "comment": "unsharded nested union",
  2654      "query": "(select id from unsharded union select id from unsharded_auto) union (select id from unsharded_auto union select name from unsharded)",
  2655      "v3-plan": {
  2656        "QueryType": "SELECT",
  2657        "Original": "(select id from unsharded union select id from unsharded_auto) union (select id from unsharded_auto union select name from unsharded)",
  2658        "Instructions": {
  2659          "OperatorType": "Route",
  2660          "Variant": "Unsharded",
  2661          "Keyspace": {
  2662            "Name": "main",
  2663            "Sharded": false
  2664          },
  2665          "FieldQuery": "select id from unsharded where 1 != 1 union select id from unsharded_auto where 1 != 1 union select id from unsharded_auto where 1 != 1 union select `name` from unsharded where 1 != 1",
  2666          "Query": "select id from unsharded union select id from unsharded_auto union select id from unsharded_auto union select `name` from unsharded",
  2667          "Table": "unsharded"
  2668        }
  2669      },
  2670      "gen4-plan": {
  2671        "QueryType": "SELECT",
  2672        "Original": "(select id from unsharded union select id from unsharded_auto) union (select id from unsharded_auto union select name from unsharded)",
  2673        "Instructions": {
  2674          "OperatorType": "Route",
  2675          "Variant": "Unsharded",
  2676          "Keyspace": {
  2677            "Name": "main",
  2678            "Sharded": false
  2679          },
  2680          "FieldQuery": "select id from unsharded where 1 != 1 union select id from unsharded_auto where 1 != 1 union select id from unsharded_auto where 1 != 1 union select `name` from unsharded where 1 != 1",
  2681          "Query": "select id from unsharded union select id from unsharded_auto union select id from unsharded_auto union select `name` from unsharded",
  2682          "Table": "unsharded, unsharded_auto"
  2683        },
  2684        "TablesUsed": [
  2685          "main.unsharded",
  2686          "main.unsharded_auto"
  2687        ]
  2688      }
  2689    },
  2690    {
  2691      "comment": "unsharded nested union with limit",
  2692      "query": "(select id from unsharded order by id asc limit 1) union (select id from unsharded order by id desc limit 1) order by id asc limit 1",
  2693      "v3-plan": {
  2694        "QueryType": "SELECT",
  2695        "Original": "(select id from unsharded order by id asc limit 1) union (select id from unsharded order by id desc limit 1) order by id asc limit 1",
  2696        "Instructions": {
  2697          "OperatorType": "Route",
  2698          "Variant": "Unsharded",
  2699          "Keyspace": {
  2700            "Name": "main",
  2701            "Sharded": false
  2702          },
  2703          "FieldQuery": "(select id from unsharded where 1 != 1) union (select id from unsharded where 1 != 1)",
  2704          "Query": "(select id from unsharded order by id asc limit 1) union (select id from unsharded order by id desc limit 1) order by id asc limit 1",
  2705          "Table": "unsharded"
  2706        }
  2707      },
  2708      "gen4-plan": {
  2709        "QueryType": "SELECT",
  2710        "Original": "(select id from unsharded order by id asc limit 1) union (select id from unsharded order by id desc limit 1) order by id asc limit 1",
  2711        "Instructions": {
  2712          "OperatorType": "Route",
  2713          "Variant": "Unsharded",
  2714          "Keyspace": {
  2715            "Name": "main",
  2716            "Sharded": false
  2717          },
  2718          "FieldQuery": "(select id from unsharded where 1 != 1) union (select id from unsharded where 1 != 1)",
  2719          "Query": "(select id from unsharded order by id asc limit 1) union (select id from unsharded order by id desc limit 1) order by id asc limit 1",
  2720          "Table": "unsharded"
  2721        },
  2722        "TablesUsed": [
  2723          "main.unsharded"
  2724        ]
  2725      }
  2726    },
  2727    {
  2728      "comment": "routing rules: ensure directives are not lost",
  2729      "query": "select /*vt+ QUERY_TIMEOUT_MS=1000 */ * from route2",
  2730      "v3-plan": {
  2731        "QueryType": "SELECT",
  2732        "Original": "select /*vt+ QUERY_TIMEOUT_MS=1000 */ * from route2",
  2733        "Instructions": {
  2734          "OperatorType": "Route",
  2735          "Variant": "Unsharded",
  2736          "Keyspace": {
  2737            "Name": "main",
  2738            "Sharded": false
  2739          },
  2740          "FieldQuery": "select * from unsharded as route2 where 1 != 1",
  2741          "Query": "select /*vt+ QUERY_TIMEOUT_MS=1000 */ * from unsharded as route2",
  2742          "QueryTimeout": 1000,
  2743          "Table": "unsharded"
  2744        }
  2745      },
  2746      "gen4-plan": {
  2747        "QueryType": "SELECT",
  2748        "Original": "select /*vt+ QUERY_TIMEOUT_MS=1000 */ * from route2",
  2749        "Instructions": {
  2750          "OperatorType": "Route",
  2751          "Variant": "Unsharded",
  2752          "Keyspace": {
  2753            "Name": "main",
  2754            "Sharded": false
  2755          },
  2756          "FieldQuery": "select * from unsharded as route2 where 1 != 1",
  2757          "Query": "select /*vt+ QUERY_TIMEOUT_MS=1000 */ * from unsharded as route2",
  2758          "QueryTimeout": 1000,
  2759          "Table": "unsharded"
  2760        },
  2761        "TablesUsed": [
  2762          "main.unsharded"
  2763        ]
  2764      }
  2765    },
  2766    {
  2767      "comment": "testing SingleRow Projection",
  2768      "query": "select 42",
  2769      "v3-plan": {
  2770        "QueryType": "SELECT",
  2771        "Original": "select 42",
  2772        "Instructions": {
  2773          "OperatorType": "Projection",
  2774          "Expressions": [
  2775            "INT64(42) as 42"
  2776          ],
  2777          "Inputs": [
  2778            {
  2779              "OperatorType": "SingleRow"
  2780            }
  2781          ]
  2782        }
  2783      },
  2784      "gen4-plan": {
  2785        "QueryType": "SELECT",
  2786        "Original": "select 42",
  2787        "Instructions": {
  2788          "OperatorType": "Projection",
  2789          "Expressions": [
  2790            "INT64(42) as 42"
  2791          ],
  2792          "Inputs": [
  2793            {
  2794              "OperatorType": "SingleRow"
  2795            }
  2796          ]
  2797        },
  2798        "TablesUsed": [
  2799          "main.dual"
  2800        ]
  2801      }
  2802    },
  2803    {
  2804      "comment": "don't filter on the vtgate",
  2805      "query": "select 42 from dual where false",
  2806      "v3-plan": {
  2807        "QueryType": "SELECT",
  2808        "Original": "select 42 from dual where false",
  2809        "Instructions": {
  2810          "OperatorType": "Route",
  2811          "Variant": "Reference",
  2812          "Keyspace": {
  2813            "Name": "main",
  2814            "Sharded": false
  2815          },
  2816          "FieldQuery": "select 42 from dual where 1 != 1",
  2817          "Query": "select 42 from dual where false",
  2818          "Table": "dual"
  2819        }
  2820      },
  2821      "gen4-plan": {
  2822        "QueryType": "SELECT",
  2823        "Original": "select 42 from dual where false",
  2824        "Instructions": {
  2825          "OperatorType": "Route",
  2826          "Variant": "Reference",
  2827          "Keyspace": {
  2828            "Name": "main",
  2829            "Sharded": false
  2830          },
  2831          "FieldQuery": "select 42 from dual where 1 != 1",
  2832          "Query": "select 42 from dual where false",
  2833          "Table": "dual"
  2834        },
  2835        "TablesUsed": [
  2836          "main.dual"
  2837        ]
  2838      }
  2839    },
  2840    {
  2841      "comment": "testing SingleRow Projection with arithmetics",
  2842      "query": "select 42+2",
  2843      "v3-plan": {
  2844        "QueryType": "SELECT",
  2845        "Original": "select 42+2",
  2846        "Instructions": {
  2847          "OperatorType": "Projection",
  2848          "Expressions": [
  2849            "INT64(44) as 42 + 2"
  2850          ],
  2851          "Inputs": [
  2852            {
  2853              "OperatorType": "SingleRow"
  2854            }
  2855          ]
  2856        }
  2857      },
  2858      "gen4-plan": {
  2859        "QueryType": "SELECT",
  2860        "Original": "select 42+2",
  2861        "Instructions": {
  2862          "OperatorType": "Projection",
  2863          "Expressions": [
  2864            "INT64(44) as 42 + 2"
  2865          ],
  2866          "Inputs": [
  2867            {
  2868              "OperatorType": "SingleRow"
  2869            }
  2870          ]
  2871        },
  2872        "TablesUsed": [
  2873          "main.dual"
  2874        ]
  2875      }
  2876    },
  2877    {
  2878      "comment": "sql_calc_found_rows without limit",
  2879      "query": "select sql_calc_found_rows * from music where user_id = 1",
  2880      "v3-plan": {
  2881        "QueryType": "SELECT",
  2882        "Original": "select sql_calc_found_rows * from music where user_id = 1",
  2883        "Instructions": {
  2884          "OperatorType": "Route",
  2885          "Variant": "EqualUnique",
  2886          "Keyspace": {
  2887            "Name": "user",
  2888            "Sharded": true
  2889          },
  2890          "FieldQuery": "select * from music where 1 != 1",
  2891          "Query": "select * from music where user_id = 1",
  2892          "Table": "music",
  2893          "Values": [
  2894            "INT64(1)"
  2895          ],
  2896          "Vindex": "user_index"
  2897        }
  2898      },
  2899      "gen4-plan": {
  2900        "QueryType": "SELECT",
  2901        "Original": "select sql_calc_found_rows * from music where user_id = 1",
  2902        "Instructions": {
  2903          "OperatorType": "Route",
  2904          "Variant": "EqualUnique",
  2905          "Keyspace": {
  2906            "Name": "user",
  2907            "Sharded": true
  2908          },
  2909          "FieldQuery": "select * from music where 1 != 1",
  2910          "Query": "select * from music where user_id = 1",
  2911          "Table": "music",
  2912          "Values": [
  2913            "INT64(1)"
  2914          ],
  2915          "Vindex": "user_index"
  2916        },
  2917        "TablesUsed": [
  2918          "user.music"
  2919        ]
  2920      }
  2921    },
  2922    {
  2923      "comment": "sql_calc_found_rows with limit",
  2924      "query": "select sql_calc_found_rows * from music limit 100",
  2925      "v3-plan": {
  2926        "QueryType": "SELECT",
  2927        "Original": "select sql_calc_found_rows * from music limit 100",
  2928        "Instructions": {
  2929          "OperatorType": "SQL_CALC_FOUND_ROWS",
  2930          "Inputs": [
  2931            {
  2932              "OperatorType": "Limit",
  2933              "Count": "INT64(100)",
  2934              "Inputs": [
  2935                {
  2936                  "OperatorType": "Route",
  2937                  "Variant": "Scatter",
  2938                  "Keyspace": {
  2939                    "Name": "user",
  2940                    "Sharded": true
  2941                  },
  2942                  "FieldQuery": "select * from music where 1 != 1",
  2943                  "Query": "select * from music limit :__upper_limit",
  2944                  "Table": "music"
  2945                }
  2946              ]
  2947            },
  2948            {
  2949              "OperatorType": "Aggregate",
  2950              "Variant": "Scalar",
  2951              "Aggregates": "sum_count(0) AS count",
  2952              "Inputs": [
  2953                {
  2954                  "OperatorType": "Route",
  2955                  "Variant": "Scatter",
  2956                  "Keyspace": {
  2957                    "Name": "user",
  2958                    "Sharded": true
  2959                  },
  2960                  "FieldQuery": "select count(*) from music where 1 != 1",
  2961                  "Query": "select count(*) from music",
  2962                  "Table": "music"
  2963                }
  2964              ]
  2965            }
  2966          ]
  2967        }
  2968      },
  2969      "gen4-plan": {
  2970        "QueryType": "SELECT",
  2971        "Original": "select sql_calc_found_rows * from music limit 100",
  2972        "Instructions": {
  2973          "OperatorType": "SQL_CALC_FOUND_ROWS",
  2974          "Inputs": [
  2975            {
  2976              "OperatorType": "Limit",
  2977              "Count": "INT64(100)",
  2978              "Inputs": [
  2979                {
  2980                  "OperatorType": "Route",
  2981                  "Variant": "Scatter",
  2982                  "Keyspace": {
  2983                    "Name": "user",
  2984                    "Sharded": true
  2985                  },
  2986                  "FieldQuery": "select * from music where 1 != 1",
  2987                  "Query": "select * from music limit :__upper_limit",
  2988                  "Table": "music"
  2989                }
  2990              ]
  2991            },
  2992            {
  2993              "OperatorType": "Aggregate",
  2994              "Variant": "Scalar",
  2995              "Aggregates": "sum_count_star(0) AS count(*)",
  2996              "Inputs": [
  2997                {
  2998                  "OperatorType": "Route",
  2999                  "Variant": "Scatter",
  3000                  "Keyspace": {
  3001                    "Name": "user",
  3002                    "Sharded": true
  3003                  },
  3004                  "FieldQuery": "select count(*) from music where 1 != 1",
  3005                  "Query": "select count(*) from music",
  3006                  "Table": "music"
  3007                }
  3008              ]
  3009            }
  3010          ]
  3011        },
  3012        "TablesUsed": [
  3013          "user.music"
  3014        ]
  3015      }
  3016    },
  3017    {
  3018      "comment": "sql_calc_found_rows with SelectEqualUnique plans",
  3019      "query": "select sql_calc_found_rows * from music where user_id = 1 limit 2",
  3020      "v3-plan": {
  3021        "QueryType": "SELECT",
  3022        "Original": "select sql_calc_found_rows * from music where user_id = 1 limit 2",
  3023        "Instructions": {
  3024          "OperatorType": "SQL_CALC_FOUND_ROWS",
  3025          "Inputs": [
  3026            {
  3027              "OperatorType": "Route",
  3028              "Variant": "EqualUnique",
  3029              "Keyspace": {
  3030                "Name": "user",
  3031                "Sharded": true
  3032              },
  3033              "FieldQuery": "select * from music where 1 != 1",
  3034              "Query": "select * from music where user_id = 1 limit 2",
  3035              "Table": "music",
  3036              "Values": [
  3037                "INT64(1)"
  3038              ],
  3039              "Vindex": "user_index"
  3040            },
  3041            {
  3042              "OperatorType": "Route",
  3043              "Variant": "EqualUnique",
  3044              "Keyspace": {
  3045                "Name": "user",
  3046                "Sharded": true
  3047              },
  3048              "FieldQuery": "select count(*) from music where 1 != 1",
  3049              "Query": "select count(*) from music where user_id = 1",
  3050              "Table": "music",
  3051              "Values": [
  3052                "INT64(1)"
  3053              ],
  3054              "Vindex": "user_index"
  3055            }
  3056          ]
  3057        }
  3058      },
  3059      "gen4-plan": {
  3060        "QueryType": "SELECT",
  3061        "Original": "select sql_calc_found_rows * from music where user_id = 1 limit 2",
  3062        "Instructions": {
  3063          "OperatorType": "SQL_CALC_FOUND_ROWS",
  3064          "Inputs": [
  3065            {
  3066              "OperatorType": "Route",
  3067              "Variant": "EqualUnique",
  3068              "Keyspace": {
  3069                "Name": "user",
  3070                "Sharded": true
  3071              },
  3072              "FieldQuery": "select * from music where 1 != 1",
  3073              "Query": "select * from music where user_id = 1 limit 2",
  3074              "Table": "music",
  3075              "Values": [
  3076                "INT64(1)"
  3077              ],
  3078              "Vindex": "user_index"
  3079            },
  3080            {
  3081              "OperatorType": "Route",
  3082              "Variant": "EqualUnique",
  3083              "Keyspace": {
  3084                "Name": "user",
  3085                "Sharded": true
  3086              },
  3087              "FieldQuery": "select count(*) from music where 1 != 1",
  3088              "Query": "select count(*) from music where user_id = 1",
  3089              "Table": "music",
  3090              "Values": [
  3091                "INT64(1)"
  3092              ],
  3093              "Vindex": "user_index"
  3094            }
  3095          ]
  3096        },
  3097        "TablesUsed": [
  3098          "user.music"
  3099        ]
  3100      }
  3101    },
  3102    {
  3103      "comment": "sql_calc_found_rows with group by and having",
  3104      "query": "select sql_calc_found_rows user_id, count(id) from music group by user_id having count(user_id) = 1 order by user_id limit 2",
  3105      "v3-plan": {
  3106        "QueryType": "SELECT",
  3107        "Original": "select sql_calc_found_rows user_id, count(id) from music group by user_id having count(user_id) = 1 order by user_id limit 2",
  3108        "Instructions": {
  3109          "OperatorType": "SQL_CALC_FOUND_ROWS",
  3110          "Inputs": [
  3111            {
  3112              "OperatorType": "Limit",
  3113              "Count": "INT64(2)",
  3114              "Inputs": [
  3115                {
  3116                  "OperatorType": "Route",
  3117                  "Variant": "Scatter",
  3118                  "Keyspace": {
  3119                    "Name": "user",
  3120                    "Sharded": true
  3121                  },
  3122                  "FieldQuery": "select user_id, count(id), weight_string(user_id) from music where 1 != 1 group by user_id",
  3123                  "OrderBy": "(0|2) ASC",
  3124                  "Query": "select user_id, count(id), weight_string(user_id) from music group by user_id having count(user_id) = 1 order by user_id asc limit :__upper_limit",
  3125                  "ResultColumns": 2,
  3126                  "Table": "music"
  3127                }
  3128              ]
  3129            },
  3130            {
  3131              "OperatorType": "Aggregate",
  3132              "Variant": "Scalar",
  3133              "Aggregates": "sum_count(0) AS count",
  3134              "Inputs": [
  3135                {
  3136                  "OperatorType": "Route",
  3137                  "Variant": "Scatter",
  3138                  "Keyspace": {
  3139                    "Name": "user",
  3140                    "Sharded": true
  3141                  },
  3142                  "FieldQuery": "select count(*) from (select user_id, count(id) from music where 1 != 1 group by user_id) as t where 1 != 1",
  3143                  "Query": "select count(*) from (select user_id, count(id) from music group by user_id having count(user_id) = 1) as t",
  3144                  "Table": "music"
  3145                }
  3146              ]
  3147            }
  3148          ]
  3149        }
  3150      },
  3151      "gen4-plan": {
  3152        "QueryType": "SELECT",
  3153        "Original": "select sql_calc_found_rows user_id, count(id) from music group by user_id having count(user_id) = 1 order by user_id limit 2",
  3154        "Instructions": {
  3155          "OperatorType": "SQL_CALC_FOUND_ROWS",
  3156          "Inputs": [
  3157            {
  3158              "OperatorType": "Limit",
  3159              "Count": "INT64(2)",
  3160              "Inputs": [
  3161                {
  3162                  "OperatorType": "Route",
  3163                  "Variant": "Scatter",
  3164                  "Keyspace": {
  3165                    "Name": "user",
  3166                    "Sharded": true
  3167                  },
  3168                  "FieldQuery": "select user_id, count(id), weight_string(user_id) from music where 1 != 1 group by user_id",
  3169                  "OrderBy": "(0|2) ASC",
  3170                  "Query": "select user_id, count(id), weight_string(user_id) from music group by user_id having count(user_id) = 1 order by user_id asc limit :__upper_limit",
  3171                  "ResultColumns": 2,
  3172                  "Table": "music"
  3173                }
  3174              ]
  3175            },
  3176            {
  3177              "OperatorType": "Aggregate",
  3178              "Variant": "Scalar",
  3179              "Aggregates": "sum_count_star(0) AS count(*)",
  3180              "Inputs": [
  3181                {
  3182                  "OperatorType": "Route",
  3183                  "Variant": "Scatter",
  3184                  "Keyspace": {
  3185                    "Name": "user",
  3186                    "Sharded": true
  3187                  },
  3188                  "FieldQuery": "select count(*) from (select user_id, count(id) from music where 1 != 1 group by user_id) as t where 1 != 1",
  3189                  "Query": "select count(*) from (select user_id, count(id) from music group by user_id having count(user_id) = 1) as t",
  3190                  "Table": "music"
  3191                }
  3192              ]
  3193            }
  3194          ]
  3195        },
  3196        "TablesUsed": [
  3197          "user.music"
  3198        ]
  3199      }
  3200    },
  3201    {
  3202      "comment": "sql_calc_found_rows in sub queries",
  3203      "query": "select * from music where user_id IN (select sql_calc_found_rows * from music limit 10)",
  3204      "v3-plan": "VT03008: incorrect usage/placement of 'SQL_CALC_FOUND_ROWS'",
  3205      "gen4-plan": "Incorrect usage/placement of 'SQL_CALC_FOUND_ROWS'"
  3206    },
  3207    {
  3208      "comment": "sql_calc_found_rows in derived table",
  3209      "query": "select sql_calc_found_rows * from (select sql_calc_found_rows * from music limit 10) t limit 1",
  3210      "v3-plan": "VT03008: incorrect usage/placement of 'SQL_CALC_FOUND_ROWS'",
  3211      "gen4-plan": "Incorrect usage/placement of 'SQL_CALC_FOUND_ROWS'"
  3212    },
  3213    {
  3214      "comment": "select from unsharded keyspace into dumpfile",
  3215      "query": "select * from main.unsharded into Dumpfile 'x.txt'",
  3216      "v3-plan": {
  3217        "QueryType": "SELECT",
  3218        "Original": "select * from main.unsharded into Dumpfile 'x.txt'",
  3219        "Instructions": {
  3220          "OperatorType": "Route",
  3221          "Variant": "Unsharded",
  3222          "Keyspace": {
  3223            "Name": "main",
  3224            "Sharded": false
  3225          },
  3226          "FieldQuery": "select * from unsharded where 1 != 1",
  3227          "Query": "select * from unsharded into dumpfile 'x.txt'",
  3228          "Table": "unsharded"
  3229        }
  3230      },
  3231      "gen4-plan": {
  3232        "QueryType": "SELECT",
  3233        "Original": "select * from main.unsharded into Dumpfile 'x.txt'",
  3234        "Instructions": {
  3235          "OperatorType": "Route",
  3236          "Variant": "Unsharded",
  3237          "Keyspace": {
  3238            "Name": "main",
  3239            "Sharded": false
  3240          },
  3241          "FieldQuery": "select * from unsharded where 1 != 1",
  3242          "Query": "select * from unsharded into dumpfile 'x.txt'",
  3243          "Table": "unsharded"
  3244        },
  3245        "TablesUsed": [
  3246          "main.unsharded"
  3247        ]
  3248      }
  3249    },
  3250    {
  3251      "comment": "select from unsharded keyspace into outfile",
  3252      "query": "select * from main.unsharded into outfile 'x.txt' character set binary fields terminated by 'term' optionally enclosed by 'c' escaped by 'e' lines starting by 'a' terminated by '\n'",
  3253      "v3-plan": {
  3254        "QueryType": "SELECT",
  3255        "Original": "select * from main.unsharded into outfile 'x.txt' character set binary fields terminated by 'term' optionally enclosed by 'c' escaped by 'e' lines starting by 'a' terminated by '\n'",
  3256        "Instructions": {
  3257          "OperatorType": "Route",
  3258          "Variant": "Unsharded",
  3259          "Keyspace": {
  3260            "Name": "main",
  3261            "Sharded": false
  3262          },
  3263          "FieldQuery": "select * from unsharded where 1 != 1",
  3264          "Query": "select * from unsharded into outfile 'x.txt' character set binary fields terminated by 'term' optionally enclosed by 'c' escaped by 'e' lines starting by 'a' terminated by '\\n'",
  3265          "Table": "unsharded"
  3266        }
  3267      },
  3268      "gen4-plan": {
  3269        "QueryType": "SELECT",
  3270        "Original": "select * from main.unsharded into outfile 'x.txt' character set binary fields terminated by 'term' optionally enclosed by 'c' escaped by 'e' lines starting by 'a' terminated by '\n'",
  3271        "Instructions": {
  3272          "OperatorType": "Route",
  3273          "Variant": "Unsharded",
  3274          "Keyspace": {
  3275            "Name": "main",
  3276            "Sharded": false
  3277          },
  3278          "FieldQuery": "select * from unsharded where 1 != 1",
  3279          "Query": "select * from unsharded into outfile 'x.txt' character set binary fields terminated by 'term' optionally enclosed by 'c' escaped by 'e' lines starting by 'a' terminated by '\\n'",
  3280          "Table": "unsharded"
  3281        },
  3282        "TablesUsed": [
  3283          "main.unsharded"
  3284        ]
  3285      }
  3286    },
  3287    {
  3288      "comment": "select from unsharded keyspace into outfile s3",
  3289      "query": "select * from main.unsharded into outfile s3 'out_file_name' character set binary format csv header fields terminated by 'term' optionally enclosed by 'c' escaped by 'e' lines starting by 'a' terminated by '\n' manifest on overwrite off",
  3290      "v3-plan": {
  3291        "QueryType": "SELECT",
  3292        "Original": "select * from main.unsharded into outfile s3 'out_file_name' character set binary format csv header fields terminated by 'term' optionally enclosed by 'c' escaped by 'e' lines starting by 'a' terminated by '\n' manifest on overwrite off",
  3293        "Instructions": {
  3294          "OperatorType": "Route",
  3295          "Variant": "Unsharded",
  3296          "Keyspace": {
  3297            "Name": "main",
  3298            "Sharded": false
  3299          },
  3300          "FieldQuery": "select * from unsharded where 1 != 1",
  3301          "Query": "select * from unsharded into outfile s3 'out_file_name' character set binary format csv header fields terminated by 'term' optionally enclosed by 'c' escaped by 'e' lines starting by 'a' terminated by '\\n' manifest on overwrite off",
  3302          "Table": "unsharded"
  3303        }
  3304      },
  3305      "gen4-plan": {
  3306        "QueryType": "SELECT",
  3307        "Original": "select * from main.unsharded into outfile s3 'out_file_name' character set binary format csv header fields terminated by 'term' optionally enclosed by 'c' escaped by 'e' lines starting by 'a' terminated by '\n' manifest on overwrite off",
  3308        "Instructions": {
  3309          "OperatorType": "Route",
  3310          "Variant": "Unsharded",
  3311          "Keyspace": {
  3312            "Name": "main",
  3313            "Sharded": false
  3314          },
  3315          "FieldQuery": "select * from unsharded where 1 != 1",
  3316          "Query": "select * from unsharded into outfile s3 'out_file_name' character set binary format csv header fields terminated by 'term' optionally enclosed by 'c' escaped by 'e' lines starting by 'a' terminated by '\\n' manifest on overwrite off",
  3317          "Table": "unsharded"
  3318        },
  3319        "TablesUsed": [
  3320          "main.unsharded"
  3321        ]
  3322      }
  3323    },
  3324    {
  3325      "comment": "Union after into outfile is incorrect",
  3326      "query": "select id from user into outfile 'out_file_name' union all select id from music",
  3327      "plan": "syntax error at position 55 near 'union'"
  3328    },
  3329    {
  3330      "comment": "Into outfile s3 in derived table is incorrect",
  3331      "query": "select id from (select id from user into outfile s3 'inner_outfile') as t2",
  3332      "plan": "syntax error at position 41 near 'into'"
  3333    },
  3334    {
  3335      "comment": "Into outfile s3 in derived table with union incorrect",
  3336      "query": "select id from (select id from user into outfile s3 'inner_outfile' union select 1) as t2",
  3337      "plan": "syntax error at position 41 near 'into'"
  3338    },
  3339    {
  3340      "comment": "select (select u.id from user as u where u.id = 1), a.id from user as a where a.id = 1",
  3341      "query": "select (select u.id from user as u where u.id = 1), a.id from user as a where a.id = 1",
  3342      "v3-plan": {
  3343        "QueryType": "SELECT",
  3344        "Original": "select (select u.id from user as u where u.id = 1), a.id from user as a where a.id = 1",
  3345        "Instructions": {
  3346          "OperatorType": "Route",
  3347          "Variant": "EqualUnique",
  3348          "Keyspace": {
  3349            "Name": "user",
  3350            "Sharded": true
  3351          },
  3352          "FieldQuery": "select (select u.id from `user` as u where 1 != 1), a.id from `user` as a where 1 != 1",
  3353          "Query": "select (select u.id from `user` as u where u.id = 1), a.id from `user` as a where a.id = 1",
  3354          "Table": "`user`",
  3355          "Values": [
  3356            "INT64(1)"
  3357          ],
  3358          "Vindex": "user_index"
  3359        }
  3360      },
  3361      "gen4-plan": {
  3362        "QueryType": "SELECT",
  3363        "Original": "select (select u.id from user as u where u.id = 1), a.id from user as a where a.id = 1",
  3364        "Instructions": {
  3365          "OperatorType": "Route",
  3366          "Variant": "EqualUnique",
  3367          "Keyspace": {
  3368            "Name": "user",
  3369            "Sharded": true
  3370          },
  3371          "FieldQuery": "select (select u.id from `user` as u where 1 != 1), a.id from `user` as a where 1 != 1",
  3372          "Query": "select (select u.id from `user` as u where u.id = 1), a.id from `user` as a where a.id = 1",
  3373          "Table": "`user`",
  3374          "Values": [
  3375            "INT64(1)"
  3376          ],
  3377          "Vindex": "user_index"
  3378        },
  3379        "TablesUsed": [
  3380          "user.user"
  3381        ]
  3382      }
  3383    },
  3384    {
  3385      "comment": "Add two tables with the same column in a join",
  3386      "query": "select t.id, s.id from user t join user_extra s on t.id = s.user_id join unsharded",
  3387      "v3-plan": {
  3388        "QueryType": "SELECT",
  3389        "Original": "select t.id, s.id from user t join user_extra s on t.id = s.user_id join unsharded",
  3390        "Instructions": {
  3391          "OperatorType": "Join",
  3392          "Variant": "Join",
  3393          "JoinColumnIndexes": "L:0,L:1",
  3394          "TableName": "`user`, user_extra_unsharded",
  3395          "Inputs": [
  3396            {
  3397              "OperatorType": "Route",
  3398              "Variant": "Scatter",
  3399              "Keyspace": {
  3400                "Name": "user",
  3401                "Sharded": true
  3402              },
  3403              "FieldQuery": "select t.id, s.id from `user` as t join user_extra as s on t.id = s.user_id where 1 != 1",
  3404              "Query": "select t.id, s.id from `user` as t join user_extra as s on t.id = s.user_id",
  3405              "Table": "`user`, user_extra"
  3406            },
  3407            {
  3408              "OperatorType": "Route",
  3409              "Variant": "Unsharded",
  3410              "Keyspace": {
  3411                "Name": "main",
  3412                "Sharded": false
  3413              },
  3414              "FieldQuery": "select 1 from unsharded where 1 != 1",
  3415              "Query": "select 1 from unsharded",
  3416              "Table": "unsharded"
  3417            }
  3418          ]
  3419        }
  3420      },
  3421      "gen4-plan": {
  3422        "QueryType": "SELECT",
  3423        "Original": "select t.id, s.id from user t join user_extra s on t.id = s.user_id join unsharded",
  3424        "Instructions": {
  3425          "OperatorType": "Join",
  3426          "Variant": "Join",
  3427          "JoinColumnIndexes": "R:0,R:1",
  3428          "TableName": "unsharded_`user`, user_extra",
  3429          "Inputs": [
  3430            {
  3431              "OperatorType": "Route",
  3432              "Variant": "Unsharded",
  3433              "Keyspace": {
  3434                "Name": "main",
  3435                "Sharded": false
  3436              },
  3437              "FieldQuery": "select 1 from unsharded where 1 != 1",
  3438              "Query": "select 1 from unsharded",
  3439              "Table": "unsharded"
  3440            },
  3441            {
  3442              "OperatorType": "Route",
  3443              "Variant": "Scatter",
  3444              "Keyspace": {
  3445                "Name": "user",
  3446                "Sharded": true
  3447              },
  3448              "FieldQuery": "select t.id, s.id from `user` as t, user_extra as s where 1 != 1",
  3449              "Query": "select t.id, s.id from `user` as t, user_extra as s where t.id = s.user_id",
  3450              "Table": "`user`, user_extra"
  3451            }
  3452          ]
  3453        },
  3454        "TablesUsed": [
  3455          "main.unsharded",
  3456          "user.user",
  3457          "user.user_extra"
  3458        ]
  3459      }
  3460    },
  3461    {
  3462      "comment": "((((select 1))))",
  3463      "query": "((((select 1))))",
  3464      "v3-plan": {
  3465        "QueryType": "SELECT",
  3466        "Original": "((((select 1))))",
  3467        "Instructions": {
  3468          "OperatorType": "Projection",
  3469          "Expressions": [
  3470            "INT64(1) as 1"
  3471          ],
  3472          "Inputs": [
  3473            {
  3474              "OperatorType": "SingleRow"
  3475            }
  3476          ]
  3477        }
  3478      },
  3479      "gen4-plan": {
  3480        "QueryType": "SELECT",
  3481        "Original": "((((select 1))))",
  3482        "Instructions": {
  3483          "OperatorType": "Projection",
  3484          "Expressions": [
  3485            "INT64(1) as 1"
  3486          ],
  3487          "Inputs": [
  3488            {
  3489              "OperatorType": "SingleRow"
  3490            }
  3491          ]
  3492        },
  3493        "TablesUsed": [
  3494          "main.dual"
  3495        ]
  3496      }
  3497    },
  3498    {
  3499      "comment": "Merging dual with user",
  3500      "query": "select 42, id from dual, user",
  3501      "v3-plan": {
  3502        "QueryType": "SELECT",
  3503        "Original": "select 42, id from dual, user",
  3504        "Instructions": {
  3505          "OperatorType": "Join",
  3506          "Variant": "Join",
  3507          "JoinColumnIndexes": "L:0,R:0",
  3508          "TableName": "dual_`user`",
  3509          "Inputs": [
  3510            {
  3511              "OperatorType": "Route",
  3512              "Variant": "Reference",
  3513              "Keyspace": {
  3514                "Name": "main",
  3515                "Sharded": false
  3516              },
  3517              "FieldQuery": "select 42 from dual where 1 != 1",
  3518              "Query": "select 42 from dual",
  3519              "Table": "dual"
  3520            },
  3521            {
  3522              "OperatorType": "Route",
  3523              "Variant": "Scatter",
  3524              "Keyspace": {
  3525                "Name": "user",
  3526                "Sharded": true
  3527              },
  3528              "FieldQuery": "select id from `user` where 1 != 1",
  3529              "Query": "select id from `user`",
  3530              "Table": "`user`"
  3531            }
  3532          ]
  3533        }
  3534      },
  3535      "gen4-plan": {
  3536        "QueryType": "SELECT",
  3537        "Original": "select 42, id from dual, user",
  3538        "Instructions": {
  3539          "OperatorType": "Route",
  3540          "Variant": "Scatter",
  3541          "Keyspace": {
  3542            "Name": "user",
  3543            "Sharded": true
  3544          },
  3545          "FieldQuery": "select 42, id from dual, `user` where 1 != 1",
  3546          "Query": "select 42, id from dual, `user`",
  3547          "Table": "`user`, dual"
  3548        },
  3549        "TablesUsed": [
  3550          "main.dual",
  3551          "user.user"
  3552        ]
  3553      }
  3554    },
  3555    {
  3556      "comment": "Table named \"dual\" with a qualifier joined on user should not be merged",
  3557      "query": "select 42, user.id from main.dual, user",
  3558      "v3-plan": {
  3559        "QueryType": "SELECT",
  3560        "Original": "select 42, user.id from main.dual, user",
  3561        "Instructions": {
  3562          "OperatorType": "Join",
  3563          "Variant": "Join",
  3564          "JoinColumnIndexes": "L:0,R:0",
  3565          "TableName": "dual_`user`",
  3566          "Inputs": [
  3567            {
  3568              "OperatorType": "Route",
  3569              "Variant": "Reference",
  3570              "Keyspace": {
  3571                "Name": "main",
  3572                "Sharded": false
  3573              },
  3574              "FieldQuery": "select 42 from dual where 1 != 1",
  3575              "Query": "select 42 from dual",
  3576              "Table": "dual"
  3577            },
  3578            {
  3579              "OperatorType": "Route",
  3580              "Variant": "Scatter",
  3581              "Keyspace": {
  3582                "Name": "user",
  3583                "Sharded": true
  3584              },
  3585              "FieldQuery": "select `user`.id from `user` where 1 != 1",
  3586              "Query": "select `user`.id from `user`",
  3587              "Table": "`user`"
  3588            }
  3589          ]
  3590        }
  3591      },
  3592      "gen4-plan": {
  3593        "QueryType": "SELECT",
  3594        "Original": "select 42, user.id from main.dual, user",
  3595        "Instructions": {
  3596          "OperatorType": "Join",
  3597          "Variant": "Join",
  3598          "JoinColumnIndexes": "L:0,R:0",
  3599          "TableName": "dual_`user`",
  3600          "Inputs": [
  3601            {
  3602              "OperatorType": "Route",
  3603              "Variant": "Reference",
  3604              "Keyspace": {
  3605                "Name": "main",
  3606                "Sharded": false
  3607              },
  3608              "FieldQuery": "select 42 from dual where 1 != 1",
  3609              "Query": "select 42 from dual",
  3610              "Table": "dual"
  3611            },
  3612            {
  3613              "OperatorType": "Route",
  3614              "Variant": "Scatter",
  3615              "Keyspace": {
  3616                "Name": "user",
  3617                "Sharded": true
  3618              },
  3619              "FieldQuery": "select `user`.id from `user` where 1 != 1",
  3620              "Query": "select `user`.id from `user`",
  3621              "Table": "`user`"
  3622            }
  3623          ]
  3624        },
  3625        "TablesUsed": [
  3626          "main.dual",
  3627          "user.user"
  3628        ]
  3629      }
  3630    },
  3631    {
  3632      "comment": "select (select col from user limit 1) as a from user join user_extra order by a",
  3633      "query": "select (select col from user limit 1) as a from user join user_extra order by a",
  3634      "v3-plan": {
  3635        "QueryType": "SELECT",
  3636        "Original": "select (select col from user limit 1) as a from user join user_extra order by a",
  3637        "Instructions": {
  3638          "OperatorType": "Subquery",
  3639          "Variant": "PulloutValue",
  3640          "PulloutVars": [
  3641            "__sq_has_values1",
  3642            "__sq1"
  3643          ],
  3644          "Inputs": [
  3645            {
  3646              "OperatorType": "Limit",
  3647              "Count": "INT64(1)",
  3648              "Inputs": [
  3649                {
  3650                  "OperatorType": "Route",
  3651                  "Variant": "Scatter",
  3652                  "Keyspace": {
  3653                    "Name": "user",
  3654                    "Sharded": true
  3655                  },
  3656                  "FieldQuery": "select col from `user` where 1 != 1",
  3657                  "Query": "select col from `user` limit :__upper_limit",
  3658                  "Table": "`user`"
  3659                }
  3660              ]
  3661            },
  3662            {
  3663              "OperatorType": "Join",
  3664              "Variant": "Join",
  3665              "JoinColumnIndexes": "L:0",
  3666              "TableName": "`user`_user_extra",
  3667              "Inputs": [
  3668                {
  3669                  "OperatorType": "Route",
  3670                  "Variant": "Scatter",
  3671                  "Keyspace": {
  3672                    "Name": "user",
  3673                    "Sharded": true
  3674                  },
  3675                  "FieldQuery": "select :__sq1 as a, weight_string(:__sq1) from `user` where 1 != 1",
  3676                  "OrderBy": "(0|1) ASC",
  3677                  "Query": "select :__sq1 as a, weight_string(:__sq1) from `user` order by a asc",
  3678                  "ResultColumns": 1,
  3679                  "Table": "`user`"
  3680                },
  3681                {
  3682                  "OperatorType": "Route",
  3683                  "Variant": "Scatter",
  3684                  "Keyspace": {
  3685                    "Name": "user",
  3686                    "Sharded": true
  3687                  },
  3688                  "FieldQuery": "select 1 from user_extra where 1 != 1",
  3689                  "Query": "select 1 from user_extra",
  3690                  "Table": "user_extra"
  3691                }
  3692              ]
  3693            }
  3694          ]
  3695        }
  3696      },
  3697      "gen4-plan": {
  3698        "QueryType": "SELECT",
  3699        "Original": "select (select col from user limit 1) as a from user join user_extra order by a",
  3700        "Instructions": {
  3701          "OperatorType": "Subquery",
  3702          "Variant": "PulloutValue",
  3703          "PulloutVars": [
  3704            "__sq1"
  3705          ],
  3706          "Inputs": [
  3707            {
  3708              "OperatorType": "Limit",
  3709              "Count": "INT64(1)",
  3710              "Inputs": [
  3711                {
  3712                  "OperatorType": "Route",
  3713                  "Variant": "Scatter",
  3714                  "Keyspace": {
  3715                    "Name": "user",
  3716                    "Sharded": true
  3717                  },
  3718                  "FieldQuery": "select col from `user` where 1 != 1",
  3719                  "Query": "select col from `user` limit :__upper_limit",
  3720                  "Table": "`user`"
  3721                }
  3722              ]
  3723            },
  3724            {
  3725              "OperatorType": "Join",
  3726              "Variant": "Join",
  3727              "JoinColumnIndexes": "L:0",
  3728              "TableName": "`user`_user_extra",
  3729              "Inputs": [
  3730                {
  3731                  "OperatorType": "Route",
  3732                  "Variant": "Scatter",
  3733                  "Keyspace": {
  3734                    "Name": "user",
  3735                    "Sharded": true
  3736                  },
  3737                  "FieldQuery": "select :__sq1 as a, weight_string(:__sq1) from `user` where 1 != 1",
  3738                  "OrderBy": "(0|1) ASC",
  3739                  "Query": "select :__sq1 as a, weight_string(:__sq1) from `user` order by a asc",
  3740                  "Table": "`user`"
  3741                },
  3742                {
  3743                  "OperatorType": "Route",
  3744                  "Variant": "Scatter",
  3745                  "Keyspace": {
  3746                    "Name": "user",
  3747                    "Sharded": true
  3748                  },
  3749                  "FieldQuery": "select 1 from user_extra where 1 != 1",
  3750                  "Query": "select 1 from user_extra",
  3751                  "Table": "user_extra"
  3752                }
  3753              ]
  3754            }
  3755          ]
  3756        },
  3757        "TablesUsed": [
  3758          "user.user",
  3759          "user.user_extra"
  3760        ]
  3761      }
  3762    },
  3763    {
  3764      "comment": "select t.a from (select (select col from user limit 1) as a from user join user_extra) t",
  3765      "query": "select t.a from (select (select col from user limit 1) as a from user join user_extra) t",
  3766      "v3-plan": {
  3767        "QueryType": "SELECT",
  3768        "Original": "select t.a from (select (select col from user limit 1) as a from user join user_extra) t",
  3769        "Instructions": {
  3770          "OperatorType": "SimpleProjection",
  3771          "Columns": [
  3772            0
  3773          ],
  3774          "Inputs": [
  3775            {
  3776              "OperatorType": "Subquery",
  3777              "Variant": "PulloutValue",
  3778              "PulloutVars": [
  3779                "__sq_has_values1",
  3780                "__sq1"
  3781              ],
  3782              "Inputs": [
  3783                {
  3784                  "OperatorType": "Limit",
  3785                  "Count": "INT64(1)",
  3786                  "Inputs": [
  3787                    {
  3788                      "OperatorType": "Route",
  3789                      "Variant": "Scatter",
  3790                      "Keyspace": {
  3791                        "Name": "user",
  3792                        "Sharded": true
  3793                      },
  3794                      "FieldQuery": "select col from `user` where 1 != 1",
  3795                      "Query": "select col from `user` limit :__upper_limit",
  3796                      "Table": "`user`"
  3797                    }
  3798                  ]
  3799                },
  3800                {
  3801                  "OperatorType": "Join",
  3802                  "Variant": "Join",
  3803                  "JoinColumnIndexes": "L:0",
  3804                  "TableName": "`user`_user_extra",
  3805                  "Inputs": [
  3806                    {
  3807                      "OperatorType": "Route",
  3808                      "Variant": "Scatter",
  3809                      "Keyspace": {
  3810                        "Name": "user",
  3811                        "Sharded": true
  3812                      },
  3813                      "FieldQuery": "select :__sq1 as a from `user` where 1 != 1",
  3814                      "Query": "select :__sq1 as a from `user`",
  3815                      "Table": "`user`"
  3816                    },
  3817                    {
  3818                      "OperatorType": "Route",
  3819                      "Variant": "Scatter",
  3820                      "Keyspace": {
  3821                        "Name": "user",
  3822                        "Sharded": true
  3823                      },
  3824                      "FieldQuery": "select 1 from user_extra where 1 != 1",
  3825                      "Query": "select 1 from user_extra",
  3826                      "Table": "user_extra"
  3827                    }
  3828                  ]
  3829                }
  3830              ]
  3831            }
  3832          ]
  3833        }
  3834      },
  3835      "gen4-plan": {
  3836        "QueryType": "SELECT",
  3837        "Original": "select t.a from (select (select col from user limit 1) as a from user join user_extra) t",
  3838        "Instructions": {
  3839          "OperatorType": "SimpleProjection",
  3840          "Columns": [
  3841            0
  3842          ],
  3843          "Inputs": [
  3844            {
  3845              "OperatorType": "Subquery",
  3846              "Variant": "PulloutValue",
  3847              "PulloutVars": [
  3848                "__sq1"
  3849              ],
  3850              "Inputs": [
  3851                {
  3852                  "OperatorType": "Limit",
  3853                  "Count": "INT64(1)",
  3854                  "Inputs": [
  3855                    {
  3856                      "OperatorType": "Route",
  3857                      "Variant": "Scatter",
  3858                      "Keyspace": {
  3859                        "Name": "user",
  3860                        "Sharded": true
  3861                      },
  3862                      "FieldQuery": "select col from `user` where 1 != 1",
  3863                      "Query": "select col from `user` limit :__upper_limit",
  3864                      "Table": "`user`"
  3865                    }
  3866                  ]
  3867                },
  3868                {
  3869                  "OperatorType": "Join",
  3870                  "Variant": "Join",
  3871                  "JoinColumnIndexes": "L:0",
  3872                  "TableName": "`user`_user_extra",
  3873                  "Inputs": [
  3874                    {
  3875                      "OperatorType": "Route",
  3876                      "Variant": "Scatter",
  3877                      "Keyspace": {
  3878                        "Name": "user",
  3879                        "Sharded": true
  3880                      },
  3881                      "FieldQuery": "select :__sq1 as a from `user` where 1 != 1",
  3882                      "Query": "select :__sq1 as a from `user`",
  3883                      "Table": "`user`"
  3884                    },
  3885                    {
  3886                      "OperatorType": "Route",
  3887                      "Variant": "Scatter",
  3888                      "Keyspace": {
  3889                        "Name": "user",
  3890                        "Sharded": true
  3891                      },
  3892                      "FieldQuery": "select 1 from user_extra where 1 != 1",
  3893                      "Query": "select 1 from user_extra",
  3894                      "Table": "user_extra"
  3895                    }
  3896                  ]
  3897                }
  3898              ]
  3899            }
  3900          ]
  3901        },
  3902        "TablesUsed": [
  3903          "user.user",
  3904          "user.user_extra"
  3905        ]
  3906      }
  3907    },
  3908    {
  3909      "comment": "select (select col from user where user_extra.id = 4 limit 1) as a from user join user_extra",
  3910      "query": "select (select col from user where user_extra.id = 4 limit 1) as a from user join user_extra",
  3911      "plan": "VT12001: unsupported: cross-shard correlated subquery"
  3912    },
  3913    {
  3914      "comment": "plan test for a natural character set string",
  3915      "query": "select N'string' from dual",
  3916      "v3-plan": {
  3917        "QueryType": "SELECT",
  3918        "Original": "select N'string' from dual",
  3919        "Instructions": {
  3920          "OperatorType": "Projection",
  3921          "Expressions": [
  3922            "VARCHAR(\"string\") as N'string'"
  3923          ],
  3924          "Inputs": [
  3925            {
  3926              "OperatorType": "SingleRow"
  3927            }
  3928          ]
  3929        }
  3930      },
  3931      "gen4-plan": {
  3932        "QueryType": "SELECT",
  3933        "Original": "select N'string' from dual",
  3934        "Instructions": {
  3935          "OperatorType": "Projection",
  3936          "Expressions": [
  3937            "VARCHAR(\"string\") as N'string'"
  3938          ],
  3939          "Inputs": [
  3940            {
  3941              "OperatorType": "SingleRow"
  3942            }
  3943          ]
  3944        },
  3945        "TablesUsed": [
  3946          "main.dual"
  3947        ]
  3948      }
  3949    },
  3950    {
  3951      "comment": "select expression having dependencies on both sides of a join",
  3952      "query": "select user.id * user_id as amount from user, user_extra",
  3953      "v3-plan": {
  3954        "QueryType": "SELECT",
  3955        "Original": "select user.id * user_id as amount from user, user_extra",
  3956        "Instructions": {
  3957          "OperatorType": "Join",
  3958          "Variant": "Join",
  3959          "JoinColumnIndexes": "R:0",
  3960          "JoinVars": {
  3961            "user_id": 0
  3962          },
  3963          "TableName": "`user`_user_extra",
  3964          "Inputs": [
  3965            {
  3966              "OperatorType": "Route",
  3967              "Variant": "Scatter",
  3968              "Keyspace": {
  3969                "Name": "user",
  3970                "Sharded": true
  3971              },
  3972              "FieldQuery": "select `user`.id from `user` where 1 != 1",
  3973              "Query": "select `user`.id from `user`",
  3974              "Table": "`user`"
  3975            },
  3976            {
  3977              "OperatorType": "Route",
  3978              "Variant": "Scatter",
  3979              "Keyspace": {
  3980                "Name": "user",
  3981                "Sharded": true
  3982              },
  3983              "FieldQuery": "select :user_id * user_id as amount from user_extra where 1 != 1",
  3984              "Query": "select :user_id * user_id as amount from user_extra",
  3985              "Table": "user_extra"
  3986            }
  3987          ]
  3988        }
  3989      },
  3990      "gen4-plan": {
  3991        "QueryType": "SELECT",
  3992        "Original": "select user.id * user_id as amount from user, user_extra",
  3993        "Instructions": {
  3994          "OperatorType": "Join",
  3995          "Variant": "Join",
  3996          "JoinColumnIndexes": "R:0",
  3997          "JoinVars": {
  3998            "user_id": 0
  3999          },
  4000          "TableName": "`user`_user_extra",
  4001          "Inputs": [
  4002            {
  4003              "OperatorType": "Route",
  4004              "Variant": "Scatter",
  4005              "Keyspace": {
  4006                "Name": "user",
  4007                "Sharded": true
  4008              },
  4009              "FieldQuery": "select `user`.id from `user` where 1 != 1",
  4010              "Query": "select `user`.id from `user`",
  4011              "Table": "`user`"
  4012            },
  4013            {
  4014              "OperatorType": "Route",
  4015              "Variant": "Scatter",
  4016              "Keyspace": {
  4017                "Name": "user",
  4018                "Sharded": true
  4019              },
  4020              "FieldQuery": "select :user_id * user_id as amount from user_extra where 1 != 1",
  4021              "Query": "select :user_id * user_id as amount from user_extra",
  4022              "Table": "user_extra"
  4023            }
  4024          ]
  4025        },
  4026        "TablesUsed": [
  4027          "user.user",
  4028          "user.user_extra"
  4029        ]
  4030      }
  4031    },
  4032    {
  4033      "comment": "correlated subquery in exists clause",
  4034      "query": "select col from user where exists(select user_id from user_extra where user_id = 3 and user_id < user.id)",
  4035      "v3-plan": "VT12001: unsupported: cross-shard correlated subquery",
  4036      "gen4-plan": {
  4037        "QueryType": "SELECT",
  4038        "Original": "select col from user where exists(select user_id from user_extra where user_id = 3 and user_id < user.id)",
  4039        "Instructions": {
  4040          "OperatorType": "SemiJoin",
  4041          "JoinVars": {
  4042            "user_id": 0
  4043          },
  4044          "ProjectedIndexes": "-2",
  4045          "TableName": "`user`_user_extra",
  4046          "Inputs": [
  4047            {
  4048              "OperatorType": "Route",
  4049              "Variant": "Scatter",
  4050              "Keyspace": {
  4051                "Name": "user",
  4052                "Sharded": true
  4053              },
  4054              "FieldQuery": "select `user`.id, col from `user` where 1 != 1",
  4055              "Query": "select `user`.id, col from `user`",
  4056              "Table": "`user`"
  4057            },
  4058            {
  4059              "OperatorType": "Route",
  4060              "Variant": "EqualUnique",
  4061              "Keyspace": {
  4062                "Name": "user",
  4063                "Sharded": true
  4064              },
  4065              "FieldQuery": "select 1 from user_extra where 1 != 1",
  4066              "Query": "select 1 from user_extra where user_id = 3 and user_id < :user_id",
  4067              "Table": "user_extra",
  4068              "Values": [
  4069                "INT64(3)"
  4070              ],
  4071              "Vindex": "user_index"
  4072            }
  4073          ]
  4074        },
  4075        "TablesUsed": [
  4076          "user.user",
  4077          "user.user_extra"
  4078        ]
  4079      }
  4080    },
  4081    {
  4082      "comment": "correlated subquery in exists clause with an order by",
  4083      "query": "select col from user where exists(select user_id from user_extra where user_id = 3 and user_id < user.id) order by col",
  4084      "v3-plan": "VT12001: unsupported: cross-shard correlated subquery",
  4085      "gen4-plan": {
  4086        "QueryType": "SELECT",
  4087        "Original": "select col from user where exists(select user_id from user_extra where user_id = 3 and user_id < user.id) order by col",
  4088        "Instructions": {
  4089          "OperatorType": "SemiJoin",
  4090          "JoinVars": {
  4091            "user_id": 0
  4092          },
  4093          "ProjectedIndexes": "-2",
  4094          "TableName": "`user`_user_extra",
  4095          "Inputs": [
  4096            {
  4097              "OperatorType": "Route",
  4098              "Variant": "Scatter",
  4099              "Keyspace": {
  4100                "Name": "user",
  4101                "Sharded": true
  4102              },
  4103              "FieldQuery": "select `user`.id, col from `user` where 1 != 1",
  4104              "OrderBy": "1 ASC",
  4105              "Query": "select `user`.id, col from `user` order by col asc",
  4106              "Table": "`user`"
  4107            },
  4108            {
  4109              "OperatorType": "Route",
  4110              "Variant": "EqualUnique",
  4111              "Keyspace": {
  4112                "Name": "user",
  4113                "Sharded": true
  4114              },
  4115              "FieldQuery": "select 1 from user_extra where 1 != 1",
  4116              "Query": "select 1 from user_extra where user_id = 3 and user_id < :user_id",
  4117              "Table": "user_extra",
  4118              "Values": [
  4119                "INT64(3)"
  4120              ],
  4121              "Vindex": "user_index"
  4122            }
  4123          ]
  4124        },
  4125        "TablesUsed": [
  4126          "user.user",
  4127          "user.user_extra"
  4128        ]
  4129      }
  4130    },
  4131    {
  4132      "comment": "correlated subquery having dependencies on two tables",
  4133      "query": "select 1 from user u1, user u2 where exists (select 1 from user_extra ue where ue.col = u1.col and ue.col = u2.col)",
  4134      "v3-plan": "VT12001: unsupported: cross-shard correlated subquery",
  4135      "gen4-plan": {
  4136        "QueryType": "SELECT",
  4137        "Original": "select 1 from user u1, user u2 where exists (select 1 from user_extra ue where ue.col = u1.col and ue.col = u2.col)",
  4138        "Instructions": {
  4139          "OperatorType": "SemiJoin",
  4140          "JoinVars": {
  4141            "u1_col": 0,
  4142            "u2_col": 1
  4143          },
  4144          "ProjectedIndexes": "-3",
  4145          "TableName": "`user`_`user`_user_extra",
  4146          "Inputs": [
  4147            {
  4148              "OperatorType": "Join",
  4149              "Variant": "Join",
  4150              "JoinColumnIndexes": "L:0,R:0,L:1",
  4151              "TableName": "`user`_`user`",
  4152              "Inputs": [
  4153                {
  4154                  "OperatorType": "Route",
  4155                  "Variant": "Scatter",
  4156                  "Keyspace": {
  4157                    "Name": "user",
  4158                    "Sharded": true
  4159                  },
  4160                  "FieldQuery": "select u1.col, 1 from `user` as u1 where 1 != 1",
  4161                  "Query": "select u1.col, 1 from `user` as u1",
  4162                  "Table": "`user`"
  4163                },
  4164                {
  4165                  "OperatorType": "Route",
  4166                  "Variant": "Scatter",
  4167                  "Keyspace": {
  4168                    "Name": "user",
  4169                    "Sharded": true
  4170                  },
  4171                  "FieldQuery": "select u2.col from `user` as u2 where 1 != 1",
  4172                  "Query": "select u2.col from `user` as u2",
  4173                  "Table": "`user`"
  4174                }
  4175              ]
  4176            },
  4177            {
  4178              "OperatorType": "Route",
  4179              "Variant": "Scatter",
  4180              "Keyspace": {
  4181                "Name": "user",
  4182                "Sharded": true
  4183              },
  4184              "FieldQuery": "select 1 from user_extra as ue where 1 != 1",
  4185              "Query": "select 1 from user_extra as ue where ue.col = :u1_col and ue.col = :u2_col",
  4186              "Table": "user_extra"
  4187            }
  4188          ]
  4189        },
  4190        "TablesUsed": [
  4191          "user.user",
  4192          "user.user_extra"
  4193        ]
  4194      }
  4195    },
  4196    {
  4197      "comment": "correlated subquery using a column twice",
  4198      "query": "select 1 from user u where exists (select 1 from user_extra ue where ue.col = u.col and u.col = ue.col2)",
  4199      "v3-plan": "VT12001: unsupported: cross-shard correlated subquery",
  4200      "gen4-plan": {
  4201        "QueryType": "SELECT",
  4202        "Original": "select 1 from user u where exists (select 1 from user_extra ue where ue.col = u.col and u.col = ue.col2)",
  4203        "Instructions": {
  4204          "OperatorType": "SemiJoin",
  4205          "JoinVars": {
  4206            "u_col": 0
  4207          },
  4208          "ProjectedIndexes": "-2",
  4209          "TableName": "`user`_user_extra",
  4210          "Inputs": [
  4211            {
  4212              "OperatorType": "Route",
  4213              "Variant": "Scatter",
  4214              "Keyspace": {
  4215                "Name": "user",
  4216                "Sharded": true
  4217              },
  4218              "FieldQuery": "select u.col, 1 from `user` as u where 1 != 1",
  4219              "Query": "select u.col, 1 from `user` as u",
  4220              "Table": "`user`"
  4221            },
  4222            {
  4223              "OperatorType": "Route",
  4224              "Variant": "Scatter",
  4225              "Keyspace": {
  4226                "Name": "user",
  4227                "Sharded": true
  4228              },
  4229              "FieldQuery": "select 1 from user_extra as ue where 1 != 1",
  4230              "Query": "select 1 from user_extra as ue where ue.col = :u_col and ue.col2 = :u_col",
  4231              "Table": "user_extra"
  4232            }
  4233          ]
  4234        },
  4235        "TablesUsed": [
  4236          "user.user",
  4237          "user.user_extra"
  4238        ]
  4239      }
  4240    },
  4241    {
  4242      "comment": "correlated subquery part of an OR clause",
  4243      "query": "select 1 from user u where u.col = 6 or exists (select 1 from user_extra ue where ue.col = u.col and u.col = ue.col2)",
  4244      "v3-plan": "VT12001: unsupported: cross-shard correlated subquery",
  4245      "gen4-plan": "VT12001: unsupported: EXISTS sub-queries are only supported with AND clause"
  4246    },
  4247    {
  4248      "comment": "correlated subquery that is dependent on one side of a join, fully mergeable",
  4249      "query": "SELECT music.id FROM music INNER JOIN user ON music.user_id = user.id WHERE music.user_id = 5 AND music.id = (SELECT MAX(m2.id) FROM music m2 WHERE m2.user_id = user.id)",
  4250      "v3-plan": {
  4251        "QueryType": "SELECT",
  4252        "Original": "SELECT music.id FROM music INNER JOIN user ON music.user_id = user.id WHERE music.user_id = 5 AND music.id = (SELECT MAX(m2.id) FROM music m2 WHERE m2.user_id = user.id)",
  4253        "Instructions": {
  4254          "OperatorType": "Route",
  4255          "Variant": "EqualUnique",
  4256          "Keyspace": {
  4257            "Name": "user",
  4258            "Sharded": true
  4259          },
  4260          "FieldQuery": "select music.id from music join `user` on music.user_id = `user`.id where 1 != 1",
  4261          "Query": "select music.id from music join `user` on music.user_id = `user`.id where music.user_id = 5 and music.id = (select max(m2.id) from music as m2 where m2.user_id = `user`.id)",
  4262          "Table": "music, `user`",
  4263          "Values": [
  4264            "INT64(5)"
  4265          ],
  4266          "Vindex": "user_index"
  4267        }
  4268      },
  4269      "gen4-plan": {
  4270        "QueryType": "SELECT",
  4271        "Original": "SELECT music.id FROM music INNER JOIN user ON music.user_id = user.id WHERE music.user_id = 5 AND music.id = (SELECT MAX(m2.id) FROM music m2 WHERE m2.user_id = user.id)",
  4272        "Instructions": {
  4273          "OperatorType": "Route",
  4274          "Variant": "EqualUnique",
  4275          "Keyspace": {
  4276            "Name": "user",
  4277            "Sharded": true
  4278          },
  4279          "FieldQuery": "select music.id from music, `user` where 1 != 1",
  4280          "Query": "select music.id from music, `user` where music.user_id = 5 and music.id = (select max(m2.id) from music as m2 where m2.user_id = `user`.id) and music.user_id = `user`.id",
  4281          "Table": "`user`, music",
  4282          "Values": [
  4283            "INT64(5)"
  4284          ],
  4285          "Vindex": "user_index"
  4286        },
  4287        "TablesUsed": [
  4288          "user.music",
  4289          "user.user"
  4290        ]
  4291      }
  4292    },
  4293    {
  4294      "comment": "union as a derived table",
  4295      "query": "select found from (select id as found from user union all (select id from unsharded)) as t",
  4296      "v3-plan": {
  4297        "QueryType": "SELECT",
  4298        "Original": "select found from (select id as found from user union all (select id from unsharded)) as t",
  4299        "Instructions": {
  4300          "OperatorType": "SimpleProjection",
  4301          "Columns": [
  4302            0
  4303          ],
  4304          "Inputs": [
  4305            {
  4306              "OperatorType": "Concatenate",
  4307              "Inputs": [
  4308                {
  4309                  "OperatorType": "Route",
  4310                  "Variant": "Scatter",
  4311                  "Keyspace": {
  4312                    "Name": "user",
  4313                    "Sharded": true
  4314                  },
  4315                  "FieldQuery": "select id as found from `user` where 1 != 1",
  4316                  "Query": "select id as found from `user`",
  4317                  "Table": "`user`"
  4318                },
  4319                {
  4320                  "OperatorType": "Route",
  4321                  "Variant": "Unsharded",
  4322                  "Keyspace": {
  4323                    "Name": "main",
  4324                    "Sharded": false
  4325                  },
  4326                  "FieldQuery": "select id from unsharded where 1 != 1",
  4327                  "Query": "select id from unsharded",
  4328                  "Table": "unsharded"
  4329                }
  4330              ]
  4331            }
  4332          ]
  4333        }
  4334      },
  4335      "gen4-plan": {
  4336        "QueryType": "SELECT",
  4337        "Original": "select found from (select id as found from user union all (select id from unsharded)) as t",
  4338        "Instructions": {
  4339          "OperatorType": "SimpleProjection",
  4340          "Columns": [
  4341            0
  4342          ],
  4343          "Inputs": [
  4344            {
  4345              "OperatorType": "Concatenate",
  4346              "Inputs": [
  4347                {
  4348                  "OperatorType": "Route",
  4349                  "Variant": "Scatter",
  4350                  "Keyspace": {
  4351                    "Name": "user",
  4352                    "Sharded": true
  4353                  },
  4354                  "FieldQuery": "select id as found from `user` where 1 != 1",
  4355                  "Query": "select id as found from `user`",
  4356                  "Table": "`user`"
  4357                },
  4358                {
  4359                  "OperatorType": "Route",
  4360                  "Variant": "Unsharded",
  4361                  "Keyspace": {
  4362                    "Name": "main",
  4363                    "Sharded": false
  4364                  },
  4365                  "FieldQuery": "select id from unsharded where 1 != 1",
  4366                  "Query": "select id from unsharded",
  4367                  "Table": "unsharded"
  4368                }
  4369              ]
  4370            }
  4371          ]
  4372        },
  4373        "TablesUsed": [
  4374          "main.unsharded",
  4375          "user.user"
  4376        ]
  4377      }
  4378    },
  4379    {
  4380      "comment": "use output column containing data from both sides of the join",
  4381      "query": "select user_extra.col + user.col from user join user_extra on user.id = user_extra.id",
  4382      "v3-plan": {
  4383        "QueryType": "SELECT",
  4384        "Original": "select user_extra.col + user.col from user join user_extra on user.id = user_extra.id",
  4385        "Instructions": {
  4386          "OperatorType": "Join",
  4387          "Variant": "Join",
  4388          "JoinColumnIndexes": "R:0",
  4389          "JoinVars": {
  4390            "user_col": 0,
  4391            "user_id": 1
  4392          },
  4393          "TableName": "`user`_user_extra",
  4394          "Inputs": [
  4395            {
  4396              "OperatorType": "Route",
  4397              "Variant": "Scatter",
  4398              "Keyspace": {
  4399                "Name": "user",
  4400                "Sharded": true
  4401              },
  4402              "FieldQuery": "select `user`.col, `user`.id from `user` where 1 != 1",
  4403              "Query": "select `user`.col, `user`.id from `user`",
  4404              "Table": "`user`"
  4405            },
  4406            {
  4407              "OperatorType": "Route",
  4408              "Variant": "Scatter",
  4409              "Keyspace": {
  4410                "Name": "user",
  4411                "Sharded": true
  4412              },
  4413              "FieldQuery": "select user_extra.col + :user_col from user_extra where 1 != 1",
  4414              "Query": "select user_extra.col + :user_col from user_extra where user_extra.id = :user_id",
  4415              "Table": "user_extra"
  4416            }
  4417          ]
  4418        }
  4419      },
  4420      "gen4-plan": {
  4421        "QueryType": "SELECT",
  4422        "Original": "select user_extra.col + user.col from user join user_extra on user.id = user_extra.id",
  4423        "Instructions": {
  4424          "OperatorType": "Join",
  4425          "Variant": "Join",
  4426          "JoinColumnIndexes": "R:0",
  4427          "JoinVars": {
  4428            "user_extra_col": 1,
  4429            "user_extra_id": 0
  4430          },
  4431          "TableName": "user_extra_`user`",
  4432          "Inputs": [
  4433            {
  4434              "OperatorType": "Route",
  4435              "Variant": "Scatter",
  4436              "Keyspace": {
  4437                "Name": "user",
  4438                "Sharded": true
  4439              },
  4440              "FieldQuery": "select user_extra.id, user_extra.col from user_extra where 1 != 1",
  4441              "Query": "select user_extra.id, user_extra.col from user_extra",
  4442              "Table": "user_extra"
  4443            },
  4444            {
  4445              "OperatorType": "Route",
  4446              "Variant": "EqualUnique",
  4447              "Keyspace": {
  4448                "Name": "user",
  4449                "Sharded": true
  4450              },
  4451              "FieldQuery": "select :user_extra_col + `user`.col from `user` where 1 != 1",
  4452              "Query": "select :user_extra_col + `user`.col from `user` where `user`.id = :user_extra_id",
  4453              "Table": "`user`",
  4454              "Values": [
  4455                ":user_extra_id"
  4456              ],
  4457              "Vindex": "user_index"
  4458            }
  4459          ]
  4460        },
  4461        "TablesUsed": [
  4462          "user.user",
  4463          "user.user_extra"
  4464        ]
  4465      }
  4466    },
  4467    {
  4468      "comment": "mergeable derived table with order by and limit",
  4469      "query": "select 1 from (select col from main.unsharded order by main.unsharded.col1 desc limit 12 offset 0) as f left join unsharded as u on f.col = u.id",
  4470      "plan": {
  4471        "QueryType": "SELECT",
  4472        "Original": "select 1 from (select col from main.unsharded order by main.unsharded.col1 desc limit 12 offset 0) as f left join unsharded as u on f.col = u.id",
  4473        "Instructions": {
  4474          "OperatorType": "Route",
  4475          "Variant": "Unsharded",
  4476          "Keyspace": {
  4477            "Name": "main",
  4478            "Sharded": false
  4479          },
  4480          "FieldQuery": "select 1 from (select col from unsharded where 1 != 1) as f left join unsharded as u on f.col = u.id where 1 != 1",
  4481          "Query": "select 1 from (select col from unsharded order by unsharded.col1 desc limit 0, 12) as f left join unsharded as u on f.col = u.id",
  4482          "Table": "unsharded"
  4483        },
  4484        "TablesUsed": [
  4485          "main.unsharded"
  4486        ]
  4487      }
  4488    },
  4489    {
  4490      "comment": "mergeable derived table with group by and limit",
  4491      "query": "select 1 from (select col, count(*) as a from main.unsharded group by col having a > 0 limit 12 offset 0) as f left join unsharded as u on f.col = u.id",
  4492      "plan": {
  4493        "QueryType": "SELECT",
  4494        "Original": "select 1 from (select col, count(*) as a from main.unsharded group by col having a > 0 limit 12 offset 0) as f left join unsharded as u on f.col = u.id",
  4495        "Instructions": {
  4496          "OperatorType": "Route",
  4497          "Variant": "Unsharded",
  4498          "Keyspace": {
  4499            "Name": "main",
  4500            "Sharded": false
  4501          },
  4502          "FieldQuery": "select 1 from (select col, count(*) as a from unsharded where 1 != 1 group by col) as f left join unsharded as u on f.col = u.id where 1 != 1",
  4503          "Query": "select 1 from (select col, count(*) as a from unsharded group by col having count(*) > 0 limit 0, 12) as f left join unsharded as u on f.col = u.id",
  4504          "Table": "unsharded"
  4505        },
  4506        "TablesUsed": [
  4507          "main.unsharded"
  4508        ]
  4509      }
  4510    },
  4511    {
  4512      "comment": "select user.id, trim(leading 'x' from user.name) from user",
  4513      "query": "select user.id, trim(leading 'x' from user.name) from user",
  4514      "v3-plan": {
  4515        "QueryType": "SELECT",
  4516        "Original": "select user.id, trim(leading 'x' from user.name) from user",
  4517        "Instructions": {
  4518          "OperatorType": "Route",
  4519          "Variant": "Scatter",
  4520          "Keyspace": {
  4521            "Name": "user",
  4522            "Sharded": true
  4523          },
  4524          "FieldQuery": "select `user`.id, trim(leading 'x' from `user`.`name`) from `user` where 1 != 1",
  4525          "Query": "select `user`.id, trim(leading 'x' from `user`.`name`) from `user`",
  4526          "Table": "`user`"
  4527        }
  4528      },
  4529      "gen4-plan": {
  4530        "QueryType": "SELECT",
  4531        "Original": "select user.id, trim(leading 'x' from user.name) from user",
  4532        "Instructions": {
  4533          "OperatorType": "Route",
  4534          "Variant": "Scatter",
  4535          "Keyspace": {
  4536            "Name": "user",
  4537            "Sharded": true
  4538          },
  4539          "FieldQuery": "select `user`.id, trim(leading 'x' from `user`.`name`) from `user` where 1 != 1",
  4540          "Query": "select `user`.id, trim(leading 'x' from `user`.`name`) from `user`",
  4541          "Table": "`user`"
  4542        },
  4543        "TablesUsed": [
  4544          "user.user"
  4545        ]
  4546      }
  4547    },
  4548    {
  4549      "comment": "json utility functions",
  4550      "query": "select jcol, JSON_STORAGE_SIZE(jcol), JSON_STORAGE_FREE(jcol), JSON_PRETTY(jcol) from user",
  4551      "v3-plan": {
  4552        "QueryType": "SELECT",
  4553        "Original": "select jcol, JSON_STORAGE_SIZE(jcol), JSON_STORAGE_FREE(jcol), JSON_PRETTY(jcol) from user",
  4554        "Instructions": {
  4555          "OperatorType": "Route",
  4556          "Variant": "Scatter",
  4557          "Keyspace": {
  4558            "Name": "user",
  4559            "Sharded": true
  4560          },
  4561          "FieldQuery": "select jcol, json_storage_size(jcol), json_storage_free(jcol), json_pretty(jcol) from `user` where 1 != 1",
  4562          "Query": "select jcol, json_storage_size(jcol), json_storage_free(jcol), json_pretty(jcol) from `user`",
  4563          "Table": "`user`"
  4564        }
  4565      },
  4566      "gen4-plan": {
  4567        "QueryType": "SELECT",
  4568        "Original": "select jcol, JSON_STORAGE_SIZE(jcol), JSON_STORAGE_FREE(jcol), JSON_PRETTY(jcol) from user",
  4569        "Instructions": {
  4570          "OperatorType": "Route",
  4571          "Variant": "Scatter",
  4572          "Keyspace": {
  4573            "Name": "user",
  4574            "Sharded": true
  4575          },
  4576          "FieldQuery": "select jcol, json_storage_size(jcol), json_storage_free(jcol), json_pretty(jcol) from `user` where 1 != 1",
  4577          "Query": "select jcol, json_storage_size(jcol), json_storage_free(jcol), json_pretty(jcol) from `user`",
  4578          "Table": "`user`"
  4579        },
  4580        "TablesUsed": [
  4581          "user.user"
  4582        ]
  4583      }
  4584    },
  4585    {
  4586      "comment": "dual query with exists clause",
  4587      "query": "select 1 from dual where exists (select 1 from information_schema.TABLES where information_schema.TABLES.TABLE_NAME = 'proc' and information_schema.TABLES.TABLE_SCHEMA = 'mysql')",
  4588      "v3-plan": {
  4589        "QueryType": "SELECT",
  4590        "Original": "select 1 from dual where exists (select 1 from information_schema.TABLES where information_schema.TABLES.TABLE_NAME = 'proc' and information_schema.TABLES.TABLE_SCHEMA = 'mysql')",
  4591        "Instructions": {
  4592          "OperatorType": "Route",
  4593          "Variant": "DBA",
  4594          "Keyspace": {
  4595            "Name": "main",
  4596            "Sharded": false
  4597          },
  4598          "FieldQuery": "select 1 from dual where 1 != 1",
  4599          "Query": "select 1 from dual where exists (select 1 from information_schema.`TABLES` where information_schema.`TABLES`.TABLE_NAME = :TABLES_TABLE_NAME and information_schema.`TABLES`.TABLE_SCHEMA = :__vtschemaname limit 1)",
  4600          "SysTableTableName": "[TABLES_TABLE_NAME:VARCHAR(\"proc\")]",
  4601          "SysTableTableSchema": "[VARCHAR(\"mysql\")]",
  4602          "Table": "dual"
  4603        }
  4604      },
  4605      "gen4-plan": {
  4606        "QueryType": "SELECT",
  4607        "Original": "select 1 from dual where exists (select 1 from information_schema.TABLES where information_schema.TABLES.TABLE_NAME = 'proc' and information_schema.TABLES.TABLE_SCHEMA = 'mysql')",
  4608        "Instructions": {
  4609          "OperatorType": "Route",
  4610          "Variant": "DBA",
  4611          "Keyspace": {
  4612            "Name": "main",
  4613            "Sharded": false
  4614          },
  4615          "FieldQuery": "select 1 from dual where 1 != 1",
  4616          "Query": "select 1 from dual where exists (select 1 from information_schema.`TABLES` where `TABLES`.TABLE_NAME = :TABLES_TABLE_NAME and `TABLES`.TABLE_SCHEMA = :__vtschemaname limit 1)",
  4617          "SysTableTableName": "[TABLES_TABLE_NAME:VARCHAR(\"proc\")]",
  4618          "SysTableTableSchema": "[VARCHAR(\"mysql\")]",
  4619          "Table": "dual"
  4620        },
  4621        "TablesUsed": [
  4622          "main.dual"
  4623        ]
  4624      }
  4625    },
  4626    {
  4627      "comment": "json_quote, json_object and json_array",
  4628      "query": "SELECT JSON_QUOTE('null'), JSON_QUOTE('\"null\"'), JSON_OBJECT(BIN(1),2,'abc',ASCII(4)), JSON_ARRAY(1, \"abc\", NULL, TRUE, CURTIME())",
  4629      "v3-plan": {
  4630        "QueryType": "SELECT",
  4631        "Original": "SELECT JSON_QUOTE('null'), JSON_QUOTE('\"null\"'), JSON_OBJECT(BIN(1),2,'abc',ASCII(4)), JSON_ARRAY(1, \"abc\", NULL, TRUE, CURTIME())",
  4632        "Instructions": {
  4633          "OperatorType": "Route",
  4634          "Variant": "Reference",
  4635          "Keyspace": {
  4636            "Name": "main",
  4637            "Sharded": false
  4638          },
  4639          "FieldQuery": "select json_quote('null'), json_quote('\\\"null\\\"'), json_object(BIN(1), 2, 'abc', ASCII(4)), json_array(1, 'abc', null, true, CURTIME()) from dual where 1 != 1",
  4640          "Query": "select json_quote('null'), json_quote('\\\"null\\\"'), json_object(BIN(1), 2, 'abc', ASCII(4)), json_array(1, 'abc', null, true, CURTIME()) from dual",
  4641          "Table": "dual"
  4642        }
  4643      },
  4644      "gen4-plan": {
  4645        "QueryType": "SELECT",
  4646        "Original": "SELECT JSON_QUOTE('null'), JSON_QUOTE('\"null\"'), JSON_OBJECT(BIN(1),2,'abc',ASCII(4)), JSON_ARRAY(1, \"abc\", NULL, TRUE, CURTIME())",
  4647        "Instructions": {
  4648          "OperatorType": "Route",
  4649          "Variant": "Reference",
  4650          "Keyspace": {
  4651            "Name": "main",
  4652            "Sharded": false
  4653          },
  4654          "FieldQuery": "select json_quote('null'), json_quote('\\\"null\\\"'), json_object(BIN(1), 2, 'abc', ASCII(4)), json_array(1, 'abc', null, true, CURTIME()) from dual where 1 != 1",
  4655          "Query": "select json_quote('null'), json_quote('\\\"null\\\"'), json_object(BIN(1), 2, 'abc', ASCII(4)), json_array(1, 'abc', null, true, CURTIME()) from dual",
  4656          "Table": "dual"
  4657        },
  4658        "TablesUsed": [
  4659          "main.dual"
  4660        ]
  4661      }
  4662    },
  4663    {
  4664      "comment": "select (select id from user order by id limit 1) from user_extra",
  4665      "query": "select (select id from user order by id limit 1) from user_extra",
  4666      "v3-plan": {
  4667        "QueryType": "SELECT",
  4668        "Original": "select (select id from user order by id limit 1) from user_extra",
  4669        "Instructions": {
  4670          "OperatorType": "Subquery",
  4671          "Variant": "PulloutValue",
  4672          "PulloutVars": [
  4673            "__sq_has_values1",
  4674            "__sq1"
  4675          ],
  4676          "Inputs": [
  4677            {
  4678              "OperatorType": "Limit",
  4679              "Count": "INT64(1)",
  4680              "Inputs": [
  4681                {
  4682                  "OperatorType": "Route",
  4683                  "Variant": "Scatter",
  4684                  "Keyspace": {
  4685                    "Name": "user",
  4686                    "Sharded": true
  4687                  },
  4688                  "FieldQuery": "select id, weight_string(id) from `user` where 1 != 1",
  4689                  "OrderBy": "(0|1) ASC",
  4690                  "Query": "select id, weight_string(id) from `user` order by id asc limit :__upper_limit",
  4691                  "ResultColumns": 1,
  4692                  "Table": "`user`"
  4693                }
  4694              ]
  4695            },
  4696            {
  4697              "OperatorType": "Route",
  4698              "Variant": "Scatter",
  4699              "Keyspace": {
  4700                "Name": "user",
  4701                "Sharded": true
  4702              },
  4703              "FieldQuery": "select :__sq1 from user_extra where 1 != 1",
  4704              "Query": "select :__sq1 from user_extra",
  4705              "Table": "user_extra"
  4706            }
  4707          ]
  4708        }
  4709      },
  4710      "gen4-plan": {
  4711        "QueryType": "SELECT",
  4712        "Original": "select (select id from user order by id limit 1) from user_extra",
  4713        "Instructions": {
  4714          "OperatorType": "Subquery",
  4715          "Variant": "PulloutValue",
  4716          "PulloutVars": [
  4717            "__sq1"
  4718          ],
  4719          "Inputs": [
  4720            {
  4721              "OperatorType": "Limit",
  4722              "Count": "INT64(1)",
  4723              "Inputs": [
  4724                {
  4725                  "OperatorType": "Route",
  4726                  "Variant": "Scatter",
  4727                  "Keyspace": {
  4728                    "Name": "user",
  4729                    "Sharded": true
  4730                  },
  4731                  "FieldQuery": "select id, weight_string(id) from `user` where 1 != 1",
  4732                  "OrderBy": "(0|1) ASC",
  4733                  "Query": "select id, weight_string(id) from `user` order by id asc limit :__upper_limit",
  4734                  "ResultColumns": 1,
  4735                  "Table": "`user`"
  4736                }
  4737              ]
  4738            },
  4739            {
  4740              "OperatorType": "Route",
  4741              "Variant": "Scatter",
  4742              "Keyspace": {
  4743                "Name": "user",
  4744                "Sharded": true
  4745              },
  4746              "FieldQuery": "select :__sq1 from user_extra where 1 != 1",
  4747              "Query": "select :__sq1 from user_extra",
  4748              "Table": "user_extra"
  4749            }
  4750          ]
  4751        },
  4752        "TablesUsed": [
  4753          "user.user",
  4754          "user.user_extra"
  4755        ]
  4756      }
  4757    },
  4758    {
  4759      "comment": "yeah, it does not make sense, but it's valid",
  4760      "query": "select exists(select 1) from user where id = 5",
  4761      "v3-plan": {
  4762        "QueryType": "SELECT",
  4763        "Original": "select exists(select 1) from user where id = 5",
  4764        "Instructions": {
  4765          "OperatorType": "Subquery",
  4766          "Variant": "PulloutExists",
  4767          "PulloutVars": [
  4768            "__sq_has_values1",
  4769            "__sq1"
  4770          ],
  4771          "Inputs": [
  4772            {
  4773              "OperatorType": "Route",
  4774              "Variant": "Reference",
  4775              "Keyspace": {
  4776                "Name": "main",
  4777                "Sharded": false
  4778              },
  4779              "FieldQuery": "select 1 from dual where 1 != 1",
  4780              "Query": "select 1 from dual limit 1",
  4781              "Table": "dual"
  4782            },
  4783            {
  4784              "OperatorType": "Route",
  4785              "Variant": "EqualUnique",
  4786              "Keyspace": {
  4787                "Name": "user",
  4788                "Sharded": true
  4789              },
  4790              "FieldQuery": "select :__sq_has_values1 from `user` where 1 != 1",
  4791              "Query": "select :__sq_has_values1 from `user` where id = 5",
  4792              "Table": "`user`",
  4793              "Values": [
  4794                "INT64(5)"
  4795              ],
  4796              "Vindex": "user_index"
  4797            }
  4798          ]
  4799        }
  4800      },
  4801      "gen4-plan": {
  4802        "QueryType": "SELECT",
  4803        "Original": "select exists(select 1) from user where id = 5",
  4804        "Instructions": {
  4805          "OperatorType": "Route",
  4806          "Variant": "EqualUnique",
  4807          "Keyspace": {
  4808            "Name": "user",
  4809            "Sharded": true
  4810          },
  4811          "FieldQuery": "select exists (select 1 from dual where 1 != 1) from `user` where 1 != 1",
  4812          "Query": "select exists (select 1 from dual limit 1) from `user` where id = 5",
  4813          "Table": "`user`",
  4814          "Values": [
  4815            "INT64(5)"
  4816          ],
  4817          "Vindex": "user_index"
  4818        },
  4819        "TablesUsed": [
  4820          "main.dual",
  4821          "user.user"
  4822        ]
  4823      }
  4824    },
  4825    {
  4826      "comment": "json schema validation functions",
  4827      "query": "SELECT JSON_SCHEMA_VALID('{\"type\":\"string\",\"pattern\":\"(\"}', '\"abc\"'), JSON_SCHEMA_VALIDATION_REPORT('{\"type\":\"string\",\"pattern\":\"(\"}', '\"abc\"')",
  4828      "v3-plan": {
  4829        "QueryType": "SELECT",
  4830        "Original": "SELECT JSON_SCHEMA_VALID('{\"type\":\"string\",\"pattern\":\"(\"}', '\"abc\"'), JSON_SCHEMA_VALIDATION_REPORT('{\"type\":\"string\",\"pattern\":\"(\"}', '\"abc\"')",
  4831        "Instructions": {
  4832          "OperatorType": "Route",
  4833          "Variant": "Reference",
  4834          "Keyspace": {
  4835            "Name": "main",
  4836            "Sharded": false
  4837          },
  4838          "FieldQuery": "select json_schema_valid('{\\\"type\\\":\\\"string\\\",\\\"pattern\\\":\\\"(\\\"}', '\\\"abc\\\"'), json_schema_validation_report('{\\\"type\\\":\\\"string\\\",\\\"pattern\\\":\\\"(\\\"}', '\\\"abc\\\"') from dual where 1 != 1",
  4839          "Query": "select json_schema_valid('{\\\"type\\\":\\\"string\\\",\\\"pattern\\\":\\\"(\\\"}', '\\\"abc\\\"'), json_schema_validation_report('{\\\"type\\\":\\\"string\\\",\\\"pattern\\\":\\\"(\\\"}', '\\\"abc\\\"') from dual",
  4840          "Table": "dual"
  4841        }
  4842      },
  4843      "gen4-plan": {
  4844        "QueryType": "SELECT",
  4845        "Original": "SELECT JSON_SCHEMA_VALID('{\"type\":\"string\",\"pattern\":\"(\"}', '\"abc\"'), JSON_SCHEMA_VALIDATION_REPORT('{\"type\":\"string\",\"pattern\":\"(\"}', '\"abc\"')",
  4846        "Instructions": {
  4847          "OperatorType": "Route",
  4848          "Variant": "Reference",
  4849          "Keyspace": {
  4850            "Name": "main",
  4851            "Sharded": false
  4852          },
  4853          "FieldQuery": "select json_schema_valid('{\\\"type\\\":\\\"string\\\",\\\"pattern\\\":\\\"(\\\"}', '\\\"abc\\\"'), json_schema_validation_report('{\\\"type\\\":\\\"string\\\",\\\"pattern\\\":\\\"(\\\"}', '\\\"abc\\\"') from dual where 1 != 1",
  4854          "Query": "select json_schema_valid('{\\\"type\\\":\\\"string\\\",\\\"pattern\\\":\\\"(\\\"}', '\\\"abc\\\"'), json_schema_validation_report('{\\\"type\\\":\\\"string\\\",\\\"pattern\\\":\\\"(\\\"}', '\\\"abc\\\"') from dual",
  4855          "Table": "dual"
  4856        },
  4857        "TablesUsed": [
  4858          "main.dual"
  4859        ]
  4860      }
  4861    },
  4862    {
  4863      "comment": "json search functions",
  4864      "query": "SELECT JSON_CONTAINS('{\"a\": 1, \"b\": 2, \"c\": {\"d\": 4}}', '1'), JSON_CONTAINS_PATH('{\"a\": 1, \"b\": 2, \"c\": {\"d\": 4}}', 'one', '$.a', '$.e'), JSON_EXTRACT('[10, 20, [30, 40]]', '$[1]'), JSON_UNQUOTE(JSON_EXTRACT('[\"a\",\"b\"]', '$[1]')), JSON_KEYS('{\"a\": 1, \"b\": {\"c\": 30}}'), JSON_OVERLAPS(\"[1,3,5,7]\", \"[2,5,7]\"), JSON_SEARCH('[\"abc\"]', 'one', 'abc'), JSON_VALUE('{\"fname\": \"Joe\", \"lname\": \"Palmer\"}', '$.fname'), JSON_ARRAY(4,5) MEMBER OF('[[3,4],[4,5]]')",
  4865      "v3-plan": {
  4866        "QueryType": "SELECT",
  4867        "Original": "SELECT JSON_CONTAINS('{\"a\": 1, \"b\": 2, \"c\": {\"d\": 4}}', '1'), JSON_CONTAINS_PATH('{\"a\": 1, \"b\": 2, \"c\": {\"d\": 4}}', 'one', '$.a', '$.e'), JSON_EXTRACT('[10, 20, [30, 40]]', '$[1]'), JSON_UNQUOTE(JSON_EXTRACT('[\"a\",\"b\"]', '$[1]')), JSON_KEYS('{\"a\": 1, \"b\": {\"c\": 30}}'), JSON_OVERLAPS(\"[1,3,5,7]\", \"[2,5,7]\"), JSON_SEARCH('[\"abc\"]', 'one', 'abc'), JSON_VALUE('{\"fname\": \"Joe\", \"lname\": \"Palmer\"}', '$.fname'), JSON_ARRAY(4,5) MEMBER OF('[[3,4],[4,5]]')",
  4868        "Instructions": {
  4869          "OperatorType": "Route",
  4870          "Variant": "Reference",
  4871          "Keyspace": {
  4872            "Name": "main",
  4873            "Sharded": false
  4874          },
  4875          "FieldQuery": "select json_contains('{\\\"a\\\": 1, \\\"b\\\": 2, \\\"c\\\": {\\\"d\\\": 4}}', '1'), json_contains_path('{\\\"a\\\": 1, \\\"b\\\": 2, \\\"c\\\": {\\\"d\\\": 4}}', 'one', '$.a', '$.e'), json_extract('[10, 20, [30, 40]]', '$[1]'), json_unquote(json_extract('[\\\"a\\\",\\\"b\\\"]', '$[1]')), json_keys('{\\\"a\\\": 1, \\\"b\\\": {\\\"c\\\": 30}}'), json_overlaps('[1,3,5,7]', '[2,5,7]'), json_search('[\\\"abc\\\"]', 'one', 'abc'), json_value('{\\\"fname\\\": \\\"Joe\\\", \\\"lname\\\": \\\"Palmer\\\"}', '$.fname'), json_array(4, 5) member of ('[[3,4],[4,5]]') from dual where 1 != 1",
  4876          "Query": "select json_contains('{\\\"a\\\": 1, \\\"b\\\": 2, \\\"c\\\": {\\\"d\\\": 4}}', '1'), json_contains_path('{\\\"a\\\": 1, \\\"b\\\": 2, \\\"c\\\": {\\\"d\\\": 4}}', 'one', '$.a', '$.e'), json_extract('[10, 20, [30, 40]]', '$[1]'), json_unquote(json_extract('[\\\"a\\\",\\\"b\\\"]', '$[1]')), json_keys('{\\\"a\\\": 1, \\\"b\\\": {\\\"c\\\": 30}}'), json_overlaps('[1,3,5,7]', '[2,5,7]'), json_search('[\\\"abc\\\"]', 'one', 'abc'), json_value('{\\\"fname\\\": \\\"Joe\\\", \\\"lname\\\": \\\"Palmer\\\"}', '$.fname'), json_array(4, 5) member of ('[[3,4],[4,5]]') from dual",
  4877          "Table": "dual"
  4878        }
  4879      },
  4880      "gen4-plan": {
  4881        "QueryType": "SELECT",
  4882        "Original": "SELECT JSON_CONTAINS('{\"a\": 1, \"b\": 2, \"c\": {\"d\": 4}}', '1'), JSON_CONTAINS_PATH('{\"a\": 1, \"b\": 2, \"c\": {\"d\": 4}}', 'one', '$.a', '$.e'), JSON_EXTRACT('[10, 20, [30, 40]]', '$[1]'), JSON_UNQUOTE(JSON_EXTRACT('[\"a\",\"b\"]', '$[1]')), JSON_KEYS('{\"a\": 1, \"b\": {\"c\": 30}}'), JSON_OVERLAPS(\"[1,3,5,7]\", \"[2,5,7]\"), JSON_SEARCH('[\"abc\"]', 'one', 'abc'), JSON_VALUE('{\"fname\": \"Joe\", \"lname\": \"Palmer\"}', '$.fname'), JSON_ARRAY(4,5) MEMBER OF('[[3,4],[4,5]]')",
  4883        "Instructions": {
  4884          "OperatorType": "Route",
  4885          "Variant": "Reference",
  4886          "Keyspace": {
  4887            "Name": "main",
  4888            "Sharded": false
  4889          },
  4890          "FieldQuery": "select json_contains('{\\\"a\\\": 1, \\\"b\\\": 2, \\\"c\\\": {\\\"d\\\": 4}}', '1'), json_contains_path('{\\\"a\\\": 1, \\\"b\\\": 2, \\\"c\\\": {\\\"d\\\": 4}}', 'one', '$.a', '$.e'), json_extract('[10, 20, [30, 40]]', '$[1]'), json_unquote(json_extract('[\\\"a\\\",\\\"b\\\"]', '$[1]')), json_keys('{\\\"a\\\": 1, \\\"b\\\": {\\\"c\\\": 30}}'), json_overlaps('[1,3,5,7]', '[2,5,7]'), json_search('[\\\"abc\\\"]', 'one', 'abc'), json_value('{\\\"fname\\\": \\\"Joe\\\", \\\"lname\\\": \\\"Palmer\\\"}', '$.fname'), json_array(4, 5) member of ('[[3,4],[4,5]]') from dual where 1 != 1",
  4891          "Query": "select json_contains('{\\\"a\\\": 1, \\\"b\\\": 2, \\\"c\\\": {\\\"d\\\": 4}}', '1'), json_contains_path('{\\\"a\\\": 1, \\\"b\\\": 2, \\\"c\\\": {\\\"d\\\": 4}}', 'one', '$.a', '$.e'), json_extract('[10, 20, [30, 40]]', '$[1]'), json_unquote(json_extract('[\\\"a\\\",\\\"b\\\"]', '$[1]')), json_keys('{\\\"a\\\": 1, \\\"b\\\": {\\\"c\\\": 30}}'), json_overlaps('[1,3,5,7]', '[2,5,7]'), json_search('[\\\"abc\\\"]', 'one', 'abc'), json_value('{\\\"fname\\\": \\\"Joe\\\", \\\"lname\\\": \\\"Palmer\\\"}', '$.fname'), json_array(4, 5) member of ('[[3,4],[4,5]]') from dual",
  4892          "Table": "dual"
  4893        },
  4894        "TablesUsed": [
  4895          "main.dual"
  4896        ]
  4897      }
  4898    },
  4899    {
  4900      "comment": "Json extract and json unquote shorthands",
  4901      "query": "SELECT a->\"$[4]\", a->>\"$[3]\" FROM user",
  4902      "v3-plan": {
  4903        "QueryType": "SELECT",
  4904        "Original": "SELECT a->\"$[4]\", a->>\"$[3]\" FROM user",
  4905        "Instructions": {
  4906          "OperatorType": "Route",
  4907          "Variant": "Scatter",
  4908          "Keyspace": {
  4909            "Name": "user",
  4910            "Sharded": true
  4911          },
  4912          "FieldQuery": "select a -> '$[4]', a ->> '$[3]' from `user` where 1 != 1",
  4913          "Query": "select a -> '$[4]', a ->> '$[3]' from `user`",
  4914          "Table": "`user`"
  4915        }
  4916      },
  4917      "gen4-plan": {
  4918        "QueryType": "SELECT",
  4919        "Original": "SELECT a->\"$[4]\", a->>\"$[3]\" FROM user",
  4920        "Instructions": {
  4921          "OperatorType": "Route",
  4922          "Variant": "Scatter",
  4923          "Keyspace": {
  4924            "Name": "user",
  4925            "Sharded": true
  4926          },
  4927          "FieldQuery": "select a -> '$[4]', a ->> '$[3]' from `user` where 1 != 1",
  4928          "Query": "select a -> '$[4]', a ->> '$[3]' from `user`",
  4929          "Table": "`user`"
  4930        },
  4931        "TablesUsed": [
  4932          "user.user"
  4933        ]
  4934      }
  4935    },
  4936    {
  4937      "comment": "groupe by with non aggregated columns and table alias",
  4938      "query": "select u.id, u.age from user u group by u.id",
  4939      "v3-plan": {
  4940        "QueryType": "SELECT",
  4941        "Original": "select u.id, u.age from user u group by u.id",
  4942        "Instructions": {
  4943          "OperatorType": "Route",
  4944          "Variant": "Scatter",
  4945          "Keyspace": {
  4946            "Name": "user",
  4947            "Sharded": true
  4948          },
  4949          "FieldQuery": "select u.id, u.age from `user` as u where 1 != 1 group by u.id",
  4950          "Query": "select u.id, u.age from `user` as u group by u.id",
  4951          "Table": "`user`"
  4952        }
  4953      },
  4954      "gen4-plan": {
  4955        "QueryType": "SELECT",
  4956        "Original": "select u.id, u.age from user u group by u.id",
  4957        "Instructions": {
  4958          "OperatorType": "Route",
  4959          "Variant": "Scatter",
  4960          "Keyspace": {
  4961            "Name": "user",
  4962            "Sharded": true
  4963          },
  4964          "FieldQuery": "select u.id, u.age from `user` as u where 1 != 1 group by u.id",
  4965          "Query": "select u.id, u.age from `user` as u group by u.id",
  4966          "Table": "`user`"
  4967        },
  4968        "TablesUsed": [
  4969          "user.user"
  4970        ]
  4971      }
  4972    },
  4973    {
  4974      "comment": "Functions that return JSON value attributes",
  4975      "query": "select JSON_DEPTH('{}'), JSON_LENGTH('{\"a\": 1, \"b\": {\"c\": 30}}', '$.b'), JSON_TYPE(JSON_EXTRACT('{\"a\": [10, true]}', '$.a')), JSON_VALID('{\"a\": 1}')",
  4976      "v3-plan": {
  4977        "QueryType": "SELECT",
  4978        "Original": "select JSON_DEPTH('{}'), JSON_LENGTH('{\"a\": 1, \"b\": {\"c\": 30}}', '$.b'), JSON_TYPE(JSON_EXTRACT('{\"a\": [10, true]}', '$.a')), JSON_VALID('{\"a\": 1}')",
  4979        "Instructions": {
  4980          "OperatorType": "Route",
  4981          "Variant": "Reference",
  4982          "Keyspace": {
  4983            "Name": "main",
  4984            "Sharded": false
  4985          },
  4986          "FieldQuery": "select json_depth('{}'), json_length('{\\\"a\\\": 1, \\\"b\\\": {\\\"c\\\": 30}}', '$.b'), json_type(json_extract('{\\\"a\\\": [10, true]}', '$.a')), json_valid('{\\\"a\\\": 1}') from dual where 1 != 1",
  4987          "Query": "select json_depth('{}'), json_length('{\\\"a\\\": 1, \\\"b\\\": {\\\"c\\\": 30}}', '$.b'), json_type(json_extract('{\\\"a\\\": [10, true]}', '$.a')), json_valid('{\\\"a\\\": 1}') from dual",
  4988          "Table": "dual"
  4989        }
  4990      },
  4991      "gen4-plan": {
  4992        "QueryType": "SELECT",
  4993        "Original": "select JSON_DEPTH('{}'), JSON_LENGTH('{\"a\": 1, \"b\": {\"c\": 30}}', '$.b'), JSON_TYPE(JSON_EXTRACT('{\"a\": [10, true]}', '$.a')), JSON_VALID('{\"a\": 1}')",
  4994        "Instructions": {
  4995          "OperatorType": "Route",
  4996          "Variant": "Reference",
  4997          "Keyspace": {
  4998            "Name": "main",
  4999            "Sharded": false
  5000          },
  5001          "FieldQuery": "select json_depth('{}'), json_length('{\\\"a\\\": 1, \\\"b\\\": {\\\"c\\\": 30}}', '$.b'), json_type(json_extract('{\\\"a\\\": [10, true]}', '$.a')), json_valid('{\\\"a\\\": 1}') from dual where 1 != 1",
  5002          "Query": "select json_depth('{}'), json_length('{\\\"a\\\": 1, \\\"b\\\": {\\\"c\\\": 30}}', '$.b'), json_type(json_extract('{\\\"a\\\": [10, true]}', '$.a')), json_valid('{\\\"a\\\": 1}') from dual",
  5003          "Table": "dual"
  5004        },
  5005        "TablesUsed": [
  5006          "main.dual"
  5007        ]
  5008      }
  5009    },
  5010    {
  5011      "comment": "Json array functions",
  5012      "query": "select JSON_ARRAY_APPEND('{\"a\": 1}', '$', 'z'), JSON_ARRAY_INSERT('[\"a\", {\"b\": [1, 2]}, [3, 4]]', '$[0]', 'x', '$[2][1]', 'y'), JSON_INSERT('{ \"a\": 1, \"b\": [2, 3]}', '$.a', 10, '$.c', CAST('[true, false]' AS JSON))",
  5013      "v3-plan": {
  5014        "QueryType": "SELECT",
  5015        "Original": "select JSON_ARRAY_APPEND('{\"a\": 1}', '$', 'z'), JSON_ARRAY_INSERT('[\"a\", {\"b\": [1, 2]}, [3, 4]]', '$[0]', 'x', '$[2][1]', 'y'), JSON_INSERT('{ \"a\": 1, \"b\": [2, 3]}', '$.a', 10, '$.c', CAST('[true, false]' AS JSON))",
  5016        "Instructions": {
  5017          "OperatorType": "Route",
  5018          "Variant": "Reference",
  5019          "Keyspace": {
  5020            "Name": "main",
  5021            "Sharded": false
  5022          },
  5023          "FieldQuery": "select json_array_append('{\\\"a\\\": 1}', '$', 'z'), json_array_insert('[\\\"a\\\", {\\\"b\\\": [1, 2]}, [3, 4]]', '$[0]', 'x', '$[2][1]', 'y'), json_insert('{ \\\"a\\\": 1, \\\"b\\\": [2, 3]}', '$.a', 10, '$.c', cast('[true, false]' as JSON)) from dual where 1 != 1",
  5024          "Query": "select json_array_append('{\\\"a\\\": 1}', '$', 'z'), json_array_insert('[\\\"a\\\", {\\\"b\\\": [1, 2]}, [3, 4]]', '$[0]', 'x', '$[2][1]', 'y'), json_insert('{ \\\"a\\\": 1, \\\"b\\\": [2, 3]}', '$.a', 10, '$.c', cast('[true, false]' as JSON)) from dual",
  5025          "Table": "dual"
  5026        }
  5027      },
  5028      "gen4-plan": {
  5029        "QueryType": "SELECT",
  5030        "Original": "select JSON_ARRAY_APPEND('{\"a\": 1}', '$', 'z'), JSON_ARRAY_INSERT('[\"a\", {\"b\": [1, 2]}, [3, 4]]', '$[0]', 'x', '$[2][1]', 'y'), JSON_INSERT('{ \"a\": 1, \"b\": [2, 3]}', '$.a', 10, '$.c', CAST('[true, false]' AS JSON))",
  5031        "Instructions": {
  5032          "OperatorType": "Route",
  5033          "Variant": "Reference",
  5034          "Keyspace": {
  5035            "Name": "main",
  5036            "Sharded": false
  5037          },
  5038          "FieldQuery": "select json_array_append('{\\\"a\\\": 1}', '$', 'z'), json_array_insert('[\\\"a\\\", {\\\"b\\\": [1, 2]}, [3, 4]]', '$[0]', 'x', '$[2][1]', 'y'), json_insert('{ \\\"a\\\": 1, \\\"b\\\": [2, 3]}', '$.a', 10, '$.c', cast('[true, false]' as JSON)) from dual where 1 != 1",
  5039          "Query": "select json_array_append('{\\\"a\\\": 1}', '$', 'z'), json_array_insert('[\\\"a\\\", {\\\"b\\\": [1, 2]}, [3, 4]]', '$[0]', 'x', '$[2][1]', 'y'), json_insert('{ \\\"a\\\": 1, \\\"b\\\": [2, 3]}', '$.a', 10, '$.c', cast('[true, false]' as JSON)) from dual",
  5040          "Table": "dual"
  5041        },
  5042        "TablesUsed": [
  5043          "main.dual"
  5044        ]
  5045      }
  5046    },
  5047    {
  5048      "comment": "Json merge functions",
  5049      "query": "select JSON_MERGE('[1, 2]', '[true, false]'), JSON_MERGE_PATCH('{\"name\": \"x\"}', '{\"id\": 47}'), JSON_MERGE_PRESERVE('[1, 2]', '{\"id\": 47}')",
  5050      "v3-plan": {
  5051        "QueryType": "SELECT",
  5052        "Original": "select JSON_MERGE('[1, 2]', '[true, false]'), JSON_MERGE_PATCH('{\"name\": \"x\"}', '{\"id\": 47}'), JSON_MERGE_PRESERVE('[1, 2]', '{\"id\": 47}')",
  5053        "Instructions": {
  5054          "OperatorType": "Route",
  5055          "Variant": "Reference",
  5056          "Keyspace": {
  5057            "Name": "main",
  5058            "Sharded": false
  5059          },
  5060          "FieldQuery": "select json_merge('[1, 2]', '[true, false]'), json_merge_patch('{\\\"name\\\": \\\"x\\\"}', '{\\\"id\\\": 47}'), json_merge_preserve('[1, 2]', '{\\\"id\\\": 47}') from dual where 1 != 1",
  5061          "Query": "select json_merge('[1, 2]', '[true, false]'), json_merge_patch('{\\\"name\\\": \\\"x\\\"}', '{\\\"id\\\": 47}'), json_merge_preserve('[1, 2]', '{\\\"id\\\": 47}') from dual",
  5062          "Table": "dual"
  5063        }
  5064      },
  5065      "gen4-plan": {
  5066        "QueryType": "SELECT",
  5067        "Original": "select JSON_MERGE('[1, 2]', '[true, false]'), JSON_MERGE_PATCH('{\"name\": \"x\"}', '{\"id\": 47}'), JSON_MERGE_PRESERVE('[1, 2]', '{\"id\": 47}')",
  5068        "Instructions": {
  5069          "OperatorType": "Route",
  5070          "Variant": "Reference",
  5071          "Keyspace": {
  5072            "Name": "main",
  5073            "Sharded": false
  5074          },
  5075          "FieldQuery": "select json_merge('[1, 2]', '[true, false]'), json_merge_patch('{\\\"name\\\": \\\"x\\\"}', '{\\\"id\\\": 47}'), json_merge_preserve('[1, 2]', '{\\\"id\\\": 47}') from dual where 1 != 1",
  5076          "Query": "select json_merge('[1, 2]', '[true, false]'), json_merge_patch('{\\\"name\\\": \\\"x\\\"}', '{\\\"id\\\": 47}'), json_merge_preserve('[1, 2]', '{\\\"id\\\": 47}') from dual",
  5077          "Table": "dual"
  5078        },
  5079        "TablesUsed": [
  5080          "main.dual"
  5081        ]
  5082      }
  5083    },
  5084    {
  5085      "comment": "JSON modifier functions",
  5086      "query": "select JSON_REMOVE('[1, [2, 3], 4]', '$[1]'), JSON_REPLACE('{ \"a\": 1, \"b\": [2, 3]}', '$.a', 10, '$.c', '[true, false]'), JSON_SET('{ \"a\": 1, \"b\": [2, 3]}', '$.a', 10, '$.c', '[true, false]'), JSON_UNQUOTE('\"abc\"')",
  5087      "v3-plan": {
  5088        "QueryType": "SELECT",
  5089        "Original": "select JSON_REMOVE('[1, [2, 3], 4]', '$[1]'), JSON_REPLACE('{ \"a\": 1, \"b\": [2, 3]}', '$.a', 10, '$.c', '[true, false]'), JSON_SET('{ \"a\": 1, \"b\": [2, 3]}', '$.a', 10, '$.c', '[true, false]'), JSON_UNQUOTE('\"abc\"')",
  5090        "Instructions": {
  5091          "OperatorType": "Route",
  5092          "Variant": "Reference",
  5093          "Keyspace": {
  5094            "Name": "main",
  5095            "Sharded": false
  5096          },
  5097          "FieldQuery": "select json_remove('[1, [2, 3], 4]', '$[1]'), json_replace('{ \\\"a\\\": 1, \\\"b\\\": [2, 3]}', '$.a', 10, '$.c', '[true, false]'), json_set('{ \\\"a\\\": 1, \\\"b\\\": [2, 3]}', '$.a', 10, '$.c', '[true, false]'), json_unquote('\\\"abc\\\"') from dual where 1 != 1",
  5098          "Query": "select json_remove('[1, [2, 3], 4]', '$[1]'), json_replace('{ \\\"a\\\": 1, \\\"b\\\": [2, 3]}', '$.a', 10, '$.c', '[true, false]'), json_set('{ \\\"a\\\": 1, \\\"b\\\": [2, 3]}', '$.a', 10, '$.c', '[true, false]'), json_unquote('\\\"abc\\\"') from dual",
  5099          "Table": "dual"
  5100        }
  5101      },
  5102      "gen4-plan": {
  5103        "QueryType": "SELECT",
  5104        "Original": "select JSON_REMOVE('[1, [2, 3], 4]', '$[1]'), JSON_REPLACE('{ \"a\": 1, \"b\": [2, 3]}', '$.a', 10, '$.c', '[true, false]'), JSON_SET('{ \"a\": 1, \"b\": [2, 3]}', '$.a', 10, '$.c', '[true, false]'), JSON_UNQUOTE('\"abc\"')",
  5105        "Instructions": {
  5106          "OperatorType": "Route",
  5107          "Variant": "Reference",
  5108          "Keyspace": {
  5109            "Name": "main",
  5110            "Sharded": false
  5111          },
  5112          "FieldQuery": "select json_remove('[1, [2, 3], 4]', '$[1]'), json_replace('{ \\\"a\\\": 1, \\\"b\\\": [2, 3]}', '$.a', 10, '$.c', '[true, false]'), json_set('{ \\\"a\\\": 1, \\\"b\\\": [2, 3]}', '$.a', 10, '$.c', '[true, false]'), json_unquote('\\\"abc\\\"') from dual where 1 != 1",
  5113          "Query": "select json_remove('[1, [2, 3], 4]', '$[1]'), json_replace('{ \\\"a\\\": 1, \\\"b\\\": [2, 3]}', '$.a', 10, '$.c', '[true, false]'), json_set('{ \\\"a\\\": 1, \\\"b\\\": [2, 3]}', '$.a', 10, '$.c', '[true, false]'), json_unquote('\\\"abc\\\"') from dual",
  5114          "Table": "dual"
  5115        },
  5116        "TablesUsed": [
  5117          "main.dual"
  5118        ]
  5119      }
  5120    },
  5121    {
  5122      "comment": "Reference with a subquery which can be merged",
  5123      "query": "select exists(select id from user where id = 4)",
  5124      "v3-plan": {
  5125        "QueryType": "SELECT",
  5126        "Original": "select exists(select id from user where id = 4)",
  5127        "Instructions": {
  5128          "OperatorType": "Subquery",
  5129          "Variant": "PulloutExists",
  5130          "PulloutVars": [
  5131            "__sq_has_values1",
  5132            "__sq1"
  5133          ],
  5134          "Inputs": [
  5135            {
  5136              "OperatorType": "Route",
  5137              "Variant": "EqualUnique",
  5138              "Keyspace": {
  5139                "Name": "user",
  5140                "Sharded": true
  5141              },
  5142              "FieldQuery": "select 1 from `user` where 1 != 1",
  5143              "Query": "select 1 from `user` where id = 4 limit 1",
  5144              "Table": "`user`",
  5145              "Values": [
  5146                "INT64(4)"
  5147              ],
  5148              "Vindex": "user_index"
  5149            },
  5150            {
  5151              "OperatorType": "Route",
  5152              "Variant": "Reference",
  5153              "Keyspace": {
  5154                "Name": "main",
  5155                "Sharded": false
  5156              },
  5157              "FieldQuery": "select :__sq_has_values1 from dual where 1 != 1",
  5158              "Query": "select :__sq_has_values1 from dual",
  5159              "Table": "dual"
  5160            }
  5161          ]
  5162        }
  5163      },
  5164      "gen4-plan": {
  5165        "QueryType": "SELECT",
  5166        "Original": "select exists(select id from user where id = 4)",
  5167        "Instructions": {
  5168          "OperatorType": "Route",
  5169          "Variant": "EqualUnique",
  5170          "Keyspace": {
  5171            "Name": "user",
  5172            "Sharded": true
  5173          },
  5174          "FieldQuery": "select exists (select 1 from `user` where 1 != 1) from dual where 1 != 1",
  5175          "Query": "select exists (select 1 from `user` where id = 4 limit 1) from dual",
  5176          "Table": "dual",
  5177          "Values": [
  5178            "INT64(4)"
  5179          ],
  5180          "Vindex": "user_index"
  5181        },
  5182        "TablesUsed": [
  5183          "main.dual",
  5184          "user.user"
  5185        ]
  5186      }
  5187    },
  5188    {
  5189      "comment": "Reference with a subquery which cannot be merged",
  5190      "query": "select exists(select * from user)",
  5191      "v3-plan": {
  5192        "QueryType": "SELECT",
  5193        "Original": "select exists(select * from user)",
  5194        "Instructions": {
  5195          "OperatorType": "Subquery",
  5196          "Variant": "PulloutExists",
  5197          "PulloutVars": [
  5198            "__sq_has_values1",
  5199            "__sq1"
  5200          ],
  5201          "Inputs": [
  5202            {
  5203              "OperatorType": "Limit",
  5204              "Count": "INT64(1)",
  5205              "Inputs": [
  5206                {
  5207                  "OperatorType": "Route",
  5208                  "Variant": "Scatter",
  5209                  "Keyspace": {
  5210                    "Name": "user",
  5211                    "Sharded": true
  5212                  },
  5213                  "FieldQuery": "select 1 from `user` where 1 != 1",
  5214                  "Query": "select 1 from `user` limit :__upper_limit",
  5215                  "Table": "`user`"
  5216                }
  5217              ]
  5218            },
  5219            {
  5220              "OperatorType": "Route",
  5221              "Variant": "Reference",
  5222              "Keyspace": {
  5223                "Name": "main",
  5224                "Sharded": false
  5225              },
  5226              "FieldQuery": "select :__sq_has_values1 from dual where 1 != 1",
  5227              "Query": "select :__sq_has_values1 from dual",
  5228              "Table": "dual"
  5229            }
  5230          ]
  5231        }
  5232      },
  5233      "gen4-plan": {
  5234        "QueryType": "SELECT",
  5235        "Original": "select exists(select * from user)",
  5236        "Instructions": {
  5237          "OperatorType": "Subquery",
  5238          "Variant": "PulloutExists",
  5239          "PulloutVars": [
  5240            "__sq_has_values1"
  5241          ],
  5242          "Inputs": [
  5243            {
  5244              "OperatorType": "Limit",
  5245              "Count": "INT64(1)",
  5246              "Inputs": [
  5247                {
  5248                  "OperatorType": "Route",
  5249                  "Variant": "Scatter",
  5250                  "Keyspace": {
  5251                    "Name": "user",
  5252                    "Sharded": true
  5253                  },
  5254                  "FieldQuery": "select 1 from `user` where 1 != 1",
  5255                  "Query": "select 1 from `user` limit :__upper_limit",
  5256                  "Table": "`user`"
  5257                }
  5258              ]
  5259            },
  5260            {
  5261              "OperatorType": "Route",
  5262              "Variant": "Reference",
  5263              "Keyspace": {
  5264                "Name": "main",
  5265                "Sharded": false
  5266              },
  5267              "FieldQuery": "select :__sq_has_values1 from dual where 1 != 1",
  5268              "Query": "select :__sq_has_values1 from dual",
  5269              "Table": "dual"
  5270            }
  5271          ]
  5272        },
  5273        "TablesUsed": [
  5274          "main.dual",
  5275          "user.user"
  5276        ]
  5277      }
  5278    },
  5279    {
  5280      "comment": "insert function not requiring any table",
  5281      "query": "select insert('Quadratic', 3, 4, 'What')",
  5282      "v3-plan": {
  5283        "QueryType": "SELECT",
  5284        "Original": "select insert('Quadratic', 3, 4, 'What')",
  5285        "Instructions": {
  5286          "OperatorType": "Route",
  5287          "Variant": "Reference",
  5288          "Keyspace": {
  5289            "Name": "main",
  5290            "Sharded": false
  5291          },
  5292          "FieldQuery": "select insert('Quadratic', 3, 4, 'What') from dual where 1 != 1",
  5293          "Query": "select insert('Quadratic', 3, 4, 'What') from dual",
  5294          "Table": "dual"
  5295        }
  5296      },
  5297      "gen4-plan": {
  5298        "QueryType": "SELECT",
  5299        "Original": "select insert('Quadratic', 3, 4, 'What')",
  5300        "Instructions": {
  5301          "OperatorType": "Route",
  5302          "Variant": "Reference",
  5303          "Keyspace": {
  5304            "Name": "main",
  5305            "Sharded": false
  5306          },
  5307          "FieldQuery": "select insert('Quadratic', 3, 4, 'What') from dual where 1 != 1",
  5308          "Query": "select insert('Quadratic', 3, 4, 'What') from dual",
  5309          "Table": "dual"
  5310        },
  5311        "TablesUsed": [
  5312          "main.dual"
  5313        ]
  5314      }
  5315    },
  5316    {
  5317      "comment": "insert function using column names as arguments",
  5318      "query": "select insert(tcol1, id, 3, tcol2) from user",
  5319      "v3-plan": {
  5320        "QueryType": "SELECT",
  5321        "Original": "select insert(tcol1, id, 3, tcol2) from user",
  5322        "Instructions": {
  5323          "OperatorType": "Route",
  5324          "Variant": "Scatter",
  5325          "Keyspace": {
  5326            "Name": "user",
  5327            "Sharded": true
  5328          },
  5329          "FieldQuery": "select insert(tcol1, id, 3, tcol2) from `user` where 1 != 1",
  5330          "Query": "select insert(tcol1, id, 3, tcol2) from `user`",
  5331          "Table": "`user`"
  5332        }
  5333      },
  5334      "gen4-plan": {
  5335        "QueryType": "SELECT",
  5336        "Original": "select insert(tcol1, id, 3, tcol2) from user",
  5337        "Instructions": {
  5338          "OperatorType": "Route",
  5339          "Variant": "Scatter",
  5340          "Keyspace": {
  5341            "Name": "user",
  5342            "Sharded": true
  5343          },
  5344          "FieldQuery": "select insert(tcol1, id, 3, tcol2) from `user` where 1 != 1",
  5345          "Query": "select insert(tcol1, id, 3, tcol2) from `user`",
  5346          "Table": "`user`"
  5347        },
  5348        "TablesUsed": [
  5349          "user.user"
  5350        ]
  5351      }
  5352    },
  5353    {
  5354      "comment": "gtid functions",
  5355      "query": "select gtid_subset('3E11FA47-71CA-11E1-9E33-C80AA9429562:23','3E11FA47-71CA-11E1-9E33-C80AA9429562:21-57'), gtid_subtract('3E11FA47-71CA-11E1-9E33-C80AA9429562:23','3E11FA47-71CA-11E1-9E33-C80AA9429562:21-57')",
  5356      "v3-plan": {
  5357        "QueryType": "SELECT",
  5358        "Original": "select gtid_subset('3E11FA47-71CA-11E1-9E33-C80AA9429562:23','3E11FA47-71CA-11E1-9E33-C80AA9429562:21-57'), gtid_subtract('3E11FA47-71CA-11E1-9E33-C80AA9429562:23','3E11FA47-71CA-11E1-9E33-C80AA9429562:21-57')",
  5359        "Instructions": {
  5360          "OperatorType": "Route",
  5361          "Variant": "Reference",
  5362          "Keyspace": {
  5363            "Name": "main",
  5364            "Sharded": false
  5365          },
  5366          "FieldQuery": "select gtid_subset('3E11FA47-71CA-11E1-9E33-C80AA9429562:23', '3E11FA47-71CA-11E1-9E33-C80AA9429562:21-57'), gtid_subtract('3E11FA47-71CA-11E1-9E33-C80AA9429562:23', '3E11FA47-71CA-11E1-9E33-C80AA9429562:21-57') from dual where 1 != 1",
  5367          "Query": "select gtid_subset('3E11FA47-71CA-11E1-9E33-C80AA9429562:23', '3E11FA47-71CA-11E1-9E33-C80AA9429562:21-57'), gtid_subtract('3E11FA47-71CA-11E1-9E33-C80AA9429562:23', '3E11FA47-71CA-11E1-9E33-C80AA9429562:21-57') from dual",
  5368          "Table": "dual"
  5369        }
  5370      },
  5371      "gen4-plan": {
  5372        "QueryType": "SELECT",
  5373        "Original": "select gtid_subset('3E11FA47-71CA-11E1-9E33-C80AA9429562:23','3E11FA47-71CA-11E1-9E33-C80AA9429562:21-57'), gtid_subtract('3E11FA47-71CA-11E1-9E33-C80AA9429562:23','3E11FA47-71CA-11E1-9E33-C80AA9429562:21-57')",
  5374        "Instructions": {
  5375          "OperatorType": "Route",
  5376          "Variant": "Reference",
  5377          "Keyspace": {
  5378            "Name": "main",
  5379            "Sharded": false
  5380          },
  5381          "FieldQuery": "select gtid_subset('3E11FA47-71CA-11E1-9E33-C80AA9429562:23', '3E11FA47-71CA-11E1-9E33-C80AA9429562:21-57'), gtid_subtract('3E11FA47-71CA-11E1-9E33-C80AA9429562:23', '3E11FA47-71CA-11E1-9E33-C80AA9429562:21-57') from dual where 1 != 1",
  5382          "Query": "select gtid_subset('3E11FA47-71CA-11E1-9E33-C80AA9429562:23', '3E11FA47-71CA-11E1-9E33-C80AA9429562:21-57'), gtid_subtract('3E11FA47-71CA-11E1-9E33-C80AA9429562:23', '3E11FA47-71CA-11E1-9E33-C80AA9429562:21-57') from dual",
  5383          "Table": "dual"
  5384        },
  5385        "TablesUsed": [
  5386          "main.dual"
  5387        ]
  5388      }
  5389    },
  5390    {
  5391      "comment": "Predicate in apply join which is merged",
  5392      "query": "select user.col, user_metadata.user_id from user join user_extra on user.col = user_extra.col join user_metadata on user_extra.user_id = user_metadata.user_id where user.textcol1 = 'alice@gmail.com'",
  5393      "v3-plan": {
  5394        "QueryType": "SELECT",
  5395        "Original": "select user.col, user_metadata.user_id from user join user_extra on user.col = user_extra.col join user_metadata on user_extra.user_id = user_metadata.user_id where user.textcol1 = 'alice@gmail.com'",
  5396        "Instructions": {
  5397          "OperatorType": "Join",
  5398          "Variant": "Join",
  5399          "JoinColumnIndexes": "L:0,R:0",
  5400          "JoinVars": {
  5401            "user_extra_user_id": 1
  5402          },
  5403          "TableName": "`user`_user_extra_user_metadata",
  5404          "Inputs": [
  5405            {
  5406              "OperatorType": "Join",
  5407              "Variant": "Join",
  5408              "JoinColumnIndexes": "L:0,R:0",
  5409              "JoinVars": {
  5410                "user_col": 0
  5411              },
  5412              "TableName": "`user`_user_extra",
  5413              "Inputs": [
  5414                {
  5415                  "OperatorType": "Route",
  5416                  "Variant": "Scatter",
  5417                  "Keyspace": {
  5418                    "Name": "user",
  5419                    "Sharded": true
  5420                  },
  5421                  "FieldQuery": "select `user`.col from `user` where 1 != 1",
  5422                  "Query": "select `user`.col from `user` where `user`.textcol1 = 'alice@gmail.com'",
  5423                  "Table": "`user`"
  5424                },
  5425                {
  5426                  "OperatorType": "Route",
  5427                  "Variant": "Scatter",
  5428                  "Keyspace": {
  5429                    "Name": "user",
  5430                    "Sharded": true
  5431                  },
  5432                  "FieldQuery": "select user_extra.user_id from user_extra where 1 != 1",
  5433                  "Query": "select user_extra.user_id from user_extra where user_extra.col = :user_col",
  5434                  "Table": "user_extra"
  5435                }
  5436              ]
  5437            },
  5438            {
  5439              "OperatorType": "Route",
  5440              "Variant": "EqualUnique",
  5441              "Keyspace": {
  5442                "Name": "user",
  5443                "Sharded": true
  5444              },
  5445              "FieldQuery": "select user_metadata.user_id from user_metadata where 1 != 1",
  5446              "Query": "select user_metadata.user_id from user_metadata where user_metadata.user_id = :user_extra_user_id",
  5447              "Table": "user_metadata",
  5448              "Values": [
  5449                ":user_extra_user_id"
  5450              ],
  5451              "Vindex": "user_index"
  5452            }
  5453          ]
  5454        }
  5455      },
  5456      "gen4-plan": {
  5457        "QueryType": "SELECT",
  5458        "Original": "select user.col, user_metadata.user_id from user join user_extra on user.col = user_extra.col join user_metadata on user_extra.user_id = user_metadata.user_id where user.textcol1 = 'alice@gmail.com'",
  5459        "Instructions": {
  5460          "OperatorType": "Join",
  5461          "Variant": "Join",
  5462          "JoinColumnIndexes": "L:0,R:0",
  5463          "JoinVars": {
  5464            "user_col": 0
  5465          },
  5466          "TableName": "`user`_user_extra, user_metadata",
  5467          "Inputs": [
  5468            {
  5469              "OperatorType": "Route",
  5470              "Variant": "Scatter",
  5471              "Keyspace": {
  5472                "Name": "user",
  5473                "Sharded": true
  5474              },
  5475              "FieldQuery": "select `user`.col from `user` where 1 != 1",
  5476              "Query": "select `user`.col from `user` where `user`.textcol1 = 'alice@gmail.com'",
  5477              "Table": "`user`"
  5478            },
  5479            {
  5480              "OperatorType": "Route",
  5481              "Variant": "Scatter",
  5482              "Keyspace": {
  5483                "Name": "user",
  5484                "Sharded": true
  5485              },
  5486              "FieldQuery": "select user_metadata.user_id from user_extra, user_metadata where 1 != 1",
  5487              "Query": "select user_metadata.user_id from user_extra, user_metadata where user_extra.col = :user_col and user_extra.user_id = user_metadata.user_id",
  5488              "Table": "user_extra, user_metadata"
  5489            }
  5490          ]
  5491        },
  5492        "TablesUsed": [
  5493          "user.user",
  5494          "user.user_extra",
  5495          "user.user_metadata"
  5496        ]
  5497      }
  5498    },
  5499    {
  5500      "comment": "Join across multiple tables, with conditions on different vindexes, but mergeable through join predicates",
  5501      "query": "SELECT user.id FROM user INNER JOIN music_extra ON user.id = music_extra.user_id INNER JOIN music ON music_extra.user_id = music.user_id WHERE user.id = 123 and music.id = 456",
  5502      "v3-plan": {
  5503        "QueryType": "SELECT",
  5504        "Original": "SELECT user.id FROM user INNER JOIN music_extra ON user.id = music_extra.user_id INNER JOIN music ON music_extra.user_id = music.user_id WHERE user.id = 123 and music.id = 456",
  5505        "Instructions": {
  5506          "OperatorType": "Route",
  5507          "Variant": "EqualUnique",
  5508          "Keyspace": {
  5509            "Name": "user",
  5510            "Sharded": true
  5511          },
  5512          "FieldQuery": "select `user`.id from `user` join music_extra on `user`.id = music_extra.user_id join music on music_extra.user_id = music.user_id where 1 != 1",
  5513          "Query": "select `user`.id from `user` join music_extra on `user`.id = music_extra.user_id join music on music_extra.user_id = music.user_id where `user`.id = 123 and music.id = 456",
  5514          "Table": "`user`, music_extra, music",
  5515          "Values": [
  5516            "INT64(123)"
  5517          ],
  5518          "Vindex": "user_index"
  5519        }
  5520      },
  5521      "gen4-plan": {
  5522        "QueryType": "SELECT",
  5523        "Original": "SELECT user.id FROM user INNER JOIN music_extra ON user.id = music_extra.user_id INNER JOIN music ON music_extra.user_id = music.user_id WHERE user.id = 123 and music.id = 456",
  5524        "Instructions": {
  5525          "OperatorType": "Route",
  5526          "Variant": "EqualUnique",
  5527          "Keyspace": {
  5528            "Name": "user",
  5529            "Sharded": true
  5530          },
  5531          "FieldQuery": "select `user`.id from `user`, music_extra, music where 1 != 1",
  5532          "Query": "select `user`.id from `user`, music_extra, music where music.id = 456 and `user`.id = 123 and `user`.id = music_extra.user_id and music_extra.user_id = music.user_id",
  5533          "Table": "`user`, music, music_extra",
  5534          "Values": [
  5535            "INT64(123)"
  5536          ],
  5537          "Vindex": "user_index"
  5538        },
  5539        "TablesUsed": [
  5540          "user.music",
  5541          "user.music_extra",
  5542          "user.user"
  5543        ]
  5544      }
  5545    },
  5546    {
  5547      "comment": "SQL_CALC_FOUND_ROWS with vindex lookup",
  5548      "query": "select SQL_CALC_FOUND_ROWS id, name from user where name = 'aa' order by id limit 2",
  5549      "v3-plan": {
  5550        "QueryType": "SELECT",
  5551        "Original": "select SQL_CALC_FOUND_ROWS id, name from user where name = 'aa' order by id limit 2",
  5552        "Instructions": {
  5553          "OperatorType": "SQL_CALC_FOUND_ROWS",
  5554          "Inputs": [
  5555            {
  5556              "OperatorType": "Limit",
  5557              "Count": "INT64(2)",
  5558              "Inputs": [
  5559                {
  5560                  "OperatorType": "Route",
  5561                  "Variant": "Equal",
  5562                  "Keyspace": {
  5563                    "Name": "user",
  5564                    "Sharded": true
  5565                  },
  5566                  "FieldQuery": "select id, `name`, weight_string(id) from `user` where 1 != 1",
  5567                  "OrderBy": "(0|2) ASC",
  5568                  "Query": "select id, `name`, weight_string(id) from `user` where `name` = 'aa' order by id asc limit :__upper_limit",
  5569                  "ResultColumns": 2,
  5570                  "Table": "`user`",
  5571                  "Values": [
  5572                    "VARCHAR(\"aa\")"
  5573                  ],
  5574                  "Vindex": "name_user_map"
  5575                }
  5576              ]
  5577            },
  5578            {
  5579              "OperatorType": "Aggregate",
  5580              "Variant": "Scalar",
  5581              "Aggregates": "sum_count(0) AS count",
  5582              "Inputs": [
  5583                {
  5584                  "OperatorType": "Route",
  5585                  "Variant": "Equal",
  5586                  "Keyspace": {
  5587                    "Name": "user",
  5588                    "Sharded": true
  5589                  },
  5590                  "FieldQuery": "select count(*) from `user` where 1 != 1",
  5591                  "Query": "select count(*) from `user` where `name` = 'aa'",
  5592                  "Table": "`user`",
  5593                  "Values": [
  5594                    "VARCHAR(\"aa\")"
  5595                  ],
  5596                  "Vindex": "name_user_map"
  5597                }
  5598              ]
  5599            }
  5600          ]
  5601        }
  5602      },
  5603      "gen4-plan": {
  5604        "QueryType": "SELECT",
  5605        "Original": "select SQL_CALC_FOUND_ROWS id, name from user where name = 'aa' order by id limit 2",
  5606        "Instructions": {
  5607          "OperatorType": "SQL_CALC_FOUND_ROWS",
  5608          "Inputs": [
  5609            {
  5610              "OperatorType": "Limit",
  5611              "Count": "INT64(2)",
  5612              "Inputs": [
  5613                {
  5614                  "OperatorType": "VindexLookup",
  5615                  "Variant": "Equal",
  5616                  "Keyspace": {
  5617                    "Name": "user",
  5618                    "Sharded": true
  5619                  },
  5620                  "Values": [
  5621                    "VARCHAR(\"aa\")"
  5622                  ],
  5623                  "Vindex": "name_user_map",
  5624                  "Inputs": [
  5625                    {
  5626                      "OperatorType": "Route",
  5627                      "Variant": "IN",
  5628                      "Keyspace": {
  5629                        "Name": "user",
  5630                        "Sharded": true
  5631                      },
  5632                      "FieldQuery": "select `name`, keyspace_id from name_user_vdx where 1 != 1",
  5633                      "Query": "select `name`, keyspace_id from name_user_vdx where `name` in ::__vals",
  5634                      "Table": "name_user_vdx",
  5635                      "Values": [
  5636                        ":name"
  5637                      ],
  5638                      "Vindex": "user_index"
  5639                    },
  5640                    {
  5641                      "OperatorType": "Route",
  5642                      "Variant": "ByDestination",
  5643                      "Keyspace": {
  5644                        "Name": "user",
  5645                        "Sharded": true
  5646                      },
  5647                      "FieldQuery": "select id, `name`, weight_string(id) from `user` where 1 != 1",
  5648                      "OrderBy": "(0|2) ASC",
  5649                      "Query": "select id, `name`, weight_string(id) from `user` where `name` = 'aa' order by id asc limit :__upper_limit",
  5650                      "ResultColumns": 2,
  5651                      "Table": "`user`"
  5652                    }
  5653                  ]
  5654                }
  5655              ]
  5656            },
  5657            {
  5658              "OperatorType": "Aggregate",
  5659              "Variant": "Scalar",
  5660              "Aggregates": "sum_count_star(0) AS count(*)",
  5661              "Inputs": [
  5662                {
  5663                  "OperatorType": "VindexLookup",
  5664                  "Variant": "Equal",
  5665                  "Keyspace": {
  5666                    "Name": "user",
  5667                    "Sharded": true
  5668                  },
  5669                  "Values": [
  5670                    "VARCHAR(\"aa\")"
  5671                  ],
  5672                  "Vindex": "name_user_map",
  5673                  "Inputs": [
  5674                    {
  5675                      "OperatorType": "Route",
  5676                      "Variant": "IN",
  5677                      "Keyspace": {
  5678                        "Name": "user",
  5679                        "Sharded": true
  5680                      },
  5681                      "FieldQuery": "select `name`, keyspace_id from name_user_vdx where 1 != 1",
  5682                      "Query": "select `name`, keyspace_id from name_user_vdx where `name` in ::__vals",
  5683                      "Table": "name_user_vdx",
  5684                      "Values": [
  5685                        ":name"
  5686                      ],
  5687                      "Vindex": "user_index"
  5688                    },
  5689                    {
  5690                      "OperatorType": "Route",
  5691                      "Variant": "ByDestination",
  5692                      "Keyspace": {
  5693                        "Name": "user",
  5694                        "Sharded": true
  5695                      },
  5696                      "FieldQuery": "select count(*) from `user` where 1 != 1",
  5697                      "Query": "select count(*) from `user` where `name` = 'aa'",
  5698                      "Table": "`user`"
  5699                    }
  5700                  ]
  5701                }
  5702              ]
  5703            }
  5704          ]
  5705        },
  5706        "TablesUsed": [
  5707          "user.user"
  5708        ]
  5709      }
  5710    },
  5711    {
  5712      "comment": "`None` route being merged with another route via join predicate on Vindex columns",
  5713      "query": "SELECT `music`.id FROM `music` INNER JOIN `user` ON music.user_id = user.id WHERE music.user_id IN (NULL) AND user.id = 5",
  5714      "v3-plan": {
  5715        "QueryType": "SELECT",
  5716        "Original": "SELECT `music`.id FROM `music` INNER JOIN `user` ON music.user_id = user.id WHERE music.user_id IN (NULL) AND user.id = 5",
  5717        "Instructions": {
  5718          "OperatorType": "Route",
  5719          "Variant": "None",
  5720          "Keyspace": {
  5721            "Name": "user",
  5722            "Sharded": true
  5723          },
  5724          "FieldQuery": "select music.id from music join `user` on music.user_id = `user`.id where 1 != 1",
  5725          "Query": "select music.id from music join `user` on music.user_id = `user`.id where music.user_id in (null) and `user`.id = 5",
  5726          "Table": "music, `user`"
  5727        }
  5728      },
  5729      "gen4-plan": {
  5730        "QueryType": "SELECT",
  5731        "Original": "SELECT `music`.id FROM `music` INNER JOIN `user` ON music.user_id = user.id WHERE music.user_id IN (NULL) AND user.id = 5",
  5732        "Instructions": {
  5733          "OperatorType": "Route",
  5734          "Variant": "None",
  5735          "Keyspace": {
  5736            "Name": "user",
  5737            "Sharded": true
  5738          },
  5739          "FieldQuery": "select music.id from music, `user` where 1 != 1",
  5740          "Query": "select music.id from music, `user` where music.user_id in (null) and `user`.id = 5 and music.user_id = `user`.id",
  5741          "Table": "`user`, music"
  5742        },
  5743        "TablesUsed": [
  5744          "user.music",
  5745          "user.user"
  5746        ]
  5747      }
  5748    },
  5749    {
  5750      "comment": "Treating single value tuples as `EqualUnique` routes",
  5751      "query": "SELECT music.id FROM music WHERE music.id IN (SELECT music.id FROM music WHERE music.user_id IN (5)) AND music.user_id = 5",
  5752      "v3-plan": {
  5753        "QueryType": "SELECT",
  5754        "Original": "SELECT music.id FROM music WHERE music.id IN (SELECT music.id FROM music WHERE music.user_id IN (5)) AND music.user_id = 5",
  5755        "Instructions": {
  5756          "OperatorType": "Subquery",
  5757          "Variant": "PulloutIn",
  5758          "PulloutVars": [
  5759            "__sq_has_values1",
  5760            "__sq1"
  5761          ],
  5762          "Inputs": [
  5763            {
  5764              "OperatorType": "Route",
  5765              "Variant": "IN",
  5766              "Keyspace": {
  5767                "Name": "user",
  5768                "Sharded": true
  5769              },
  5770              "FieldQuery": "select music.id from music where 1 != 1",
  5771              "Query": "select music.id from music where music.user_id in ::__vals",
  5772              "Table": "music",
  5773              "Values": [
  5774                "(INT64(5))"
  5775              ],
  5776              "Vindex": "user_index"
  5777            },
  5778            {
  5779              "OperatorType": "Route",
  5780              "Variant": "EqualUnique",
  5781              "Keyspace": {
  5782                "Name": "user",
  5783                "Sharded": true
  5784              },
  5785              "FieldQuery": "select music.id from music where 1 != 1",
  5786              "Query": "select music.id from music where music.user_id = 5 and :__sq_has_values1 = 1 and music.id in ::__sq1",
  5787              "Table": "music",
  5788              "Values": [
  5789                "INT64(5)"
  5790              ],
  5791              "Vindex": "user_index"
  5792            }
  5793          ]
  5794        }
  5795      },
  5796      "gen4-plan": {
  5797        "QueryType": "SELECT",
  5798        "Original": "SELECT music.id FROM music WHERE music.id IN (SELECT music.id FROM music WHERE music.user_id IN (5)) AND music.user_id = 5",
  5799        "Instructions": {
  5800          "OperatorType": "Route",
  5801          "Variant": "EqualUnique",
  5802          "Keyspace": {
  5803            "Name": "user",
  5804            "Sharded": true
  5805          },
  5806          "FieldQuery": "select music.id from music where 1 != 1",
  5807          "Query": "select music.id from music where music.id in (select music.id from music where music.user_id in (5)) and music.user_id = 5",
  5808          "Table": "music",
  5809          "Values": [
  5810            "INT64(5)"
  5811          ],
  5812          "Vindex": "user_index"
  5813        },
  5814        "TablesUsed": [
  5815          "user.music"
  5816        ]
  5817      }
  5818    },
  5819    {
  5820      "comment": "Subquery with `IN` condition using columns with matching lookup vindexes",
  5821      "query": "SELECT music.id FROM music WHERE music.id IN (SELECT music.id FROM music WHERE music.user_id IN (1, 2, 3))",
  5822      "v3-plan": {
  5823        "QueryType": "SELECT",
  5824        "Original": "SELECT music.id FROM music WHERE music.id IN (SELECT music.id FROM music WHERE music.user_id IN (1, 2, 3))",
  5825        "Instructions": {
  5826          "OperatorType": "Subquery",
  5827          "Variant": "PulloutIn",
  5828          "PulloutVars": [
  5829            "__sq_has_values1",
  5830            "__sq1"
  5831          ],
  5832          "Inputs": [
  5833            {
  5834              "OperatorType": "Route",
  5835              "Variant": "IN",
  5836              "Keyspace": {
  5837                "Name": "user",
  5838                "Sharded": true
  5839              },
  5840              "FieldQuery": "select music.id from music where 1 != 1",
  5841              "Query": "select music.id from music where music.user_id in ::__vals",
  5842              "Table": "music",
  5843              "Values": [
  5844                "(INT64(1), INT64(2), INT64(3))"
  5845              ],
  5846              "Vindex": "user_index"
  5847            },
  5848            {
  5849              "OperatorType": "Route",
  5850              "Variant": "IN",
  5851              "Keyspace": {
  5852                "Name": "user",
  5853                "Sharded": true
  5854              },
  5855              "FieldQuery": "select music.id from music where 1 != 1",
  5856              "Query": "select music.id from music where :__sq_has_values1 = 1 and music.id in ::__vals",
  5857              "Table": "music",
  5858              "Values": [
  5859                ":__sq1"
  5860              ],
  5861              "Vindex": "music_user_map"
  5862            }
  5863          ]
  5864        }
  5865      },
  5866      "gen4-plan": {
  5867        "QueryType": "SELECT",
  5868        "Original": "SELECT music.id FROM music WHERE music.id IN (SELECT music.id FROM music WHERE music.user_id IN (1, 2, 3))",
  5869        "Instructions": {
  5870          "OperatorType": "Route",
  5871          "Variant": "IN",
  5872          "Keyspace": {
  5873            "Name": "user",
  5874            "Sharded": true
  5875          },
  5876          "FieldQuery": "select music.id from music where 1 != 1",
  5877          "Query": "select music.id from music where music.id in (select music.id from music where music.user_id in ::__vals)",
  5878          "Table": "music",
  5879          "Values": [
  5880            "(INT64(1), INT64(2), INT64(3))"
  5881          ],
  5882          "Vindex": "user_index"
  5883        },
  5884        "TablesUsed": [
  5885          "user.music"
  5886        ]
  5887      }
  5888    },
  5889    {
  5890      "comment": "Subquery with `IN` condition using columns with matching lookup vindexes, with derived table",
  5891      "query": "SELECT music.id FROM music WHERE music.id IN (SELECT * FROM (SELECT music.id FROM music WHERE music.user_id IN (1, 2, 3)) _inner)",
  5892      "v3-plan": {
  5893        "QueryType": "SELECT",
  5894        "Original": "SELECT music.id FROM music WHERE music.id IN (SELECT * FROM (SELECT music.id FROM music WHERE music.user_id IN (1, 2, 3)) _inner)",
  5895        "Instructions": {
  5896          "OperatorType": "Subquery",
  5897          "Variant": "PulloutIn",
  5898          "PulloutVars": [
  5899            "__sq_has_values1",
  5900            "__sq1"
  5901          ],
  5902          "Inputs": [
  5903            {
  5904              "OperatorType": "Route",
  5905              "Variant": "IN",
  5906              "Keyspace": {
  5907                "Name": "user",
  5908                "Sharded": true
  5909              },
  5910              "FieldQuery": "select * from (select music.id from music where 1 != 1) as _inner where 1 != 1",
  5911              "Query": "select * from (select music.id from music where music.user_id in ::__vals) as _inner",
  5912              "Table": "music",
  5913              "Values": [
  5914                "(INT64(1), INT64(2), INT64(3))"
  5915              ],
  5916              "Vindex": "user_index"
  5917            },
  5918            {
  5919              "OperatorType": "Route",
  5920              "Variant": "IN",
  5921              "Keyspace": {
  5922                "Name": "user",
  5923                "Sharded": true
  5924              },
  5925              "FieldQuery": "select music.id from music where 1 != 1",
  5926              "Query": "select music.id from music where :__sq_has_values1 = 1 and music.id in ::__vals",
  5927              "Table": "music",
  5928              "Values": [
  5929                ":__sq1"
  5930              ],
  5931              "Vindex": "music_user_map"
  5932            }
  5933          ]
  5934        }
  5935      },
  5936      "gen4-plan": {
  5937        "QueryType": "SELECT",
  5938        "Original": "SELECT music.id FROM music WHERE music.id IN (SELECT * FROM (SELECT music.id FROM music WHERE music.user_id IN (1, 2, 3)) _inner)",
  5939        "Instructions": {
  5940          "OperatorType": "Route",
  5941          "Variant": "IN",
  5942          "Keyspace": {
  5943            "Name": "user",
  5944            "Sharded": true
  5945          },
  5946          "FieldQuery": "select music.id from music where 1 != 1",
  5947          "Query": "select music.id from music where music.id in (select _inner.id from (select music.id from music where music.user_id in ::__vals) as _inner)",
  5948          "Table": "music",
  5949          "Values": [
  5950            "(INT64(1), INT64(2), INT64(3))"
  5951          ],
  5952          "Vindex": "user_index"
  5953        },
  5954        "TablesUsed": [
  5955          "user.music"
  5956        ]
  5957      }
  5958    },
  5959    {
  5960      "comment": "Subquery with `IN` condition using columns with matching lookup vindexes, with inner scatter query",
  5961      "query": "SELECT music.id FROM music WHERE music.id IN (SELECT music.id FROM music WHERE music.foo = 'bar') AND music.user_id IN (3, 4, 5)",
  5962      "v3-plan": {
  5963        "QueryType": "SELECT",
  5964        "Original": "SELECT music.id FROM music WHERE music.id IN (SELECT music.id FROM music WHERE music.foo = 'bar') AND music.user_id IN (3, 4, 5)",
  5965        "Instructions": {
  5966          "OperatorType": "Subquery",
  5967          "Variant": "PulloutIn",
  5968          "PulloutVars": [
  5969            "__sq_has_values1",
  5970            "__sq1"
  5971          ],
  5972          "Inputs": [
  5973            {
  5974              "OperatorType": "Route",
  5975              "Variant": "Scatter",
  5976              "Keyspace": {
  5977                "Name": "user",
  5978                "Sharded": true
  5979              },
  5980              "FieldQuery": "select music.id from music where 1 != 1",
  5981              "Query": "select music.id from music where music.foo = 'bar'",
  5982              "Table": "music"
  5983            },
  5984            {
  5985              "OperatorType": "Route",
  5986              "Variant": "IN",
  5987              "Keyspace": {
  5988                "Name": "user",
  5989                "Sharded": true
  5990              },
  5991              "FieldQuery": "select music.id from music where 1 != 1",
  5992              "Query": "select music.id from music where music.user_id in ::__vals and :__sq_has_values1 = 1 and music.id in ::__sq1",
  5993              "Table": "music",
  5994              "Values": [
  5995                "(INT64(3), INT64(4), INT64(5))"
  5996              ],
  5997              "Vindex": "user_index"
  5998            }
  5999          ]
  6000        }
  6001      },
  6002      "gen4-plan": {
  6003        "QueryType": "SELECT",
  6004        "Original": "SELECT music.id FROM music WHERE music.id IN (SELECT music.id FROM music WHERE music.foo = 'bar') AND music.user_id IN (3, 4, 5)",
  6005        "Instructions": {
  6006          "OperatorType": "Route",
  6007          "Variant": "IN",
  6008          "Keyspace": {
  6009            "Name": "user",
  6010            "Sharded": true
  6011          },
  6012          "FieldQuery": "select music.id from music where 1 != 1",
  6013          "Query": "select music.id from music where music.id in (select music.id from music where music.foo = 'bar') and music.user_id in ::__vals",
  6014          "Table": "music",
  6015          "Values": [
  6016            "(INT64(3), INT64(4), INT64(5))"
  6017          ],
  6018          "Vindex": "user_index"
  6019        },
  6020        "TablesUsed": [
  6021          "user.music"
  6022        ]
  6023      }
  6024    },
  6025    {
  6026      "comment": "Subquery with `IN` condition using columns with matching lookup vindexes",
  6027      "query": "SELECT music.id FROM music WHERE music.id IN (SELECT music.id FROM music WHERE music.user_id IN (1, 2, 3)) and music.user_id = 5",
  6028      "v3-plan": {
  6029        "QueryType": "SELECT",
  6030        "Original": "SELECT music.id FROM music WHERE music.id IN (SELECT music.id FROM music WHERE music.user_id IN (1, 2, 3)) and music.user_id = 5",
  6031        "Instructions": {
  6032          "OperatorType": "Subquery",
  6033          "Variant": "PulloutIn",
  6034          "PulloutVars": [
  6035            "__sq_has_values1",
  6036            "__sq1"
  6037          ],
  6038          "Inputs": [
  6039            {
  6040              "OperatorType": "Route",
  6041              "Variant": "IN",
  6042              "Keyspace": {
  6043                "Name": "user",
  6044                "Sharded": true
  6045              },
  6046              "FieldQuery": "select music.id from music where 1 != 1",
  6047              "Query": "select music.id from music where music.user_id in ::__vals",
  6048              "Table": "music",
  6049              "Values": [
  6050                "(INT64(1), INT64(2), INT64(3))"
  6051              ],
  6052              "Vindex": "user_index"
  6053            },
  6054            {
  6055              "OperatorType": "Route",
  6056              "Variant": "EqualUnique",
  6057              "Keyspace": {
  6058                "Name": "user",
  6059                "Sharded": true
  6060              },
  6061              "FieldQuery": "select music.id from music where 1 != 1",
  6062              "Query": "select music.id from music where music.user_id = 5 and :__sq_has_values1 = 1 and music.id in ::__sq1",
  6063              "Table": "music",
  6064              "Values": [
  6065                "INT64(5)"
  6066              ],
  6067              "Vindex": "user_index"
  6068            }
  6069          ]
  6070        }
  6071      },
  6072      "gen4-plan": {
  6073        "QueryType": "SELECT",
  6074        "Original": "SELECT music.id FROM music WHERE music.id IN (SELECT music.id FROM music WHERE music.user_id IN (1, 2, 3)) and music.user_id = 5",
  6075        "Instructions": {
  6076          "OperatorType": "Route",
  6077          "Variant": "EqualUnique",
  6078          "Keyspace": {
  6079            "Name": "user",
  6080            "Sharded": true
  6081          },
  6082          "FieldQuery": "select music.id from music where 1 != 1",
  6083          "Query": "select music.id from music where music.id in (select music.id from music where music.user_id in (1, 2, 3)) and music.user_id = 5",
  6084          "Table": "music",
  6085          "Values": [
  6086            "INT64(5)"
  6087          ],
  6088          "Vindex": "user_index"
  6089        },
  6090        "TablesUsed": [
  6091          "user.music"
  6092        ]
  6093      }
  6094    },
  6095    {
  6096      "comment": "Subquery with `IN` condition using columns with matching lookup vindexes, but not a top level predicate",
  6097      "query": "SELECT music.id FROM music WHERE music.id IN (SELECT music.id FROM music WHERE music.user_id IN (1, 2, 3)) OR music.user_id = 5",
  6098      "v3-plan": {
  6099        "QueryType": "SELECT",
  6100        "Original": "SELECT music.id FROM music WHERE music.id IN (SELECT music.id FROM music WHERE music.user_id IN (1, 2, 3)) OR music.user_id = 5",
  6101        "Instructions": {
  6102          "OperatorType": "Subquery",
  6103          "Variant": "PulloutIn",
  6104          "PulloutVars": [
  6105            "__sq_has_values1",
  6106            "__sq1"
  6107          ],
  6108          "Inputs": [
  6109            {
  6110              "OperatorType": "Route",
  6111              "Variant": "IN",
  6112              "Keyspace": {
  6113                "Name": "user",
  6114                "Sharded": true
  6115              },
  6116              "FieldQuery": "select music.id from music where 1 != 1",
  6117              "Query": "select music.id from music where music.user_id in ::__vals",
  6118              "Table": "music",
  6119              "Values": [
  6120                "(INT64(1), INT64(2), INT64(3))"
  6121              ],
  6122              "Vindex": "user_index"
  6123            },
  6124            {
  6125              "OperatorType": "Route",
  6126              "Variant": "Scatter",
  6127              "Keyspace": {
  6128                "Name": "user",
  6129                "Sharded": true
  6130              },
  6131              "FieldQuery": "select music.id from music where 1 != 1",
  6132              "Query": "select music.id from music where :__sq_has_values1 = 1 and music.id in ::__sq1 or music.user_id = 5",
  6133              "Table": "music"
  6134            }
  6135          ]
  6136        }
  6137      },
  6138      "gen4-plan": {
  6139        "QueryType": "SELECT",
  6140        "Original": "SELECT music.id FROM music WHERE music.id IN (SELECT music.id FROM music WHERE music.user_id IN (1, 2, 3)) OR music.user_id = 5",
  6141        "Instructions": {
  6142          "OperatorType": "Route",
  6143          "Variant": "Scatter",
  6144          "Keyspace": {
  6145            "Name": "user",
  6146            "Sharded": true
  6147          },
  6148          "FieldQuery": "select music.id from music where 1 != 1",
  6149          "Query": "select music.id from music where music.id in (select music.id from music where music.user_id in (1, 2, 3)) or music.user_id = 5",
  6150          "Table": "music"
  6151        },
  6152        "TablesUsed": [
  6153          "user.music"
  6154        ]
  6155      }
  6156    },
  6157    {
  6158      "comment": "`IN` comparison on Vindex with `None` subquery, as routing predicate",
  6159      "query": "SELECT `music`.id FROM `music` WHERE music.id IN (SELECT music.id FROM music WHERE music.user_id IN (NULL)) AND music.user_id = 5",
  6160      "v3-plan": {
  6161        "QueryType": "SELECT",
  6162        "Original": "SELECT `music`.id FROM `music` WHERE music.id IN (SELECT music.id FROM music WHERE music.user_id IN (NULL)) AND music.user_id = 5",
  6163        "Instructions": {
  6164          "OperatorType": "Subquery",
  6165          "Variant": "PulloutIn",
  6166          "PulloutVars": [
  6167            "__sq_has_values1",
  6168            "__sq1"
  6169          ],
  6170          "Inputs": [
  6171            {
  6172              "OperatorType": "Route",
  6173              "Variant": "None",
  6174              "Keyspace": {
  6175                "Name": "user",
  6176                "Sharded": true
  6177              },
  6178              "FieldQuery": "select music.id from music where 1 != 1",
  6179              "Query": "select music.id from music where music.user_id in (null)",
  6180              "Table": "music"
  6181            },
  6182            {
  6183              "OperatorType": "Route",
  6184              "Variant": "EqualUnique",
  6185              "Keyspace": {
  6186                "Name": "user",
  6187                "Sharded": true
  6188              },
  6189              "FieldQuery": "select music.id from music where 1 != 1",
  6190              "Query": "select music.id from music where music.user_id = 5 and :__sq_has_values1 = 1 and music.id in ::__sq1",
  6191              "Table": "music",
  6192              "Values": [
  6193                "INT64(5)"
  6194              ],
  6195              "Vindex": "user_index"
  6196            }
  6197          ]
  6198        }
  6199      },
  6200      "gen4-plan": {
  6201        "QueryType": "SELECT",
  6202        "Original": "SELECT `music`.id FROM `music` WHERE music.id IN (SELECT music.id FROM music WHERE music.user_id IN (NULL)) AND music.user_id = 5",
  6203        "Instructions": {
  6204          "OperatorType": "Route",
  6205          "Variant": "None",
  6206          "Keyspace": {
  6207            "Name": "user",
  6208            "Sharded": true
  6209          },
  6210          "FieldQuery": "select music.id from music where 1 != 1",
  6211          "Query": "select music.id from music where music.id in (select music.id from music where music.user_id in (null)) and music.user_id = 5",
  6212          "Table": "music"
  6213        },
  6214        "TablesUsed": [
  6215          "user.music"
  6216        ]
  6217      }
  6218    },
  6219    {
  6220      "comment": "`IN` comparison on Vindex with `None` subquery, as non-routing predicate",
  6221      "query": "SELECT `music`.id FROM `music` WHERE music.id IN (SELECT music.id FROM music WHERE music.user_id IN (NULL)) OR music.user_id = 5",
  6222      "v3-plan": {
  6223        "QueryType": "SELECT",
  6224        "Original": "SELECT `music`.id FROM `music` WHERE music.id IN (SELECT music.id FROM music WHERE music.user_id IN (NULL)) OR music.user_id = 5",
  6225        "Instructions": {
  6226          "OperatorType": "Subquery",
  6227          "Variant": "PulloutIn",
  6228          "PulloutVars": [
  6229            "__sq_has_values1",
  6230            "__sq1"
  6231          ],
  6232          "Inputs": [
  6233            {
  6234              "OperatorType": "Route",
  6235              "Variant": "None",
  6236              "Keyspace": {
  6237                "Name": "user",
  6238                "Sharded": true
  6239              },
  6240              "FieldQuery": "select music.id from music where 1 != 1",
  6241              "Query": "select music.id from music where music.user_id in (null)",
  6242              "Table": "music"
  6243            },
  6244            {
  6245              "OperatorType": "Route",
  6246              "Variant": "Scatter",
  6247              "Keyspace": {
  6248                "Name": "user",
  6249                "Sharded": true
  6250              },
  6251              "FieldQuery": "select music.id from music where 1 != 1",
  6252              "Query": "select music.id from music where :__sq_has_values1 = 1 and music.id in ::__sq1 or music.user_id = 5",
  6253              "Table": "music"
  6254            }
  6255          ]
  6256        }
  6257      },
  6258      "gen4-plan": {
  6259        "QueryType": "SELECT",
  6260        "Original": "SELECT `music`.id FROM `music` WHERE music.id IN (SELECT music.id FROM music WHERE music.user_id IN (NULL)) OR music.user_id = 5",
  6261        "Instructions": {
  6262          "OperatorType": "Route",
  6263          "Variant": "Scatter",
  6264          "Keyspace": {
  6265            "Name": "user",
  6266            "Sharded": true
  6267          },
  6268          "FieldQuery": "select music.id from music where 1 != 1",
  6269          "Query": "select music.id from music where music.id in (select music.id from music where music.user_id in (null)) or music.user_id = 5",
  6270          "Table": "music"
  6271        },
  6272        "TablesUsed": [
  6273          "user.music"
  6274        ]
  6275      }
  6276    },
  6277    {
  6278      "comment": "Mergeable scatter subquery",
  6279      "query": "SELECT music.id FROM music WHERE music.id IN (SELECT music.id FROM music WHERE music.genre = 'pop')",
  6280      "v3-plan": {
  6281        "QueryType": "SELECT",
  6282        "Original": "SELECT music.id FROM music WHERE music.id IN (SELECT music.id FROM music WHERE music.genre = 'pop')",
  6283        "Instructions": {
  6284          "OperatorType": "Subquery",
  6285          "Variant": "PulloutIn",
  6286          "PulloutVars": [
  6287            "__sq_has_values1",
  6288            "__sq1"
  6289          ],
  6290          "Inputs": [
  6291            {
  6292              "OperatorType": "Route",
  6293              "Variant": "Scatter",
  6294              "Keyspace": {
  6295                "Name": "user",
  6296                "Sharded": true
  6297              },
  6298              "FieldQuery": "select music.id from music where 1 != 1",
  6299              "Query": "select music.id from music where music.genre = 'pop'",
  6300              "Table": "music"
  6301            },
  6302            {
  6303              "OperatorType": "Route",
  6304              "Variant": "IN",
  6305              "Keyspace": {
  6306                "Name": "user",
  6307                "Sharded": true
  6308              },
  6309              "FieldQuery": "select music.id from music where 1 != 1",
  6310              "Query": "select music.id from music where :__sq_has_values1 = 1 and music.id in ::__vals",
  6311              "Table": "music",
  6312              "Values": [
  6313                ":__sq1"
  6314              ],
  6315              "Vindex": "music_user_map"
  6316            }
  6317          ]
  6318        }
  6319      },
  6320      "gen4-plan": {
  6321        "QueryType": "SELECT",
  6322        "Original": "SELECT music.id FROM music WHERE music.id IN (SELECT music.id FROM music WHERE music.genre = 'pop')",
  6323        "Instructions": {
  6324          "OperatorType": "Route",
  6325          "Variant": "Scatter",
  6326          "Keyspace": {
  6327            "Name": "user",
  6328            "Sharded": true
  6329          },
  6330          "FieldQuery": "select music.id from music where 1 != 1",
  6331          "Query": "select music.id from music where music.id in (select music.id from music where music.genre = 'pop')",
  6332          "Table": "music"
  6333        },
  6334        "TablesUsed": [
  6335          "user.music"
  6336        ]
  6337      }
  6338    },
  6339    {
  6340      "comment": "Mergeable scatter subquery with `GROUP BY` on unique vindex column",
  6341      "query": "SELECT music.id FROM music WHERE music.id IN (SELECT music.id FROM music WHERE music.genre = 'pop' GROUP BY music.id)",
  6342      "v3-plan": {
  6343        "QueryType": "SELECT",
  6344        "Original": "SELECT music.id FROM music WHERE music.id IN (SELECT music.id FROM music WHERE music.genre = 'pop' GROUP BY music.id)",
  6345        "Instructions": {
  6346          "OperatorType": "Subquery",
  6347          "Variant": "PulloutIn",
  6348          "PulloutVars": [
  6349            "__sq_has_values1",
  6350            "__sq1"
  6351          ],
  6352          "Inputs": [
  6353            {
  6354              "OperatorType": "Route",
  6355              "Variant": "Scatter",
  6356              "Keyspace": {
  6357                "Name": "user",
  6358                "Sharded": true
  6359              },
  6360              "FieldQuery": "select music.id from music where 1 != 1 group by music.id",
  6361              "Query": "select music.id from music where music.genre = 'pop' group by music.id",
  6362              "Table": "music"
  6363            },
  6364            {
  6365              "OperatorType": "Route",
  6366              "Variant": "IN",
  6367              "Keyspace": {
  6368                "Name": "user",
  6369                "Sharded": true
  6370              },
  6371              "FieldQuery": "select music.id from music where 1 != 1",
  6372              "Query": "select music.id from music where :__sq_has_values1 = 1 and music.id in ::__vals",
  6373              "Table": "music",
  6374              "Values": [
  6375                ":__sq1"
  6376              ],
  6377              "Vindex": "music_user_map"
  6378            }
  6379          ]
  6380        }
  6381      },
  6382      "gen4-plan": {
  6383        "QueryType": "SELECT",
  6384        "Original": "SELECT music.id FROM music WHERE music.id IN (SELECT music.id FROM music WHERE music.genre = 'pop' GROUP BY music.id)",
  6385        "Instructions": {
  6386          "OperatorType": "Route",
  6387          "Variant": "Scatter",
  6388          "Keyspace": {
  6389            "Name": "user",
  6390            "Sharded": true
  6391          },
  6392          "FieldQuery": "select music.id from music where 1 != 1",
  6393          "Query": "select music.id from music where music.id in (select music.id from music where music.genre = 'pop' group by music.id)",
  6394          "Table": "music"
  6395        },
  6396        "TablesUsed": [
  6397          "user.music"
  6398        ]
  6399      }
  6400    },
  6401    {
  6402      "comment": "Unmergeable scatter subquery with `GROUP BY` on-non vindex column",
  6403      "query": "SELECT music.id FROM music WHERE music.id IN (SELECT music.id FROM music WHERE music.genre = 'pop' GROUP BY music.genre)",
  6404      "v3-plan": "VT12001: unsupported: in scatter query: GROUP BY column must reference column in SELECT list",
  6405      "gen4-plan": {
  6406        "QueryType": "SELECT",
  6407        "Original": "SELECT music.id FROM music WHERE music.id IN (SELECT music.id FROM music WHERE music.genre = 'pop' GROUP BY music.genre)",
  6408        "Instructions": {
  6409          "OperatorType": "Subquery",
  6410          "Variant": "PulloutIn",
  6411          "PulloutVars": [
  6412            "__sq_has_values1",
  6413            "__sq1"
  6414          ],
  6415          "Inputs": [
  6416            {
  6417              "OperatorType": "Aggregate",
  6418              "Variant": "Ordered",
  6419              "Aggregates": "random(0) AS id",
  6420              "GroupBy": "(1|2)",
  6421              "ResultColumns": 1,
  6422              "Inputs": [
  6423                {
  6424                  "OperatorType": "Route",
  6425                  "Variant": "Scatter",
  6426                  "Keyspace": {
  6427                    "Name": "user",
  6428                    "Sharded": true
  6429                  },
  6430                  "FieldQuery": "select music.id, music.genre, weight_string(music.genre) from music where 1 != 1 group by music.genre, weight_string(music.genre)",
  6431                  "OrderBy": "(1|2) ASC",
  6432                  "Query": "select music.id, music.genre, weight_string(music.genre) from music where music.genre = 'pop' group by music.genre, weight_string(music.genre) order by music.genre asc",
  6433                  "Table": "music"
  6434                }
  6435              ]
  6436            },
  6437            {
  6438              "OperatorType": "Route",
  6439              "Variant": "IN",
  6440              "Keyspace": {
  6441                "Name": "user",
  6442                "Sharded": true
  6443              },
  6444              "FieldQuery": "select music.id from music where 1 != 1",
  6445              "Query": "select music.id from music where :__sq_has_values1 = 1 and music.id in ::__vals",
  6446              "Table": "music",
  6447              "Values": [
  6448                ":__sq1"
  6449              ],
  6450              "Vindex": "music_user_map"
  6451            }
  6452          ]
  6453        },
  6454        "TablesUsed": [
  6455          "user.music"
  6456        ]
  6457      }
  6458    },
  6459    {
  6460      "comment": "Unmergeable scatter subquery with LIMIT",
  6461      "query": "SELECT music.id FROM music WHERE music.id IN (SELECT music.id FROM music WHERE music.genre = 'pop' LIMIT 10)",
  6462      "v3-plan": {
  6463        "QueryType": "SELECT",
  6464        "Original": "SELECT music.id FROM music WHERE music.id IN (SELECT music.id FROM music WHERE music.genre = 'pop' LIMIT 10)",
  6465        "Instructions": {
  6466          "OperatorType": "Subquery",
  6467          "Variant": "PulloutIn",
  6468          "PulloutVars": [
  6469            "__sq_has_values1",
  6470            "__sq1"
  6471          ],
  6472          "Inputs": [
  6473            {
  6474              "OperatorType": "Limit",
  6475              "Count": "INT64(10)",
  6476              "Inputs": [
  6477                {
  6478                  "OperatorType": "Route",
  6479                  "Variant": "Scatter",
  6480                  "Keyspace": {
  6481                    "Name": "user",
  6482                    "Sharded": true
  6483                  },
  6484                  "FieldQuery": "select music.id from music where 1 != 1",
  6485                  "Query": "select music.id from music where music.genre = 'pop' limit :__upper_limit",
  6486                  "Table": "music"
  6487                }
  6488              ]
  6489            },
  6490            {
  6491              "OperatorType": "Route",
  6492              "Variant": "IN",
  6493              "Keyspace": {
  6494                "Name": "user",
  6495                "Sharded": true
  6496              },
  6497              "FieldQuery": "select music.id from music where 1 != 1",
  6498              "Query": "select music.id from music where :__sq_has_values1 = 1 and music.id in ::__vals",
  6499              "Table": "music",
  6500              "Values": [
  6501                ":__sq1"
  6502              ],
  6503              "Vindex": "music_user_map"
  6504            }
  6505          ]
  6506        }
  6507      },
  6508      "gen4-plan": {
  6509        "QueryType": "SELECT",
  6510        "Original": "SELECT music.id FROM music WHERE music.id IN (SELECT music.id FROM music WHERE music.genre = 'pop' LIMIT 10)",
  6511        "Instructions": {
  6512          "OperatorType": "Subquery",
  6513          "Variant": "PulloutIn",
  6514          "PulloutVars": [
  6515            "__sq_has_values1",
  6516            "__sq1"
  6517          ],
  6518          "Inputs": [
  6519            {
  6520              "OperatorType": "Limit",
  6521              "Count": "INT64(10)",
  6522              "Inputs": [
  6523                {
  6524                  "OperatorType": "Route",
  6525                  "Variant": "Scatter",
  6526                  "Keyspace": {
  6527                    "Name": "user",
  6528                    "Sharded": true
  6529                  },
  6530                  "FieldQuery": "select music.id from music where 1 != 1",
  6531                  "Query": "select music.id from music where music.genre = 'pop' limit :__upper_limit",
  6532                  "Table": "music"
  6533                }
  6534              ]
  6535            },
  6536            {
  6537              "OperatorType": "Route",
  6538              "Variant": "IN",
  6539              "Keyspace": {
  6540                "Name": "user",
  6541                "Sharded": true
  6542              },
  6543              "FieldQuery": "select music.id from music where 1 != 1",
  6544              "Query": "select music.id from music where :__sq_has_values1 = 1 and music.id in ::__vals",
  6545              "Table": "music",
  6546              "Values": [
  6547                ":__sq1"
  6548              ],
  6549              "Vindex": "music_user_map"
  6550            }
  6551          ]
  6552        },
  6553        "TablesUsed": [
  6554          "user.music"
  6555        ]
  6556      }
  6557    },
  6558    {
  6559      "comment": "Mergeable subquery with `MAX` aggregate and grouped by unique vindex",
  6560      "query": "SELECT music.id FROM music WHERE music.id IN (SELECT MAX(music.id) FROM music WHERE music.user_id IN (5, 6) GROUP BY music.user_id)",
  6561      "v3-plan": {
  6562        "QueryType": "SELECT",
  6563        "Original": "SELECT music.id FROM music WHERE music.id IN (SELECT MAX(music.id) FROM music WHERE music.user_id IN (5, 6) GROUP BY music.user_id)",
  6564        "Instructions": {
  6565          "OperatorType": "Subquery",
  6566          "Variant": "PulloutIn",
  6567          "PulloutVars": [
  6568            "__sq_has_values1",
  6569            "__sq1"
  6570          ],
  6571          "Inputs": [
  6572            {
  6573              "OperatorType": "Route",
  6574              "Variant": "IN",
  6575              "Keyspace": {
  6576                "Name": "user",
  6577                "Sharded": true
  6578              },
  6579              "FieldQuery": "select max(music.id) from music where 1 != 1 group by music.user_id",
  6580              "Query": "select max(music.id) from music where music.user_id in ::__vals group by music.user_id",
  6581              "Table": "music",
  6582              "Values": [
  6583                "(INT64(5), INT64(6))"
  6584              ],
  6585              "Vindex": "user_index"
  6586            },
  6587            {
  6588              "OperatorType": "Route",
  6589              "Variant": "IN",
  6590              "Keyspace": {
  6591                "Name": "user",
  6592                "Sharded": true
  6593              },
  6594              "FieldQuery": "select music.id from music where 1 != 1",
  6595              "Query": "select music.id from music where :__sq_has_values1 = 1 and music.id in ::__vals",
  6596              "Table": "music",
  6597              "Values": [
  6598                ":__sq1"
  6599              ],
  6600              "Vindex": "music_user_map"
  6601            }
  6602          ]
  6603        }
  6604      },
  6605      "gen4-plan": {
  6606        "QueryType": "SELECT",
  6607        "Original": "SELECT music.id FROM music WHERE music.id IN (SELECT MAX(music.id) FROM music WHERE music.user_id IN (5, 6) GROUP BY music.user_id)",
  6608        "Instructions": {
  6609          "OperatorType": "Route",
  6610          "Variant": "IN",
  6611          "Keyspace": {
  6612            "Name": "user",
  6613            "Sharded": true
  6614          },
  6615          "FieldQuery": "select music.id from music where 1 != 1",
  6616          "Query": "select music.id from music where music.id in (select max(music.id) from music where music.user_id in ::__vals group by music.user_id)",
  6617          "Table": "music",
  6618          "Values": [
  6619            "(INT64(5), INT64(6))"
  6620          ],
  6621          "Vindex": "user_index"
  6622        },
  6623        "TablesUsed": [
  6624          "user.music"
  6625        ]
  6626      }
  6627    },
  6628    {
  6629      "comment": "Unmergeable subquery with `MAX` aggregate",
  6630      "query": "SELECT music.id FROM music WHERE music.id IN (SELECT MAX(music.id) FROM music WHERE music.user_id IN (5, 6))",
  6631      "v3-plan": {
  6632        "QueryType": "SELECT",
  6633        "Original": "SELECT music.id FROM music WHERE music.id IN (SELECT MAX(music.id) FROM music WHERE music.user_id IN (5, 6))",
  6634        "Instructions": {
  6635          "OperatorType": "Subquery",
  6636          "Variant": "PulloutIn",
  6637          "PulloutVars": [
  6638            "__sq_has_values1",
  6639            "__sq1"
  6640          ],
  6641          "Inputs": [
  6642            {
  6643              "OperatorType": "Aggregate",
  6644              "Variant": "Scalar",
  6645              "Aggregates": "max(0)",
  6646              "Inputs": [
  6647                {
  6648                  "OperatorType": "Route",
  6649                  "Variant": "IN",
  6650                  "Keyspace": {
  6651                    "Name": "user",
  6652                    "Sharded": true
  6653                  },
  6654                  "FieldQuery": "select max(music.id) from music where 1 != 1",
  6655                  "Query": "select max(music.id) from music where music.user_id in ::__vals",
  6656                  "Table": "music",
  6657                  "Values": [
  6658                    "(INT64(5), INT64(6))"
  6659                  ],
  6660                  "Vindex": "user_index"
  6661                }
  6662              ]
  6663            },
  6664            {
  6665              "OperatorType": "Route",
  6666              "Variant": "IN",
  6667              "Keyspace": {
  6668                "Name": "user",
  6669                "Sharded": true
  6670              },
  6671              "FieldQuery": "select music.id from music where 1 != 1",
  6672              "Query": "select music.id from music where :__sq_has_values1 = 1 and music.id in ::__vals",
  6673              "Table": "music",
  6674              "Values": [
  6675                ":__sq1"
  6676              ],
  6677              "Vindex": "music_user_map"
  6678            }
  6679          ]
  6680        }
  6681      },
  6682      "gen4-plan": {
  6683        "QueryType": "SELECT",
  6684        "Original": "SELECT music.id FROM music WHERE music.id IN (SELECT MAX(music.id) FROM music WHERE music.user_id IN (5, 6))",
  6685        "Instructions": {
  6686          "OperatorType": "Subquery",
  6687          "Variant": "PulloutIn",
  6688          "PulloutVars": [
  6689            "__sq_has_values1",
  6690            "__sq1"
  6691          ],
  6692          "Inputs": [
  6693            {
  6694              "OperatorType": "Aggregate",
  6695              "Variant": "Scalar",
  6696              "Aggregates": "max(0) AS max(music.id)",
  6697              "Inputs": [
  6698                {
  6699                  "OperatorType": "Route",
  6700                  "Variant": "IN",
  6701                  "Keyspace": {
  6702                    "Name": "user",
  6703                    "Sharded": true
  6704                  },
  6705                  "FieldQuery": "select max(music.id) from music where 1 != 1",
  6706                  "Query": "select max(music.id) from music where music.user_id in ::__vals",
  6707                  "Table": "music",
  6708                  "Values": [
  6709                    "(INT64(5), INT64(6))"
  6710                  ],
  6711                  "Vindex": "user_index"
  6712                }
  6713              ]
  6714            },
  6715            {
  6716              "OperatorType": "Route",
  6717              "Variant": "IN",
  6718              "Keyspace": {
  6719                "Name": "user",
  6720                "Sharded": true
  6721              },
  6722              "FieldQuery": "select music.id from music where 1 != 1",
  6723              "Query": "select music.id from music where :__sq_has_values1 = 1 and music.id in ::__vals",
  6724              "Table": "music",
  6725              "Values": [
  6726                ":__sq1"
  6727              ],
  6728              "Vindex": "music_user_map"
  6729            }
  6730          ]
  6731        },
  6732        "TablesUsed": [
  6733          "user.music"
  6734        ]
  6735      }
  6736    },
  6737    {
  6738      "comment": "Mergeable subquery with `MAX` aggregate with `EqualUnique` route operator",
  6739      "query": "SELECT music.id FROM music WHERE music.id IN (SELECT MAX(music.id) FROM music WHERE music.user_id = 5)",
  6740      "v3-plan": {
  6741        "QueryType": "SELECT",
  6742        "Original": "SELECT music.id FROM music WHERE music.id IN (SELECT MAX(music.id) FROM music WHERE music.user_id = 5)",
  6743        "Instructions": {
  6744          "OperatorType": "Subquery",
  6745          "Variant": "PulloutIn",
  6746          "PulloutVars": [
  6747            "__sq_has_values1",
  6748            "__sq1"
  6749          ],
  6750          "Inputs": [
  6751            {
  6752              "OperatorType": "Route",
  6753              "Variant": "EqualUnique",
  6754              "Keyspace": {
  6755                "Name": "user",
  6756                "Sharded": true
  6757              },
  6758              "FieldQuery": "select max(music.id) from music where 1 != 1",
  6759              "Query": "select max(music.id) from music where music.user_id = 5",
  6760              "Table": "music",
  6761              "Values": [
  6762                "INT64(5)"
  6763              ],
  6764              "Vindex": "user_index"
  6765            },
  6766            {
  6767              "OperatorType": "Route",
  6768              "Variant": "IN",
  6769              "Keyspace": {
  6770                "Name": "user",
  6771                "Sharded": true
  6772              },
  6773              "FieldQuery": "select music.id from music where 1 != 1",
  6774              "Query": "select music.id from music where :__sq_has_values1 = 1 and music.id in ::__vals",
  6775              "Table": "music",
  6776              "Values": [
  6777                ":__sq1"
  6778              ],
  6779              "Vindex": "music_user_map"
  6780            }
  6781          ]
  6782        }
  6783      },
  6784      "gen4-plan": {
  6785        "QueryType": "SELECT",
  6786        "Original": "SELECT music.id FROM music WHERE music.id IN (SELECT MAX(music.id) FROM music WHERE music.user_id = 5)",
  6787        "Instructions": {
  6788          "OperatorType": "Subquery",
  6789          "Variant": "PulloutIn",
  6790          "PulloutVars": [
  6791            "__sq_has_values1",
  6792            "__sq1"
  6793          ],
  6794          "Inputs": [
  6795            {
  6796              "OperatorType": "Route",
  6797              "Variant": "EqualUnique",
  6798              "Keyspace": {
  6799                "Name": "user",
  6800                "Sharded": true
  6801              },
  6802              "FieldQuery": "select max(music.id) from music where 1 != 1",
  6803              "Query": "select max(music.id) from music where music.user_id = 5",
  6804              "Table": "music",
  6805              "Values": [
  6806                "INT64(5)"
  6807              ],
  6808              "Vindex": "user_index"
  6809            },
  6810            {
  6811              "OperatorType": "Route",
  6812              "Variant": "IN",
  6813              "Keyspace": {
  6814                "Name": "user",
  6815                "Sharded": true
  6816              },
  6817              "FieldQuery": "select music.id from music where 1 != 1",
  6818              "Query": "select music.id from music where :__sq_has_values1 = 1 and music.id in ::__vals",
  6819              "Table": "music",
  6820              "Values": [
  6821                ":__sq1"
  6822              ],
  6823              "Vindex": "music_user_map"
  6824            }
  6825          ]
  6826        },
  6827        "TablesUsed": [
  6828          "user.music"
  6829        ]
  6830      }
  6831    },
  6832    {
  6833      "comment": "Mergeable subquery with `LIMIT` due to `EqualUnique` route",
  6834      "query": "SELECT music.id FROM music WHERE music.id IN (SELECT MAX(music.id) FROM music WHERE music.user_id = 5 LIMIT 10)",
  6835      "v3-plan": {
  6836        "QueryType": "SELECT",
  6837        "Original": "SELECT music.id FROM music WHERE music.id IN (SELECT MAX(music.id) FROM music WHERE music.user_id = 5 LIMIT 10)",
  6838        "Instructions": {
  6839          "OperatorType": "Subquery",
  6840          "Variant": "PulloutIn",
  6841          "PulloutVars": [
  6842            "__sq_has_values1",
  6843            "__sq1"
  6844          ],
  6845          "Inputs": [
  6846            {
  6847              "OperatorType": "Route",
  6848              "Variant": "EqualUnique",
  6849              "Keyspace": {
  6850                "Name": "user",
  6851                "Sharded": true
  6852              },
  6853              "FieldQuery": "select max(music.id) from music where 1 != 1",
  6854              "Query": "select max(music.id) from music where music.user_id = 5 limit 10",
  6855              "Table": "music",
  6856              "Values": [
  6857                "INT64(5)"
  6858              ],
  6859              "Vindex": "user_index"
  6860            },
  6861            {
  6862              "OperatorType": "Route",
  6863              "Variant": "IN",
  6864              "Keyspace": {
  6865                "Name": "user",
  6866                "Sharded": true
  6867              },
  6868              "FieldQuery": "select music.id from music where 1 != 1",
  6869              "Query": "select music.id from music where :__sq_has_values1 = 1 and music.id in ::__vals",
  6870              "Table": "music",
  6871              "Values": [
  6872                ":__sq1"
  6873              ],
  6874              "Vindex": "music_user_map"
  6875            }
  6876          ]
  6877        }
  6878      },
  6879      "gen4-plan": {
  6880        "QueryType": "SELECT",
  6881        "Original": "SELECT music.id FROM music WHERE music.id IN (SELECT MAX(music.id) FROM music WHERE music.user_id = 5 LIMIT 10)",
  6882        "Instructions": {
  6883          "OperatorType": "Subquery",
  6884          "Variant": "PulloutIn",
  6885          "PulloutVars": [
  6886            "__sq_has_values1",
  6887            "__sq1"
  6888          ],
  6889          "Inputs": [
  6890            {
  6891              "OperatorType": "Route",
  6892              "Variant": "EqualUnique",
  6893              "Keyspace": {
  6894                "Name": "user",
  6895                "Sharded": true
  6896              },
  6897              "FieldQuery": "select max(music.id) from music where 1 != 1",
  6898              "Query": "select max(music.id) from music where music.user_id = 5 limit 10",
  6899              "Table": "music",
  6900              "Values": [
  6901                "INT64(5)"
  6902              ],
  6903              "Vindex": "user_index"
  6904            },
  6905            {
  6906              "OperatorType": "Route",
  6907              "Variant": "IN",
  6908              "Keyspace": {
  6909                "Name": "user",
  6910                "Sharded": true
  6911              },
  6912              "FieldQuery": "select music.id from music where 1 != 1",
  6913              "Query": "select music.id from music where :__sq_has_values1 = 1 and music.id in ::__vals",
  6914              "Table": "music",
  6915              "Values": [
  6916                ":__sq1"
  6917              ],
  6918              "Vindex": "music_user_map"
  6919            }
  6920          ]
  6921        },
  6922        "TablesUsed": [
  6923          "user.music"
  6924        ]
  6925      }
  6926    },
  6927    {
  6928      "comment": "Mergeable subquery with multiple levels of derived statements",
  6929      "query": "SELECT music.id FROM music WHERE music.id IN (SELECT * FROM (SELECT * FROM (SELECT music.id FROM music WHERE music.user_id = 5 LIMIT 10) subquery_for_limit) subquery_for_limit)",
  6930      "v3-plan": {
  6931        "QueryType": "SELECT",
  6932        "Original": "SELECT music.id FROM music WHERE music.id IN (SELECT * FROM (SELECT * FROM (SELECT music.id FROM music WHERE music.user_id = 5 LIMIT 10) subquery_for_limit) subquery_for_limit)",
  6933        "Instructions": {
  6934          "OperatorType": "Subquery",
  6935          "Variant": "PulloutIn",
  6936          "PulloutVars": [
  6937            "__sq_has_values1",
  6938            "__sq1"
  6939          ],
  6940          "Inputs": [
  6941            {
  6942              "OperatorType": "Route",
  6943              "Variant": "EqualUnique",
  6944              "Keyspace": {
  6945                "Name": "user",
  6946                "Sharded": true
  6947              },
  6948              "FieldQuery": "select * from (select * from (select music.id from music where 1 != 1) as subquery_for_limit where 1 != 1) as subquery_for_limit where 1 != 1",
  6949              "Query": "select * from (select * from (select music.id from music where music.user_id = 5 limit 10) as subquery_for_limit) as subquery_for_limit",
  6950              "Table": "music",
  6951              "Values": [
  6952                "INT64(5)"
  6953              ],
  6954              "Vindex": "user_index"
  6955            },
  6956            {
  6957              "OperatorType": "Route",
  6958              "Variant": "IN",
  6959              "Keyspace": {
  6960                "Name": "user",
  6961                "Sharded": true
  6962              },
  6963              "FieldQuery": "select music.id from music where 1 != 1",
  6964              "Query": "select music.id from music where :__sq_has_values1 = 1 and music.id in ::__vals",
  6965              "Table": "music",
  6966              "Values": [
  6967                ":__sq1"
  6968              ],
  6969              "Vindex": "music_user_map"
  6970            }
  6971          ]
  6972        }
  6973      },
  6974      "gen4-plan": {
  6975        "QueryType": "SELECT",
  6976        "Original": "SELECT music.id FROM music WHERE music.id IN (SELECT * FROM (SELECT * FROM (SELECT music.id FROM music WHERE music.user_id = 5 LIMIT 10) subquery_for_limit) subquery_for_limit)",
  6977        "Instructions": {
  6978          "OperatorType": "Route",
  6979          "Variant": "EqualUnique",
  6980          "Keyspace": {
  6981            "Name": "user",
  6982            "Sharded": true
  6983          },
  6984          "FieldQuery": "select music.id from music where 1 != 1",
  6985          "Query": "select music.id from music where music.id in (select subquery_for_limit.id from (select subquery_for_limit.id from (select music.id from music where music.user_id = 5 limit 10) as subquery_for_limit) as subquery_for_limit)",
  6986          "Table": "music",
  6987          "Values": [
  6988            "INT64(5)"
  6989          ],
  6990          "Vindex": "user_index"
  6991        },
  6992        "TablesUsed": [
  6993          "user.music"
  6994        ]
  6995      }
  6996    },
  6997    {
  6998      "comment": "Mergeable subquery with multiple levels of derived statements, using a single value `IN` predicate",
  6999      "query": "SELECT music.id FROM music WHERE music.id IN (SELECT * FROM (SELECT * FROM (SELECT music.id FROM music WHERE music.user_id IN (5) LIMIT 10) subquery_for_limit) subquery_for_limit)",
  7000      "v3-plan": {
  7001        "QueryType": "SELECT",
  7002        "Original": "SELECT music.id FROM music WHERE music.id IN (SELECT * FROM (SELECT * FROM (SELECT music.id FROM music WHERE music.user_id IN (5) LIMIT 10) subquery_for_limit) subquery_for_limit)",
  7003        "Instructions": {
  7004          "OperatorType": "Subquery",
  7005          "Variant": "PulloutIn",
  7006          "PulloutVars": [
  7007            "__sq_has_values1",
  7008            "__sq1"
  7009          ],
  7010          "Inputs": [
  7011            {
  7012              "OperatorType": "SimpleProjection",
  7013              "Columns": [
  7014                0
  7015              ],
  7016              "Inputs": [
  7017                {
  7018                  "OperatorType": "SimpleProjection",
  7019                  "Columns": [
  7020                    0
  7021                  ],
  7022                  "Inputs": [
  7023                    {
  7024                      "OperatorType": "Limit",
  7025                      "Count": "INT64(10)",
  7026                      "Inputs": [
  7027                        {
  7028                          "OperatorType": "Route",
  7029                          "Variant": "IN",
  7030                          "Keyspace": {
  7031                            "Name": "user",
  7032                            "Sharded": true
  7033                          },
  7034                          "FieldQuery": "select music.id from music where 1 != 1",
  7035                          "Query": "select music.id from music where music.user_id in ::__vals limit :__upper_limit",
  7036                          "Table": "music",
  7037                          "Values": [
  7038                            "(INT64(5))"
  7039                          ],
  7040                          "Vindex": "user_index"
  7041                        }
  7042                      ]
  7043                    }
  7044                  ]
  7045                }
  7046              ]
  7047            },
  7048            {
  7049              "OperatorType": "Route",
  7050              "Variant": "IN",
  7051              "Keyspace": {
  7052                "Name": "user",
  7053                "Sharded": true
  7054              },
  7055              "FieldQuery": "select music.id from music where 1 != 1",
  7056              "Query": "select music.id from music where :__sq_has_values1 = 1 and music.id in ::__vals",
  7057              "Table": "music",
  7058              "Values": [
  7059                ":__sq1"
  7060              ],
  7061              "Vindex": "music_user_map"
  7062            }
  7063          ]
  7064        }
  7065      },
  7066      "gen4-plan": {
  7067        "QueryType": "SELECT",
  7068        "Original": "SELECT music.id FROM music WHERE music.id IN (SELECT * FROM (SELECT * FROM (SELECT music.id FROM music WHERE music.user_id IN (5) LIMIT 10) subquery_for_limit) subquery_for_limit)",
  7069        "Instructions": {
  7070          "OperatorType": "Route",
  7071          "Variant": "EqualUnique",
  7072          "Keyspace": {
  7073            "Name": "user",
  7074            "Sharded": true
  7075          },
  7076          "FieldQuery": "select music.id from music where 1 != 1",
  7077          "Query": "select music.id from music where music.id in (select subquery_for_limit.id from (select subquery_for_limit.id from (select music.id from music where music.user_id in (5) limit 10) as subquery_for_limit) as subquery_for_limit)",
  7078          "Table": "music",
  7079          "Values": [
  7080            "INT64(5)"
  7081          ],
  7082          "Vindex": "user_index"
  7083        },
  7084        "TablesUsed": [
  7085          "user.music"
  7086        ]
  7087      }
  7088    },
  7089    {
  7090      "comment": "Unmergeable subquery with multiple levels of derived statements, using a multi value `IN` predicate",
  7091      "query": "SELECT music.id FROM music WHERE music.id IN (SELECT * FROM (SELECT * FROM (SELECT music.id FROM music WHERE music.user_id IN (5, 6) LIMIT 10) subquery_for_limit) subquery_for_limit)",
  7092      "v3-plan": {
  7093        "QueryType": "SELECT",
  7094        "Original": "SELECT music.id FROM music WHERE music.id IN (SELECT * FROM (SELECT * FROM (SELECT music.id FROM music WHERE music.user_id IN (5, 6) LIMIT 10) subquery_for_limit) subquery_for_limit)",
  7095        "Instructions": {
  7096          "OperatorType": "Subquery",
  7097          "Variant": "PulloutIn",
  7098          "PulloutVars": [
  7099            "__sq_has_values1",
  7100            "__sq1"
  7101          ],
  7102          "Inputs": [
  7103            {
  7104              "OperatorType": "SimpleProjection",
  7105              "Columns": [
  7106                0
  7107              ],
  7108              "Inputs": [
  7109                {
  7110                  "OperatorType": "SimpleProjection",
  7111                  "Columns": [
  7112                    0
  7113                  ],
  7114                  "Inputs": [
  7115                    {
  7116                      "OperatorType": "Limit",
  7117                      "Count": "INT64(10)",
  7118                      "Inputs": [
  7119                        {
  7120                          "OperatorType": "Route",
  7121                          "Variant": "IN",
  7122                          "Keyspace": {
  7123                            "Name": "user",
  7124                            "Sharded": true
  7125                          },
  7126                          "FieldQuery": "select music.id from music where 1 != 1",
  7127                          "Query": "select music.id from music where music.user_id in ::__vals limit :__upper_limit",
  7128                          "Table": "music",
  7129                          "Values": [
  7130                            "(INT64(5), INT64(6))"
  7131                          ],
  7132                          "Vindex": "user_index"
  7133                        }
  7134                      ]
  7135                    }
  7136                  ]
  7137                }
  7138              ]
  7139            },
  7140            {
  7141              "OperatorType": "Route",
  7142              "Variant": "IN",
  7143              "Keyspace": {
  7144                "Name": "user",
  7145                "Sharded": true
  7146              },
  7147              "FieldQuery": "select music.id from music where 1 != 1",
  7148              "Query": "select music.id from music where :__sq_has_values1 = 1 and music.id in ::__vals",
  7149              "Table": "music",
  7150              "Values": [
  7151                ":__sq1"
  7152              ],
  7153              "Vindex": "music_user_map"
  7154            }
  7155          ]
  7156        }
  7157      },
  7158      "gen4-plan": {
  7159        "QueryType": "SELECT",
  7160        "Original": "SELECT music.id FROM music WHERE music.id IN (SELECT * FROM (SELECT * FROM (SELECT music.id FROM music WHERE music.user_id IN (5, 6) LIMIT 10) subquery_for_limit) subquery_for_limit)",
  7161        "Instructions": {
  7162          "OperatorType": "Subquery",
  7163          "Variant": "PulloutIn",
  7164          "PulloutVars": [
  7165            "__sq_has_values1",
  7166            "__sq1"
  7167          ],
  7168          "Inputs": [
  7169            {
  7170              "OperatorType": "SimpleProjection",
  7171              "Columns": [
  7172                0
  7173              ],
  7174              "Inputs": [
  7175                {
  7176                  "OperatorType": "Limit",
  7177                  "Count": "INT64(10)",
  7178                  "Inputs": [
  7179                    {
  7180                      "OperatorType": "Route",
  7181                      "Variant": "IN",
  7182                      "Keyspace": {
  7183                        "Name": "user",
  7184                        "Sharded": true
  7185                      },
  7186                      "FieldQuery": "select music.id from music where 1 != 1",
  7187                      "Query": "select music.id from music where music.user_id in ::__vals limit :__upper_limit",
  7188                      "Table": "music",
  7189                      "Values": [
  7190                        "(INT64(5), INT64(6))"
  7191                      ],
  7192                      "Vindex": "user_index"
  7193                    }
  7194                  ]
  7195                }
  7196              ]
  7197            },
  7198            {
  7199              "OperatorType": "Route",
  7200              "Variant": "IN",
  7201              "Keyspace": {
  7202                "Name": "user",
  7203                "Sharded": true
  7204              },
  7205              "FieldQuery": "select music.id from music where 1 != 1",
  7206              "Query": "select music.id from music where :__sq_has_values1 = 1 and music.id in ::__vals",
  7207              "Table": "music",
  7208              "Values": [
  7209                ":__sq1"
  7210              ],
  7211              "Vindex": "music_user_map"
  7212            }
  7213          ]
  7214        },
  7215        "TablesUsed": [
  7216          "user.music"
  7217        ]
  7218      }
  7219    },
  7220    {
  7221      "comment": "Unmergeable subquery with multiple levels of derived statements",
  7222      "query": "SELECT music.id FROM music WHERE music.id IN (SELECT * FROM (SELECT * FROM (SELECT music.id FROM music LIMIT 10) subquery_for_limit) subquery_for_limit)",
  7223      "v3-plan": {
  7224        "QueryType": "SELECT",
  7225        "Original": "SELECT music.id FROM music WHERE music.id IN (SELECT * FROM (SELECT * FROM (SELECT music.id FROM music LIMIT 10) subquery_for_limit) subquery_for_limit)",
  7226        "Instructions": {
  7227          "OperatorType": "Subquery",
  7228          "Variant": "PulloutIn",
  7229          "PulloutVars": [
  7230            "__sq_has_values1",
  7231            "__sq1"
  7232          ],
  7233          "Inputs": [
  7234            {
  7235              "OperatorType": "SimpleProjection",
  7236              "Columns": [
  7237                0
  7238              ],
  7239              "Inputs": [
  7240                {
  7241                  "OperatorType": "SimpleProjection",
  7242                  "Columns": [
  7243                    0
  7244                  ],
  7245                  "Inputs": [
  7246                    {
  7247                      "OperatorType": "Limit",
  7248                      "Count": "INT64(10)",
  7249                      "Inputs": [
  7250                        {
  7251                          "OperatorType": "Route",
  7252                          "Variant": "Scatter",
  7253                          "Keyspace": {
  7254                            "Name": "user",
  7255                            "Sharded": true
  7256                          },
  7257                          "FieldQuery": "select music.id from music where 1 != 1",
  7258                          "Query": "select music.id from music limit :__upper_limit",
  7259                          "Table": "music"
  7260                        }
  7261                      ]
  7262                    }
  7263                  ]
  7264                }
  7265              ]
  7266            },
  7267            {
  7268              "OperatorType": "Route",
  7269              "Variant": "IN",
  7270              "Keyspace": {
  7271                "Name": "user",
  7272                "Sharded": true
  7273              },
  7274              "FieldQuery": "select music.id from music where 1 != 1",
  7275              "Query": "select music.id from music where :__sq_has_values1 = 1 and music.id in ::__vals",
  7276              "Table": "music",
  7277              "Values": [
  7278                ":__sq1"
  7279              ],
  7280              "Vindex": "music_user_map"
  7281            }
  7282          ]
  7283        }
  7284      },
  7285      "gen4-plan": {
  7286        "QueryType": "SELECT",
  7287        "Original": "SELECT music.id FROM music WHERE music.id IN (SELECT * FROM (SELECT * FROM (SELECT music.id FROM music LIMIT 10) subquery_for_limit) subquery_for_limit)",
  7288        "Instructions": {
  7289          "OperatorType": "Subquery",
  7290          "Variant": "PulloutIn",
  7291          "PulloutVars": [
  7292            "__sq_has_values1",
  7293            "__sq1"
  7294          ],
  7295          "Inputs": [
  7296            {
  7297              "OperatorType": "SimpleProjection",
  7298              "Columns": [
  7299                0
  7300              ],
  7301              "Inputs": [
  7302                {
  7303                  "OperatorType": "Limit",
  7304                  "Count": "INT64(10)",
  7305                  "Inputs": [
  7306                    {
  7307                      "OperatorType": "Route",
  7308                      "Variant": "Scatter",
  7309                      "Keyspace": {
  7310                        "Name": "user",
  7311                        "Sharded": true
  7312                      },
  7313                      "FieldQuery": "select music.id from music where 1 != 1",
  7314                      "Query": "select music.id from music limit :__upper_limit",
  7315                      "Table": "music"
  7316                    }
  7317                  ]
  7318                }
  7319              ]
  7320            },
  7321            {
  7322              "OperatorType": "Route",
  7323              "Variant": "IN",
  7324              "Keyspace": {
  7325                "Name": "user",
  7326                "Sharded": true
  7327              },
  7328              "FieldQuery": "select music.id from music where 1 != 1",
  7329              "Query": "select music.id from music where :__sq_has_values1 = 1 and music.id in ::__vals",
  7330              "Table": "music",
  7331              "Values": [
  7332                ":__sq1"
  7333              ],
  7334              "Vindex": "music_user_map"
  7335            }
  7336          ]
  7337        },
  7338        "TablesUsed": [
  7339          "user.music"
  7340        ]
  7341      }
  7342    },
  7343    {
  7344      "comment": "`None` subquery as top level predicate - outer query changes from `Scatter` to `None` on merge",
  7345      "query": "SELECT music.id FROM music WHERE music.id IN (SELECT music.id FROM music WHERE music.user_id IN (NULL))",
  7346      "v3-plan": {
  7347        "QueryType": "SELECT",
  7348        "Original": "SELECT music.id FROM music WHERE music.id IN (SELECT music.id FROM music WHERE music.user_id IN (NULL))",
  7349        "Instructions": {
  7350          "OperatorType": "Subquery",
  7351          "Variant": "PulloutIn",
  7352          "PulloutVars": [
  7353            "__sq_has_values1",
  7354            "__sq1"
  7355          ],
  7356          "Inputs": [
  7357            {
  7358              "OperatorType": "Route",
  7359              "Variant": "None",
  7360              "Keyspace": {
  7361                "Name": "user",
  7362                "Sharded": true
  7363              },
  7364              "FieldQuery": "select music.id from music where 1 != 1",
  7365              "Query": "select music.id from music where music.user_id in (null)",
  7366              "Table": "music"
  7367            },
  7368            {
  7369              "OperatorType": "Route",
  7370              "Variant": "IN",
  7371              "Keyspace": {
  7372                "Name": "user",
  7373                "Sharded": true
  7374              },
  7375              "FieldQuery": "select music.id from music where 1 != 1",
  7376              "Query": "select music.id from music where :__sq_has_values1 = 1 and music.id in ::__vals",
  7377              "Table": "music",
  7378              "Values": [
  7379                ":__sq1"
  7380              ],
  7381              "Vindex": "music_user_map"
  7382            }
  7383          ]
  7384        }
  7385      },
  7386      "gen4-plan": {
  7387        "QueryType": "SELECT",
  7388        "Original": "SELECT music.id FROM music WHERE music.id IN (SELECT music.id FROM music WHERE music.user_id IN (NULL))",
  7389        "Instructions": {
  7390          "OperatorType": "Route",
  7391          "Variant": "None",
  7392          "Keyspace": {
  7393            "Name": "user",
  7394            "Sharded": true
  7395          },
  7396          "FieldQuery": "select music.id from music where 1 != 1",
  7397          "Query": "select music.id from music where music.id in (select music.id from music where music.user_id in (null))",
  7398          "Table": "music"
  7399        },
  7400        "TablesUsed": [
  7401          "user.music"
  7402        ]
  7403      }
  7404    },
  7405    {
  7406      "comment": "`None` subquery as top level predicate - outer query changes from `EqualUnique` to `None` on merge",
  7407      "query": "SELECT music.id FROM music WHERE music.id IN (SELECT music.id FROM music WHERE music.user_id IN (NULL)) AND music.user_id = 5",
  7408      "v3-plan": {
  7409        "QueryType": "SELECT",
  7410        "Original": "SELECT music.id FROM music WHERE music.id IN (SELECT music.id FROM music WHERE music.user_id IN (NULL)) AND music.user_id = 5",
  7411        "Instructions": {
  7412          "OperatorType": "Subquery",
  7413          "Variant": "PulloutIn",
  7414          "PulloutVars": [
  7415            "__sq_has_values1",
  7416            "__sq1"
  7417          ],
  7418          "Inputs": [
  7419            {
  7420              "OperatorType": "Route",
  7421              "Variant": "None",
  7422              "Keyspace": {
  7423                "Name": "user",
  7424                "Sharded": true
  7425              },
  7426              "FieldQuery": "select music.id from music where 1 != 1",
  7427              "Query": "select music.id from music where music.user_id in (null)",
  7428              "Table": "music"
  7429            },
  7430            {
  7431              "OperatorType": "Route",
  7432              "Variant": "EqualUnique",
  7433              "Keyspace": {
  7434                "Name": "user",
  7435                "Sharded": true
  7436              },
  7437              "FieldQuery": "select music.id from music where 1 != 1",
  7438              "Query": "select music.id from music where music.user_id = 5 and :__sq_has_values1 = 1 and music.id in ::__sq1",
  7439              "Table": "music",
  7440              "Values": [
  7441                "INT64(5)"
  7442              ],
  7443              "Vindex": "user_index"
  7444            }
  7445          ]
  7446        }
  7447      },
  7448      "gen4-plan": {
  7449        "QueryType": "SELECT",
  7450        "Original": "SELECT music.id FROM music WHERE music.id IN (SELECT music.id FROM music WHERE music.user_id IN (NULL)) AND music.user_id = 5",
  7451        "Instructions": {
  7452          "OperatorType": "Route",
  7453          "Variant": "None",
  7454          "Keyspace": {
  7455            "Name": "user",
  7456            "Sharded": true
  7457          },
  7458          "FieldQuery": "select music.id from music where 1 != 1",
  7459          "Query": "select music.id from music where music.id in (select music.id from music where music.user_id in (null)) and music.user_id = 5",
  7460          "Table": "music"
  7461        },
  7462        "TablesUsed": [
  7463          "user.music"
  7464        ]
  7465      }
  7466    },
  7467    {
  7468      "comment": "`None` subquery nested inside `OR` expression - outer query keeps routing information",
  7469      "query": "SELECT music.id FROM music WHERE (music.id IN (SELECT music.id FROM music WHERE music.user_id IN (NULL)) OR music.user_id = 5)",
  7470      "v3-plan": {
  7471        "QueryType": "SELECT",
  7472        "Original": "SELECT music.id FROM music WHERE (music.id IN (SELECT music.id FROM music WHERE music.user_id IN (NULL)) OR music.user_id = 5)",
  7473        "Instructions": {
  7474          "OperatorType": "Subquery",
  7475          "Variant": "PulloutIn",
  7476          "PulloutVars": [
  7477            "__sq_has_values1",
  7478            "__sq1"
  7479          ],
  7480          "Inputs": [
  7481            {
  7482              "OperatorType": "Route",
  7483              "Variant": "None",
  7484              "Keyspace": {
  7485                "Name": "user",
  7486                "Sharded": true
  7487              },
  7488              "FieldQuery": "select music.id from music where 1 != 1",
  7489              "Query": "select music.id from music where music.user_id in (null)",
  7490              "Table": "music"
  7491            },
  7492            {
  7493              "OperatorType": "Route",
  7494              "Variant": "Scatter",
  7495              "Keyspace": {
  7496                "Name": "user",
  7497                "Sharded": true
  7498              },
  7499              "FieldQuery": "select music.id from music where 1 != 1",
  7500              "Query": "select music.id from music where :__sq_has_values1 = 1 and music.id in ::__sq1 or music.user_id = 5",
  7501              "Table": "music"
  7502            }
  7503          ]
  7504        }
  7505      },
  7506      "gen4-plan": {
  7507        "QueryType": "SELECT",
  7508        "Original": "SELECT music.id FROM music WHERE (music.id IN (SELECT music.id FROM music WHERE music.user_id IN (NULL)) OR music.user_id = 5)",
  7509        "Instructions": {
  7510          "OperatorType": "Route",
  7511          "Variant": "Scatter",
  7512          "Keyspace": {
  7513            "Name": "user",
  7514            "Sharded": true
  7515          },
  7516          "FieldQuery": "select music.id from music where 1 != 1",
  7517          "Query": "select music.id from music where music.id in (select music.id from music where music.user_id in (null)) or music.user_id = 5",
  7518          "Table": "music"
  7519        },
  7520        "TablesUsed": [
  7521          "user.music"
  7522        ]
  7523      }
  7524    },
  7525    {
  7526      "comment": "Joining with a subquery that uses an aggregate column and an `EqualUnique` route can be merged together",
  7527      "query": "SELECT music.id FROM music INNER JOIN (SELECT MAX(id) as maxt FROM music WHERE music.user_id = 5) other ON other.maxt = music.id",
  7528      "v3-plan": {
  7529        "QueryType": "SELECT",
  7530        "Original": "SELECT music.id FROM music INNER JOIN (SELECT MAX(id) as maxt FROM music WHERE music.user_id = 5) other ON other.maxt = music.id",
  7531        "Instructions": {
  7532          "OperatorType": "Join",
  7533          "Variant": "Join",
  7534          "JoinColumnIndexes": "L:0",
  7535          "JoinVars": {
  7536            "music_id": 0
  7537          },
  7538          "TableName": "music_music",
  7539          "Inputs": [
  7540            {
  7541              "OperatorType": "Route",
  7542              "Variant": "Scatter",
  7543              "Keyspace": {
  7544                "Name": "user",
  7545                "Sharded": true
  7546              },
  7547              "FieldQuery": "select music.id from music where 1 != 1",
  7548              "Query": "select music.id from music",
  7549              "Table": "music"
  7550            },
  7551            {
  7552              "OperatorType": "Route",
  7553              "Variant": "EqualUnique",
  7554              "Keyspace": {
  7555                "Name": "user",
  7556                "Sharded": true
  7557              },
  7558              "FieldQuery": "select 1 from (select max(id) as maxt from music where 1 != 1) as other where 1 != 1",
  7559              "Query": "select 1 from (select max(id) as maxt from music where music.user_id = 5) as other where other.maxt = :music_id",
  7560              "Table": "music",
  7561              "Values": [
  7562                "INT64(5)"
  7563              ],
  7564              "Vindex": "user_index"
  7565            }
  7566          ]
  7567        }
  7568      },
  7569      "gen4-plan": {
  7570        "QueryType": "SELECT",
  7571        "Original": "SELECT music.id FROM music INNER JOIN (SELECT MAX(id) as maxt FROM music WHERE music.user_id = 5) other ON other.maxt = music.id",
  7572        "Instructions": {
  7573          "OperatorType": "Route",
  7574          "Variant": "EqualUnique",
  7575          "Keyspace": {
  7576            "Name": "user",
  7577            "Sharded": true
  7578          },
  7579          "FieldQuery": "select music.id from music, (select max(id) as maxt from music where 1 != 1) as other where 1 != 1",
  7580          "Query": "select music.id from music, (select max(id) as maxt from music where music.user_id = 5) as other where other.maxt = music.id",
  7581          "Table": "music",
  7582          "Values": [
  7583            "INT64(5)"
  7584          ],
  7585          "Vindex": "user_index"
  7586        },
  7587        "TablesUsed": [
  7588          "user.music"
  7589        ]
  7590      }
  7591    },
  7592    {
  7593      "comment": "Joining with a subquery that uses an `EqualUnique` route can be merged",
  7594      "query": "SELECT music.id FROM music INNER JOIN (SELECT id FROM music WHERE music.user_id = 5) other ON other.id = music.id",
  7595      "v3-plan": {
  7596        "QueryType": "SELECT",
  7597        "Original": "SELECT music.id FROM music INNER JOIN (SELECT id FROM music WHERE music.user_id = 5) other ON other.id = music.id",
  7598        "Instructions": {
  7599          "OperatorType": "Route",
  7600          "Variant": "Scatter",
  7601          "Keyspace": {
  7602            "Name": "user",
  7603            "Sharded": true
  7604          },
  7605          "FieldQuery": "select music.id from music join (select id from music where 1 != 1) as other on other.id = music.id where 1 != 1",
  7606          "Query": "select music.id from music join (select id from music where music.user_id = 5) as other on other.id = music.id",
  7607          "Table": "music"
  7608        }
  7609      },
  7610      "gen4-plan": {
  7611        "QueryType": "SELECT",
  7612        "Original": "SELECT music.id FROM music INNER JOIN (SELECT id FROM music WHERE music.user_id = 5) other ON other.id = music.id",
  7613        "Instructions": {
  7614          "OperatorType": "Route",
  7615          "Variant": "EqualUnique",
  7616          "Keyspace": {
  7617            "Name": "user",
  7618            "Sharded": true
  7619          },
  7620          "FieldQuery": "select music.id from music, (select id from music where 1 != 1) as other where 1 != 1",
  7621          "Query": "select music.id from music, (select id from music where music.user_id = 5) as other where other.id = music.id",
  7622          "Table": "music",
  7623          "Values": [
  7624            "INT64(5)"
  7625          ],
  7626          "Vindex": "user_index"
  7627        },
  7628        "TablesUsed": [
  7629          "user.music"
  7630        ]
  7631      }
  7632    },
  7633    {
  7634      "comment": "Joining with a subquery that has an `IN` route can be merged",
  7635      "query": "SELECT music.id FROM music INNER JOIN (SELECT id FROM music WHERE music.user_id IN (5, 6, 7)) other ON other.id = music.id",
  7636      "v3-plan": {
  7637        "QueryType": "SELECT",
  7638        "Original": "SELECT music.id FROM music INNER JOIN (SELECT id FROM music WHERE music.user_id IN (5, 6, 7)) other ON other.id = music.id",
  7639        "Instructions": {
  7640          "OperatorType": "Route",
  7641          "Variant": "Scatter",
  7642          "Keyspace": {
  7643            "Name": "user",
  7644            "Sharded": true
  7645          },
  7646          "FieldQuery": "select music.id from music join (select id from music where 1 != 1) as other on other.id = music.id where 1 != 1",
  7647          "Query": "select music.id from music join (select id from music where music.user_id in (5, 6, 7)) as other on other.id = music.id",
  7648          "Table": "music"
  7649        }
  7650      },
  7651      "gen4-plan": {
  7652        "QueryType": "SELECT",
  7653        "Original": "SELECT music.id FROM music INNER JOIN (SELECT id FROM music WHERE music.user_id IN (5, 6, 7)) other ON other.id = music.id",
  7654        "Instructions": {
  7655          "OperatorType": "Route",
  7656          "Variant": "IN",
  7657          "Keyspace": {
  7658            "Name": "user",
  7659            "Sharded": true
  7660          },
  7661          "FieldQuery": "select music.id from music, (select id from music where 1 != 1) as other where 1 != 1",
  7662          "Query": "select music.id from music, (select id from music where music.user_id in ::__vals) as other where other.id = music.id",
  7663          "Table": "music",
  7664          "Values": [
  7665            "(INT64(5), INT64(6), INT64(7))"
  7666          ],
  7667          "Vindex": "user_index"
  7668        },
  7669        "TablesUsed": [
  7670          "user.music"
  7671        ]
  7672      }
  7673    },
  7674    {
  7675      "comment": "limit on the vtgate has to be executed on the LHS of a join",
  7676      "query": "select id from user join (select user_id from user_extra limit 10) ue on user.id = ue.user_id",
  7677      "v3-plan": "VT12001: unsupported: filtering on results of cross-shard subquery",
  7678      "gen4-plan": {
  7679        "QueryType": "SELECT",
  7680        "Original": "select id from user join (select user_id from user_extra limit 10) ue on user.id = ue.user_id",
  7681        "Instructions": {
  7682          "OperatorType": "Join",
  7683          "Variant": "Join",
  7684          "JoinColumnIndexes": "R:0",
  7685          "JoinVars": {
  7686            "ue_user_id": 0
  7687          },
  7688          "TableName": "user_extra_`user`",
  7689          "Inputs": [
  7690            {
  7691              "OperatorType": "SimpleProjection",
  7692              "Columns": [
  7693                0
  7694              ],
  7695              "Inputs": [
  7696                {
  7697                  "OperatorType": "Limit",
  7698                  "Count": "INT64(10)",
  7699                  "Inputs": [
  7700                    {
  7701                      "OperatorType": "Route",
  7702                      "Variant": "Scatter",
  7703                      "Keyspace": {
  7704                        "Name": "user",
  7705                        "Sharded": true
  7706                      },
  7707                      "FieldQuery": "select user_id from user_extra where 1 != 1",
  7708                      "Query": "select user_id from user_extra limit :__upper_limit",
  7709                      "Table": "user_extra"
  7710                    }
  7711                  ]
  7712                }
  7713              ]
  7714            },
  7715            {
  7716              "OperatorType": "Route",
  7717              "Variant": "EqualUnique",
  7718              "Keyspace": {
  7719                "Name": "user",
  7720                "Sharded": true
  7721              },
  7722              "FieldQuery": "select id from `user` where 1 != 1",
  7723              "Query": "select id from `user` where `user`.id = :ue_user_id",
  7724              "Table": "`user`",
  7725              "Values": [
  7726                ":ue_user_id"
  7727              ],
  7728              "Vindex": "user_index"
  7729            }
  7730          ]
  7731        },
  7732        "TablesUsed": [
  7733          "user.user",
  7734          "user.user_extra"
  7735        ]
  7736      }
  7737    },
  7738    {
  7739      "comment": "select user.a, t.b from user join (select id, count(*) b, req from user_extra group by req, id) as t on user.id = t.id",
  7740      "query": "select user.a, t.b from user join (select id, count(*) b, req from user_extra group by req, id) as t on user.id = t.id",
  7741      "v3-plan": "VT12001: unsupported: filtering on results of cross-shard subquery",
  7742      "gen4-plan": {
  7743        "QueryType": "SELECT",
  7744        "Original": "select user.a, t.b from user join (select id, count(*) b, req from user_extra group by req, id) as t on user.id = t.id",
  7745        "Instructions": {
  7746          "OperatorType": "Join",
  7747          "Variant": "Join",
  7748          "JoinColumnIndexes": "R:0,L:1",
  7749          "JoinVars": {
  7750            "t_id": 0
  7751          },
  7752          "TableName": "user_extra_`user`",
  7753          "Inputs": [
  7754            {
  7755              "OperatorType": "SimpleProjection",
  7756              "Columns": [
  7757                0,
  7758                1
  7759              ],
  7760              "Inputs": [
  7761                {
  7762                  "OperatorType": "Aggregate",
  7763                  "Variant": "Ordered",
  7764                  "Aggregates": "sum_count_star(1) AS b",
  7765                  "GroupBy": "(0|3), (2|4)",
  7766                  "Inputs": [
  7767                    {
  7768                      "OperatorType": "Route",
  7769                      "Variant": "Scatter",
  7770                      "Keyspace": {
  7771                        "Name": "user",
  7772                        "Sharded": true
  7773                      },
  7774                      "FieldQuery": "select id, count(*) as b, req, weight_string(id), weight_string(req) from user_extra where 1 != 1 group by id, weight_string(id), req, weight_string(req)",
  7775                      "OrderBy": "(0|3) ASC, (2|4) ASC",
  7776                      "Query": "select id, count(*) as b, req, weight_string(id), weight_string(req) from user_extra group by id, weight_string(id), req, weight_string(req) order by id asc, req asc",
  7777                      "Table": "user_extra"
  7778                    }
  7779                  ]
  7780                }
  7781              ]
  7782            },
  7783            {
  7784              "OperatorType": "Route",
  7785              "Variant": "EqualUnique",
  7786              "Keyspace": {
  7787                "Name": "user",
  7788                "Sharded": true
  7789              },
  7790              "FieldQuery": "select `user`.a from `user` where 1 != 1",
  7791              "Query": "select `user`.a from `user` where `user`.id = :t_id",
  7792              "Table": "`user`",
  7793              "Values": [
  7794                ":t_id"
  7795              ],
  7796              "Vindex": "user_index"
  7797            }
  7798          ]
  7799        },
  7800        "TablesUsed": [
  7801          "user.user",
  7802          "user.user_extra"
  7803        ]
  7804      }
  7805    },
  7806    {
  7807      "comment": "cant switch sides for outer joins",
  7808      "query": "select id from user left join (select user_id from user_extra limit 10) ue on user.id = ue.user_id",
  7809      "plan": "VT12001: unsupported: LEFT JOIN with derived tables"
  7810    },
  7811    {
  7812      "comment": "limit on both sides means that we can't evaluate this at all",
  7813      "query": "select id from (select id from user limit 10) u join (select user_id from user_extra limit 10) ue on u.id = ue.user_id",
  7814      "v3-plan": "VT12001: unsupported: filtering on results of cross-shard subquery",
  7815      "gen4-plan": "VT12001: unsupported: JOIN between derived tables"
  7816    },
  7817    {
  7818      "comment": "SELECT music.id FROM (SELECT MAX(id) as maxt FROM music WHERE music.user_id = 5) other JOIN music ON other.maxt = music.id",
  7819      "query": "SELECT music.id FROM (SELECT MAX(id) as maxt FROM music WHERE music.user_id = 5) other JOIN music ON other.maxt = music.id",
  7820      "v3-plan": {
  7821        "QueryType": "SELECT",
  7822        "Original": "SELECT music.id FROM (SELECT MAX(id) as maxt FROM music WHERE music.user_id = 5) other JOIN music ON other.maxt = music.id",
  7823        "Instructions": {
  7824          "OperatorType": "Join",
  7825          "Variant": "Join",
  7826          "JoinColumnIndexes": "R:0",
  7827          "JoinVars": {
  7828            "other_maxt": 0
  7829          },
  7830          "TableName": "music_music",
  7831          "Inputs": [
  7832            {
  7833              "OperatorType": "Route",
  7834              "Variant": "EqualUnique",
  7835              "Keyspace": {
  7836                "Name": "user",
  7837                "Sharded": true
  7838              },
  7839              "FieldQuery": "select other.maxt from (select max(id) as maxt from music where 1 != 1) as other where 1 != 1",
  7840              "Query": "select other.maxt from (select max(id) as maxt from music where music.user_id = 5) as other",
  7841              "Table": "music",
  7842              "Values": [
  7843                "INT64(5)"
  7844              ],
  7845              "Vindex": "user_index"
  7846            },
  7847            {
  7848              "OperatorType": "Route",
  7849              "Variant": "EqualUnique",
  7850              "Keyspace": {
  7851                "Name": "user",
  7852                "Sharded": true
  7853              },
  7854              "FieldQuery": "select music.id from music where 1 != 1",
  7855              "Query": "select music.id from music where music.id = :other_maxt",
  7856              "Table": "music",
  7857              "Values": [
  7858                ":other_maxt"
  7859              ],
  7860              "Vindex": "music_user_map"
  7861            }
  7862          ]
  7863        }
  7864      },
  7865      "gen4-plan": {
  7866        "QueryType": "SELECT",
  7867        "Original": "SELECT music.id FROM (SELECT MAX(id) as maxt FROM music WHERE music.user_id = 5) other JOIN music ON other.maxt = music.id",
  7868        "Instructions": {
  7869          "OperatorType": "Route",
  7870          "Variant": "EqualUnique",
  7871          "Keyspace": {
  7872            "Name": "user",
  7873            "Sharded": true
  7874          },
  7875          "FieldQuery": "select music.id from (select max(id) as maxt from music where 1 != 1) as other, music where 1 != 1",
  7876          "Query": "select music.id from (select max(id) as maxt from music where music.user_id = 5) as other, music where other.maxt = music.id",
  7877          "Table": "music",
  7878          "Values": [
  7879            "INT64(5)"
  7880          ],
  7881          "Vindex": "user_index"
  7882        },
  7883        "TablesUsed": [
  7884          "user.music"
  7885        ]
  7886      }
  7887    },
  7888    {
  7889      "comment": "Earlier columns are in scope in subqueries https://github.com/vitessio/vitess/issues/11246",
  7890      "query": "SELECT 1 as x, (SELECT x)",
  7891      "v3-plan": {
  7892        "QueryType": "SELECT",
  7893        "Original": "SELECT 1 as x, (SELECT x)",
  7894        "Instructions": {
  7895          "OperatorType": "Route",
  7896          "Variant": "Reference",
  7897          "Keyspace": {
  7898            "Name": "main",
  7899            "Sharded": false
  7900          },
  7901          "FieldQuery": "select 1 as x, (select x from dual where 1 != 1) from dual where 1 != 1",
  7902          "Query": "select 1 as x, (select x from dual) from dual",
  7903          "Table": "dual"
  7904        }
  7905      },
  7906      "gen4-plan": {
  7907        "QueryType": "SELECT",
  7908        "Original": "SELECT 1 as x, (SELECT x)",
  7909        "Instructions": {
  7910          "OperatorType": "Route",
  7911          "Variant": "Reference",
  7912          "Keyspace": {
  7913            "Name": "main",
  7914            "Sharded": false
  7915          },
  7916          "FieldQuery": "select 1 as x, (select x from dual where 1 != 1) from dual where 1 != 1",
  7917          "Query": "select 1 as x, (select x from dual) from dual",
  7918          "Table": "dual"
  7919        },
  7920        "TablesUsed": [
  7921          "main.dual"
  7922        ]
  7923      }
  7924    },
  7925    {
  7926      "comment": "(OR 1 = 0) doesn't cause unnecessary scatter",
  7927      "query": "select * from user where id = 1 or 1 = 0",
  7928      "v3-plan": {
  7929        "QueryType": "SELECT",
  7930        "Original": "select * from user where id = 1 or 1 = 0",
  7931        "Instructions": {
  7932          "OperatorType": "Route",
  7933          "Variant": "Scatter",
  7934          "Keyspace": {
  7935            "Name": "user",
  7936            "Sharded": true
  7937          },
  7938          "FieldQuery": "select * from `user` where 1 != 1",
  7939          "Query": "select * from `user` where id = 1 or 1 = 0",
  7940          "Table": "`user`"
  7941        }
  7942      },
  7943      "gen4-plan": {
  7944        "QueryType": "SELECT",
  7945        "Original": "select * from user where id = 1 or 1 = 0",
  7946        "Instructions": {
  7947          "OperatorType": "Route",
  7948          "Variant": "EqualUnique",
  7949          "Keyspace": {
  7950            "Name": "user",
  7951            "Sharded": true
  7952          },
  7953          "FieldQuery": "select * from `user` where 1 != 1",
  7954          "Query": "select * from `user` where id = 1",
  7955          "Table": "`user`",
  7956          "Values": [
  7957            "INT64(1)"
  7958          ],
  7959          "Vindex": "user_index"
  7960        },
  7961        "TablesUsed": [
  7962          "user.user"
  7963        ]
  7964      }
  7965    },
  7966    {
  7967      "comment": "(OR 2 < 1) doesn't cause unnecessary scatter",
  7968      "query": "select * from user where id = 1 or 2 < 1",
  7969      "v3-plan": {
  7970        "QueryType": "SELECT",
  7971        "Original": "select * from user where id = 1 or 2 < 1",
  7972        "Instructions": {
  7973          "OperatorType": "Route",
  7974          "Variant": "Scatter",
  7975          "Keyspace": {
  7976            "Name": "user",
  7977            "Sharded": true
  7978          },
  7979          "FieldQuery": "select * from `user` where 1 != 1",
  7980          "Query": "select * from `user` where id = 1 or 2 < 1",
  7981          "Table": "`user`"
  7982        }
  7983      },
  7984      "gen4-plan": {
  7985        "QueryType": "SELECT",
  7986        "Original": "select * from user where id = 1 or 2 < 1",
  7987        "Instructions": {
  7988          "OperatorType": "Route",
  7989          "Variant": "EqualUnique",
  7990          "Keyspace": {
  7991            "Name": "user",
  7992            "Sharded": true
  7993          },
  7994          "FieldQuery": "select * from `user` where 1 != 1",
  7995          "Query": "select * from `user` where id = 1",
  7996          "Table": "`user`",
  7997          "Values": [
  7998            "INT64(1)"
  7999          ],
  8000          "Vindex": "user_index"
  8001        },
  8002        "TablesUsed": [
  8003          "user.user"
  8004        ]
  8005      }
  8006    },
  8007    {
  8008      "comment": "query with a derived table and dual table in unsharded keyspace",
  8009      "query": "SELECT * FROM unsharded_a AS t1  JOIN (SELECT trim((SELECT MAX(name) FROM unsharded_a)) AS name) AS t2 WHERE t1.name >= t2.name ORDER BY t1.name ASC LIMIT 1;",
  8010      "v3-plan": {
  8011        "Instructions": {
  8012          "FieldQuery": "select * from unsharded_a as t1 join (select trim((select max(`name`) from unsharded_a where 1 != 1)) as `name` from dual where 1 != 1) as t2 where 1 != 1",
  8013          "Keyspace": {
  8014            "Name": "main",
  8015            "Sharded": false
  8016          },
  8017          "OperatorType": "Route",
  8018          "Query": "select * from unsharded_a as t1 join (select trim((select max(`name`) from unsharded_a)) as `name` from dual) as t2 where t1.`name` >= t2.`name` order by t1.`name` asc limit 1",
  8019          "Table": "unsharded_a, dual",
  8020          "Variant": "Unsharded"
  8021        },
  8022        "Original": "SELECT * FROM unsharded_a AS t1  JOIN (SELECT trim((SELECT MAX(name) FROM unsharded_a)) AS name) AS t2 WHERE t1.name >= t2.name ORDER BY t1.name ASC LIMIT 1;",
  8023        "QueryType": "SELECT"
  8024      },
  8025      "gen4-plan": {
  8026        "Instructions": {
  8027          "FieldQuery": "select * from unsharded_a as t1 join (select trim((select max(`name`) from unsharded_a where 1 != 1)) as `name` from dual where 1 != 1) as t2 where 1 != 1",
  8028          "Keyspace": {
  8029            "Name": "main",
  8030            "Sharded": false
  8031          },
  8032          "OperatorType": "Route",
  8033          "Query": "select * from unsharded_a as t1 join (select trim((select max(`name`) from unsharded_a)) as `name` from dual) as t2 where t1.`name` >= t2.`name` order by t1.`name` asc limit 1",
  8034          "Table": "dual, unsharded_a",
  8035          "Variant": "Unsharded"
  8036        },
  8037        "Original": "SELECT * FROM unsharded_a AS t1  JOIN (SELECT trim((SELECT MAX(name) FROM unsharded_a)) AS name) AS t2 WHERE t1.name >= t2.name ORDER BY t1.name ASC LIMIT 1;",
  8038        "QueryType": "SELECT",
  8039        "TablesUsed": [
  8040          "main.dual",
  8041          "main.unsharded_a"
  8042        ]
  8043      }
  8044    },
  8045    {
  8046      "comment": "subquery having join table on clause, using column reference of outer select table",
  8047      "query": "select (select 1 from user u1 join user u2 on u1.id = u2.id and u1.id = u3.id) subquery from user u3 where u3.id = 1",
  8048      "v3-plan": "VT03019: symbol u3.id not found",
  8049      "gen4-plan": {
  8050        "QueryType": "SELECT",
  8051        "Original": "select (select 1 from user u1 join user u2 on u1.id = u2.id and u1.id = u3.id) subquery from user u3 where u3.id = 1",
  8052        "Instructions": {
  8053          "OperatorType": "Route",
  8054          "Variant": "EqualUnique",
  8055          "Keyspace": {
  8056            "Name": "user",
  8057            "Sharded": true
  8058          },
  8059          "FieldQuery": "select (select 1 from `user` as u1 join `user` as u2 on u1.id = u2.id and u1.id = u3.id where 1 != 1) as subquery from `user` as u3 where 1 != 1",
  8060          "Query": "select (select 1 from `user` as u1 join `user` as u2 on u1.id = u2.id and u1.id = u3.id) as subquery from `user` as u3 where u3.id = 1",
  8061          "Table": "`user`",
  8062          "Values": [
  8063            "INT64(1)"
  8064          ],
  8065          "Vindex": "user_index"
  8066        },
  8067        "TablesUsed": [
  8068          "user.user"
  8069        ]
  8070      }
  8071    },
  8072    {
  8073      "comment": "allow last_insert_id with argument",
  8074      "query": "select last_insert_id(id) from user",
  8075      "v3-plan": {
  8076        "QueryType": "SELECT",
  8077        "Original": "select last_insert_id(id) from user",
  8078        "Instructions": {
  8079          "OperatorType": "Route",
  8080          "Variant": "Scatter",
  8081          "Keyspace": {
  8082            "Name": "user",
  8083            "Sharded": true
  8084          },
  8085          "FieldQuery": "select last_insert_id(id) from `user` where 1 != 1",
  8086          "Query": "select last_insert_id(id) from `user`",
  8087          "Table": "`user`"
  8088        }
  8089      },
  8090      "gen4-plan": {
  8091        "QueryType": "SELECT",
  8092        "Original": "select last_insert_id(id) from user",
  8093        "Instructions": {
  8094          "OperatorType": "Route",
  8095          "Variant": "Scatter",
  8096          "Keyspace": {
  8097            "Name": "user",
  8098            "Sharded": true
  8099          },
  8100          "FieldQuery": "select last_insert_id(id) from `user` where 1 != 1",
  8101          "Query": "select last_insert_id(id) from `user`",
  8102          "Table": "`user`"
  8103        },
  8104        "TablesUsed": [
  8105          "user.user"
  8106        ]
  8107      }
  8108    }
  8109  ]