diff --git a/.travis.yml b/.travis.yml index 5d6a0a81457..5a26c8019d7 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,7 +2,7 @@ sudo: false language: go go: - - 1.7 + - 1.8 addons: apt: sources: diff --git a/bootstrap.sh b/bootstrap.sh index 38212a4eb16..c9bb78ef3f0 100755 --- a/bootstrap.sh +++ b/bootstrap.sh @@ -129,12 +129,14 @@ fi # # DO NOT ADD LIBRARY DEPENDENCIES HERE. Instead use govendor as described below. # +# Note: We explicitly do not vendor the tools below because a) we want to stay +# their latest version and b) it's easier to "go install" them this way. gotools=" \ github.com/golang/lint/golint \ github.com/golang/mock/mockgen \ github.com/kardianos/govendor \ golang.org/x/tools/cmd/goimports \ - honnef.co/go/unused/cmd/unused \ + honnef.co/go/tools/cmd/unused \ " # The cover tool needs to be installed into the Go toolchain, so it will fail diff --git a/doc/GettingStarted.md b/doc/GettingStarted.md index b570f96cfcb..9244fa69fc0 100644 --- a/doc/GettingStarted.md +++ b/doc/GettingStarted.md @@ -73,7 +73,7 @@ OS X 10.11 (El Capitan) should work as well, the installation instructions are b In addition, Vitess requires the software and libraries listed below. -1. [Install Go 1.7+](http://golang.org/doc/install). +1. [Install Go 1.8+](http://golang.org/doc/install). 2. Install [MariaDB 10.0](https://downloads.mariadb.org/) or [MySQL 5.6](http://dev.mysql.com/downloads/mysql). You can use any diff --git a/doc/GettingStartedKubernetes.md b/doc/GettingStartedKubernetes.md index fbb37b01181..68fba76a781 100644 --- a/doc/GettingStartedKubernetes.md +++ b/doc/GettingStartedKubernetes.md @@ -9,13 +9,13 @@ The `kubectl` steps will apply to any Kubernetes cluster. ## Prerequisites -To complete the exercise in this guide, you must locally install Go 1.7+, +To complete the exercise in this guide, you must locally install Go 1.8+, Vitess' `vtctlclient` tool, and Google Cloud SDK. The following sections explain how to set these up in your environment. -### Install Go 1.7+ +### Install Go 1.8+ -You need to install [Go 1.7+](http://golang.org/doc/install) to build the +You need to install [Go 1.8+](http://golang.org/doc/install) to build the `vtctlclient` tool, which issues commands to Vitess. After installing Go, make sure your `GOPATH` environment diff --git a/doc/HorizontalReshardingWorkflowGuide.md b/doc/HorizontalReshardingWorkflowGuide.md new file mode 100644 index 00000000000..89328911511 --- /dev/null +++ b/doc/HorizontalReshardingWorkflowGuide.md @@ -0,0 +1,252 @@ + +This guide shows you an example about how to apply range-based sharding +process in an existing unsharded Vitess [keyspace](http://vitess.io/overview/concepts.html#keyspace) +using the horizontal resharding workflow. In this example, we will reshard +from 1 shard "0" into 2 shards "-80" and "80-". + +## Overview +The horizontal resharding process mainly contains the following steps +(each step is a phase in the workflow): + +1. Copy schema from original shards to destination shards. + (**Phase: CopySchemaShard**) +1. Copy the data with a batch process called *vtworker* + (**Phase: SplitClone**). + [more details](horizontal-sharding-workflow.html#details-in-splitclone-phase) +1. Check filtered replication (**Phase: WaitForFilteredReplication**). + [more details](horizontal-sharding-workflow.html#details-in-waitforfilteredreplication-phase) +1. Check copied data integrity using *vtworker* batch process in the mode + to compare the source and destination data. (**Phase: SplitDiff**) +1. Migrate all the serving rdonly tablets in the original shards. + (**Phase: MigrateServedTypeRdonly**) +1. Migrate all the serving replica tablets in the original shards. + (**Phase: MigrateServedTypeReplica**) +1. Migrate all the serving master tablets in the original shards. + (**Phase: MigrateServedTypeMaster**) + [more details](horizontal-sharding-workflow.html#details-in-migrateservedtypemaste-phase) + +## Prerequisites + +You should complete the [Getting Started](http://vitess.io/getting-started/local-instance.html) guide +(please finish all the steps before Try Vitess resharding) and have left +the cluster running. Then, please follow these steps before running +the resharding process: + +1. Configure sharding information. By running the command below, we tell + Vitess to shard the data using the page column through the provided VSchema. + + ``` sh + vitess/examples/local$ ./lvtctl.sh ApplyVSchema -vschema "$(cat vschema.json)" test_keyspace + ``` + +1. Bring up tablets for 2 additional shards: *test_keyspace/-80* and + *test_keyspace/80-* (you can learn more about sharding key range + [here](http://vitess.io/user-guide/sharding.html#key-ranges-and-partitions)): + + ``` sh + vitess/examples/local$ ./sharded-vttablet-up.sh + ``` + + Initialize replication by electing the first master for each of the new shards: + + ``` sh + vitess/examples/local$ ./lvtctl.sh InitShardMaster -force test_keyspace/-80 test-200 + vitess/examples/local$ ./lvtctl.sh InitShardMaster -force test_keyspace/80- test-300 + ``` + + After this set up, you should see the shards on Dashboard page of vtctld UI + (http://localhost:15000). There should be 1 serving shard named "0" and + 2 non-serving shards named "-80" and "80-". Click the shard node, you can + inspect all its tablets information. + +1. Bring up a vtworker process, which can be connected through port 15033. + (The number of *vtworker* should be the same of original shards, + we start one vtworker process here since we have only one original shard + in this example.) + + ``` sh + vitess/examples/local$ ./vtworker-up.sh + ``` + + You can verify this *vtworker* process set up through http://localhost:15032/Debugging. + It should be pinged successfully. After you ping the vtworker, please click + "Reset Job". Otherwise, the vtworker is not ready for executing other tasks. + +## Horizontal resharding workflow +### Create the workflow +1. Open the *Workflows* section on the left menu of vtctld UI (http://localhost:15000). + Click the "+" button in the top right corner to open the "Create + a new Workflow" dialog. +1. Fill in the "Create a new Workflow" dialogue following the instructions + below (you can checkout our example [here](https://cloud.githubusercontent.com/assets/23492389/24314500/27f27988-109f-11e7-8e10-630bad14a286.png)): + * Select the "Skip Start" checkbox if you don't want to start the workflow + immediately after creation. If so, you need to click a "Start" button in + the workflow bar later to run the workflow. + * Open the "Factory Name" menu and select "Horizontal Resharding". This field + defines the type of workflow you want to create. + * Fill in *test_keyspace* in the "Keyspace" slot. + * Fill in *localhost:15033* in the "vtworker Addresses" slot. + * Unselect the "enable_approvals" checkbox if you don't want to manually + approve task executions for canarying. (We suggest you to keep the default + selected choice since this will enable the canary feature) +1. Click "Create" button at the bottom of the dialog. You will see a workflow + node created in the *Workflows* page if the creation succeeds. + The workflow has started running now if "Skip Start" is not selected. + +Another way to start the workflow is through the vtctlclient command, you can +also visualize the workflow on vtctld UI *Workflows* section after executing +the command: + +``` sh +vitess/examples/local$ ./lvtctl.sh WorkflowCreate -skip_start=false horizontal_resharding -keyspace=test_keyspace -vtworkers=localhost:15033 -enable_approvals=true +``` + +When creating the resharding workflow, the program automatically detect the +source shards and destination shards and create tasks for the resharding +process. After the creation, click the workflow node, you can see a list of +child nodes. Each child node represents a phase in the workflow (each phase +represents a step mentioned in [Overview](http://vitess.io/user-guide/horizontal-sharding-workflow.html#overview)). +Further click a phase node, you can inspect tasks in this phase. +For example, in the "CopySchemaShard" phase, it includes tasks to copy schema +to 2 destination shards, therefore you can see task node "Shard -80" and +"Shard 80-". You should see a page similar to +[this](https://cloud.githubusercontent.com/assets/23492389/24313539/71c9c8ae-109a-11e7-9e4a-0c3e8ee8ba85.png). + +### Approvals of Tasks Execution (Canary feature) +Once the workflow start to run (click the "Start" button if you selected +"Skip Start" and the workflow hasn't started yet.), you need to approve the +task execution for each phase if "enable_approvals" is selected. The approvals +include 2 stages. The first stage approves only the first task, which runs as +canarying. The second stage approves the remaining tasks. + +The resharding workflow runs through phases sequentially. Once the phase starts, +you can see the approval buttons for all the stages under the phase node (click +the phase node if you didn't see the approval buttons, you should see a page +like [this](https://cloud.githubusercontent.com/assets/23492389/24313613/c9508ef0-109a-11e7-8848-75a1ae18a6c5.png)). The +button is enabled when the corresponding task(s) are ready to run. Click the +enabled button to approve task execution, then you can see approved message +on the clicked button. The approval buttons are cleared after the phase has +finished. The next phase will only starts if its previous phase has finished +successfully. + +If the workflow is restored from a checkpoint, you will still see the the +approval button with approved message when there are running tasks under this +approval. But you don't need to approve the same tasks again for a restarted +workflow. + +### Retry +A "Retry" button will be enabled under the task node if the task failed (click +the task node if your job get stuck but don't see the Retry button). Click this +button if you have fixed the bugs and want to retry the failed task. You can +retry as many times as you want if the task continuelly failed. The workflow +can continue from your failure point once it is fixed. + +For example, you might forget to bring up a vtworker process. The task which +requires that vtworker process in SplitClone phase will fail. After you fix +this, click the retry button on the task node and the workflow will continue +to run. + +When a task failed, the execution of other tasks under this phase won't be +affected if this phase runs tasks in parallel (applied to phase +"CopySchemaShard", "SplitClone", "WaitForFilteredReplication"). For phases +that runs tasks sequentially, remaining unstarted tasks under this phase will +no long be executed. The phases afterwards will no longer be executed. + +### Checkpoint and Recovery +The resharding workflow tracks the status for every task and checkpoint these +status into topology server whenever there is a status update. When a workflow +is stopped and restarted by loading the checkpoint in the topology, it can +continue to run all the unfinished tasks. + + +## Verify Results and Clean up +After the resharding process, data in the original shard is identically copied +to new shards. Data updates will be visible on the new shards, but not on the +original shard. You should then see in the vtctld UI *Dashboard* page that shard +*0* becomes non-serving and shard *-80* and shard *80-* are serving shards. +Verify this for yourself: inspect the database content using following commands, +then add messages to the guestbook page (you can use script client.sh mentioned +[here](http://vitess.io/getting-started/local-instance.html#run-a-client-application)) +and inspect using same commands: + +``` sh +# See what's on shard test_keyspace/0 +# (no updates visible since we migrated away from it): +vitess/examples/local$ ./lvtctl.sh ExecuteFetchAsDba test-100 "SELECT * FROM messages" +# See what's on shard test_keyspace/-80: +vitess/examples/local$ ./lvtctl.sh ExecuteFetchAsDba test-200 "SELECT * FROM messages" +# See what's on shard test_keyspace/80-: +vitess/examples/local$ ./lvtctl.sh ExecuteFetchAsDba test-300 "SELECT * FROM messages" +``` + +You can also checkout the *Topology* browser on vtctl UI. It shows you the +information of the keyrange of shard and their serving status. Each shard +should look like this + +[shard 0](https://cloud.githubusercontent.com/assets/23492389/24313876/072f61e6-109c-11e7-938a-23b8398958aa.png) + +[shard -80](https://cloud.githubusercontent.com/assets/23492389/24313813/bd11c824-109b-11e7-83d4-cca3f6093360.png) + +[shard 80-](https://cloud.githubusercontent.com/assets/23492389/24313743/7f9ae1c4-109b-11e7-997a-774f4f16e473.png) + +After you verify the result, we can remove the +original shard since all traffic is being served from the new shards: + +``` sh +vitess/examples/local$ ./vttablet-down.sh +``` + +Then we can delete the now-empty shard: + +``` sh +vitess/examples/local$ ./lvtctl.sh DeleteShard -recursive test_keyspace/0 +``` + +You should then see in the vtctld UI *Dashboard* page that shard *0* is gone. + +## Tear down and clean up + +Since you already cleaned up the tablets from the original unsharded example by +running `./vttablet-down.sh`, that step has been replaced with +`./sharded-vttablet-down.sh` to clean up the new sharded tablets. + +``` sh +vitess/examples/local$ ./vtworker-down.sh +vitess/examples/local$ ./vtgate-down.sh +vitess/examples/local$ ./sharded-vttablet-down.sh +vitess/examples/local$ ./vtctld-down.sh +vitess/examples/local$ ./zk-down.sh +``` + +## Reference +You can checkout the old version tutorial [here](http://vitess.io/user-guide/horizontal-sharding.html). +It walks you through the resharding process by manually executing commands. + +### Details in SplitClone phase +*vtworker* copies data from a paused snapshot. It will pause replication on +one rdonly (offline processing) tablet to serve as a consistent snapshot of +the data. The app can continue without downtime, since live traffic is served +by replica and master tablets, which are unaffected. Other batch jobs will +also be unaffected, since they will be served only by the remaining, un-paused +rdonly tablets. + +During the data copying, *vtworker* streams the data from a single source to +multiple destinations, routing each row based on its *keyspace_id*. It can +automatically figure out which shards to use as the destinations based on the +key range that needs to be covered. In our example, shard 0 covers the entire +range, so it identifies -80 and 80- as the destination shards, since they +combine to cover the same range. + +### Details in WaitForFilteredReplication phase +Once the copying from a paused snapshot (phase SplitClone) has finished, +*vtworker* turns on [filtered replication](http://vitess.io/user-guide/sharding.html#filtered-replication), +which allows the destination shards to catch up on updates that have continued +to flow in from the app since the time of the snapshot. After the destination +shards are caught up, they will continue to replicate new updates. + +### Details in MigrateServedTypeMaster phase +During the *master* migration, the original shard masters will first stop +accepting updates. Then the process will wait for the new shard masters to +fully catch up on filtered replication before allowing them to begin serving. +After the master traffic is migrated, the filtered replication will be stopped. +Data updates will be visible on the new shards, but not on the original shards. diff --git a/docker/bootstrap/Dockerfile.common b/docker/bootstrap/Dockerfile.common index 7ae96474002..128142be6f8 100644 --- a/docker/bootstrap/Dockerfile.common +++ b/docker/bootstrap/Dockerfile.common @@ -1,4 +1,4 @@ -FROM golang:1.7 +FROM golang:1.8 # Install Vitess build dependencies RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ diff --git a/docs/getting-started/index.html b/docs/getting-started/index.html index 53e0206480f..afd7dcfbe3e 100644 --- a/docs/getting-started/index.html +++ b/docs/getting-started/index.html @@ -297,13 +297,13 @@
To complete the exercise in this guide, you must locally install Go 1.7+, +
To complete the exercise in this guide, you must locally install Go 1.8+,
Vitess' vtctlclient tool, and Google Cloud SDK. The
following sections explain how to set these up in your environment.
You need to install Go 1.7+ to build the +
You need to install Go 1.8+ to build the
vtctlclient tool, which issues commands to Vitess.
After installing Go, make sure your GOPATH environment
diff --git a/docs/getting-started/local-instance.html b/docs/getting-started/local-instance.html
index f60e3306160..e26faaff3a3 100644
--- a/docs/getting-started/local-instance.html
+++ b/docs/getting-started/local-instance.html
@@ -353,7 +353,7 @@
In addition, Vitess requires the software and libraries listed below.
Install MariaDB 10.0 or
MySQL 5.6. You can use any
installation method (src/bin/rpm/deb), but be sure to include the client
diff --git a/examples/local/vtworker-down.sh b/examples/local/vtworker-down.sh
new file mode 100755
index 00000000000..e8136d31121
--- /dev/null
+++ b/examples/local/vtworker-down.sh
@@ -0,0 +1,11 @@
+#!/bin/bash
+
+set -e
+
+script_root=`dirname "${BASH_SOURCE}"`
+source $script_root/env.sh
+
+pid=`cat $VTDATAROOT/tmp/vtworker.pid`
+echo "Stopping vtworker..."
+kill $pid
+
diff --git a/examples/local/vtworker-up.sh b/examples/local/vtworker-up.sh
new file mode 100755
index 00000000000..2c0992ae451
--- /dev/null
+++ b/examples/local/vtworker-up.sh
@@ -0,0 +1,20 @@
+#!/bin/bash
+
+# This is an example script that runs vtworker.
+
+set -e
+
+script_root=`dirname "${BASH_SOURCE}"`
+source $script_root/env.sh
+
+echo "Starting vtworker..."
+exec $VTROOT/bin/vtworker \
+ $TOPOLOGY_FLAGS \
+ -cell test \
+ -log_dir $VTDATAROOT/tmp \
+ -alsologtostderr \
+ -service_map=grpc-vtworker \
+ -grpc_port 15033 \
+ -port 15032 \
+ -pid_file $VTDATAROOT/tmp/vtworker.pid \
+ -use_v3_resharding_mode &
diff --git a/go/cmd/mysqlctld/mysqlctld.go b/go/cmd/mysqlctld/mysqlctld.go
index 493d0671005..06c30924419 100644
--- a/go/cmd/mysqlctld/mysqlctld.go
+++ b/go/cmd/mysqlctld/mysqlctld.go
@@ -57,10 +57,10 @@ func main() {
// Start or Init mysqld as needed.
ctx, cancel := context.WithTimeout(context.Background(), *waitTime)
- tabletDir := mysqlctl.TabletDir(uint32(*tabletUID))
- if _, statErr := os.Stat(tabletDir); os.IsNotExist(statErr) {
+ mycnfFile := mysqlctl.MycnfFile(uint32(*tabletUID))
+ if _, statErr := os.Stat(mycnfFile); os.IsNotExist(statErr) {
// Generate my.cnf from scratch and use it to find mysqld.
- log.Infof("tablet dir (%s) doesn't exist, initializing", tabletDir)
+ log.Infof("mycnf file (%s) doesn't exist, initializing", mycnfFile)
var err error
mysqld, err = mysqlctl.CreateMysqld(uint32(*tabletUID), *mysqlSocket, int32(*mysqlPort), dbconfigFlags)
@@ -76,7 +76,7 @@ func main() {
}
} else {
// There ought to be an existing my.cnf, so use it to find mysqld.
- log.Infof("tablet dir (%s) already exists, starting without init", tabletDir)
+ log.Infof("mycnf file (%s) already exists, starting without init", mycnfFile)
var err error
mysqld, err = mysqlctl.OpenMysqld(uint32(*tabletUID), dbconfigFlags)
@@ -86,6 +86,12 @@ func main() {
}
mysqld.OnTerm(onTermFunc)
+ err = mysqld.RefreshConfig()
+ if err != nil {
+ log.Errorf("failed to refresh config: %v", err)
+ exit.Return(1)
+ }
+
if err := mysqld.Start(ctx); err != nil {
log.Errorf("failed to start mysqld: %v", err)
exit.Return(1)
diff --git a/go/vt/mysqlctl/cmd.go b/go/vt/mysqlctl/cmd.go
index 1cf295c5e65..abfc91fbf0d 100644
--- a/go/vt/mysqlctl/cmd.go
+++ b/go/vt/mysqlctl/cmd.go
@@ -47,7 +47,7 @@ func CreateMysqld(tabletUID uint32, mysqlSocket string, mysqlPort int32, dbconfi
// installation that already exists. This will look for an existing my.cnf file
// and use that to call NewMysqld().
func OpenMysqld(tabletUID uint32, dbconfigFlags dbconfigs.DBConfigFlag) (*Mysqld, error) {
- mycnf, err := ReadMycnf(mycnfFile(tabletUID))
+ mycnf, err := ReadMycnf(MycnfFile(tabletUID))
if err != nil {
return nil, fmt.Errorf("couldn't read my.cnf file: %v", err)
}
diff --git a/go/vt/mysqlctl/mycnf.go b/go/vt/mysqlctl/mycnf.go
index 8ead94bc403..b56ab996f26 100644
--- a/go/vt/mysqlctl/mycnf.go
+++ b/go/vt/mysqlctl/mycnf.go
@@ -182,6 +182,8 @@ func ReadMycnf(cnfFile string) (mycnf *Mycnf, err error) {
mycnf.BinLogPath = mycnf.lookupAndCheck("log-bin")
mycnf.MasterInfoFile = mycnf.lookupAndCheck("master-info-file")
mycnf.PidFile = mycnf.lookupAndCheck("pid-file")
+ mycnf.TmpDir = mycnf.lookupAndCheck("tmpdir")
+ mycnf.SlaveLoadTmpDir = mycnf.lookupAndCheck("slave_load_tmpdir")
return mycnf, nil
}
diff --git a/go/vt/mysqlctl/mycnf_flag.go b/go/vt/mysqlctl/mycnf_flag.go
index 2d7738a2c88..6a5c76a0577 100644
--- a/go/vt/mysqlctl/mycnf_flag.go
+++ b/go/vt/mysqlctl/mycnf_flag.go
@@ -102,7 +102,7 @@ func NewMycnfFromFlags(uid uint32) (mycnf *Mycnf, err error) {
// This is probably not going to be used by anybody,
// but fill in a default value. (Note it's used by
// mysqld.Start, in which case it is correct).
- path: mycnfFile(uint32(*flagServerID)),
+ path: MycnfFile(uint32(*flagServerID)),
}, nil
}
@@ -110,7 +110,7 @@ func NewMycnfFromFlags(uid uint32) (mycnf *Mycnf, err error) {
if uid == 0 {
log.Fatalf("No mycnf_server_id, no mycnf-file, and no backup server id to use")
}
- *flagMycnfFile = mycnfFile(uid)
+ *flagMycnfFile = MycnfFile(uid)
log.Infof("No mycnf_server_id, no mycnf-file specified, using default config for server id %v: %v", uid, *flagMycnfFile)
} else {
log.Infof("No mycnf_server_id specified, using mycnf-file file %v", *flagMycnfFile)
diff --git a/go/vt/mysqlctl/mycnf_gen.go b/go/vt/mysqlctl/mycnf_gen.go
index d0a1af2da29..e030b11966d 100644
--- a/go/vt/mysqlctl/mycnf_gen.go
+++ b/go/vt/mysqlctl/mycnf_gen.go
@@ -15,6 +15,8 @@ import (
"path"
"text/template"
+ "flag"
+
"github.com/youtube/vitess/go/vt/env"
)
@@ -40,6 +42,10 @@ const (
innodbLogSubdir = "innodb/logs"
)
+var (
+ tabletDir = flag.String("tablet_dir", "", "The directory within the vtdataroot to store vttablet/mysql files. Defaults to being generated by the tablet uid.")
+)
+
// NewMycnf fills the Mycnf structure with vt root paths and derived values.
// This is used to fill out the cnfTemplate values and generate my.cnf.
// uid is a unique id for a particular tablet - it must be unique within the
@@ -47,7 +53,7 @@ const (
// mysqldPort needs to be unique per instance per machine.
func NewMycnf(tabletUID uint32, mysqlPort int32) *Mycnf {
cnf := new(Mycnf)
- cnf.path = mycnfFile(tabletUID)
+ cnf.path = MycnfFile(tabletUID)
tabletDir := TabletDir(tabletUID)
cnf.ServerID = tabletUID
cnf.MysqlPort = mysqlPort
@@ -73,11 +79,14 @@ func NewMycnf(tabletUID uint32, mysqlPort int32) *Mycnf {
// TabletDir returns the default directory for a tablet
func TabletDir(uid uint32) string {
+ if *tabletDir != "" {
+ return fmt.Sprintf("%s/%s", env.VtDataRoot(), *tabletDir)
+ }
return fmt.Sprintf("%s/vt_%010d", env.VtDataRoot(), uid)
}
-// mycnfFile returns the default location of the my.cnf file.
-func mycnfFile(uid uint32) string {
+// MycnfFile returns the default location of the my.cnf file.
+func MycnfFile(uid uint32) string {
return path.Join(TabletDir(uid), "my.cnf")
}
diff --git a/go/vt/mysqlctl/mysqld.go b/go/vt/mysqlctl/mysqld.go
index 214a31fdee3..512adf6832d 100644
--- a/go/vt/mysqlctl/mysqld.go
+++ b/go/vt/mysqlctl/mysqld.go
@@ -26,6 +26,8 @@ import (
"sync"
"time"
+ "bytes"
+
log "github.com/golang/glog"
"github.com/youtube/vitess/go/sqldb"
"github.com/youtube/vitess/go/stats"
@@ -465,7 +467,7 @@ func (mysqld *Mysqld) Init(ctx context.Context, initDBSQLFile string) error {
}
// Set up config files.
- if err = mysqld.initConfig(root); err != nil {
+ if err = mysqld.initConfig(root, mysqld.config.path); err != nil {
log.Errorf("failed creating %v: %v", mysqld.config.path, err)
return err
}
@@ -556,7 +558,7 @@ func (mysqld *Mysqld) installDataDir() error {
return nil
}
-func (mysqld *Mysqld) initConfig(root string) error {
+func (mysqld *Mysqld) initConfig(root, outFile string) error {
var err error
var configData string
@@ -573,7 +575,7 @@ func (mysqld *Mysqld) initConfig(root string) error {
return err
}
- return ioutil.WriteFile(mysqld.config.path, []byte(configData), 0664)
+ return ioutil.WriteFile(outFile, []byte(configData), 0664)
}
func getMycnfTemplates(root string) []string {
@@ -595,6 +597,54 @@ func getMycnfTemplates(root string) []string {
return cnfTemplatePaths
}
+// RefreshConfig attempts to recreate the my.cnf from templates, and log and
+// swap in to place if it's updated. It keeps a copy of the last version in case fallback is required.
+// Should be called from a stable replica, server_id is not regenerated.
+func (mysqld *Mysqld) RefreshConfig() error {
+ log.Info("Checking for updates to my.cnf")
+ root, err := vtenv.VtRoot()
+ if err != nil {
+ return err
+ }
+ f, err := ioutil.TempFile(path.Dir(mysqld.config.path), "my.cnf")
+ if err != nil {
+ return fmt.Errorf("Could not create temp file: %v", err)
+ }
+
+ defer os.Remove(f.Name())
+ err = mysqld.initConfig(root, f.Name())
+ if err != nil {
+ return fmt.Errorf("Could not initConfig in %v: %v", f.Name(), err)
+ }
+
+ existing, err := ioutil.ReadFile(mysqld.config.path)
+ if err != nil {
+ return fmt.Errorf("Could not read existing file %v: %v", mysqld.config.path, err)
+ }
+ updated, err := ioutil.ReadFile(f.Name())
+ if err != nil {
+ return fmt.Errorf("Could not read updated file %v: %v", f.Name(), err)
+ }
+
+ if bytes.Equal(existing, updated) {
+ log.Infof("No changes to my.cnf. Continuing.")
+ return nil
+ }
+
+ backupPath := mysqld.config.path + ".previous"
+ err = os.Rename(mysqld.config.path, backupPath)
+ if err != nil {
+ return fmt.Errorf("Could not back up existing %v: %v", mysqld.config.path, err)
+ }
+ err = os.Rename(f.Name(), mysqld.config.path)
+ if err != nil {
+ return fmt.Errorf("Could not move %v to %v: %v", f.Name(), mysqld.config.path, err)
+ }
+ log.Infof("Updated my.cnf. Backup of previous version available in %v", backupPath)
+
+ return nil
+}
+
// ReinitConfig updates the config file as if Mysqld is initializing. At the
// moment it only randomizes ServerID because it's not safe to restore a replica
// from a backup and then give it the same ServerID as before, MySQL can then
@@ -620,7 +670,7 @@ func (mysqld *Mysqld) ReinitConfig(ctx context.Context) error {
if err != nil {
return err
}
- return mysqld.initConfig(root)
+ return mysqld.initConfig(root, mysqld.config.path)
}
func (mysqld *Mysqld) createDirs() error {
diff --git a/go/vt/sqlparser/Makefile b/go/vt/sqlparser/Makefile
index f0f950379fa..41676d5d248 100644
--- a/go/vt/sqlparser/Makefile
+++ b/go/vt/sqlparser/Makefile
@@ -5,7 +5,7 @@
MAKEFLAGS = -s
sql.go: sql.y
- go tool yacc -o sql.go sql.y
+ goyacc -o sql.go sql.y
gofmt -w sql.go
clean:
diff --git a/go/vt/sqlparser/parse_test.go b/go/vt/sqlparser/parse_test.go
index 47360257aab..a3e2772bb30 100644
--- a/go/vt/sqlparser/parse_test.go
+++ b/go/vt/sqlparser/parse_test.go
@@ -91,6 +91,8 @@ func TestValid(t *testing.T) {
}, {
input: "select /* union order by limit lock */ 1 from t union select 1 from t order by a limit 1 for update",
output: "select /* union order by limit lock */ 1 from t union select 1 from t order by a asc limit 1 for update",
+ }, {
+ input: "select /* union with limit on lhs */ 1 from t limit 1 union select 1 from t",
}, {
input: "select /* distinct */ distinct 1 from t",
}, {
@@ -1191,10 +1193,6 @@ func TestErrors(t *testing.T) {
}, {
input: "(select /* parenthesized select */ * from t)",
output: "syntax error at position 46",
- }, {
- // Can't use order by in select of a union without parenthesis.
- input: "select /* union parenthesized select */ 1 from t order by a union select 1 from t",
- output: "syntax error at position 66 near 'union'",
}}
for _, tcase := range invalidSQL {
if tcase.output == "" {
diff --git a/go/vt/sqlparser/sql.go b/go/vt/sqlparser/sql.go
index ea681c39684..a1d493c3b33 100644
--- a/go/vt/sqlparser/sql.go
+++ b/go/vt/sqlparser/sql.go
@@ -1,9 +1,9 @@
-//line ./go/vt/sqlparser/sql.y:6
+//line sql.y:6
package sqlparser
import __yyfmt__ "fmt"
-//line ./go/vt/sqlparser/sql.y:6
+//line sql.y:6
func setParseTree(yylex interface{}, stmt Statement) {
yylex.(*Tokenizer).ParseTree = stmt
}
@@ -28,7 +28,7 @@ func forceEOF(yylex interface{}) {
yylex.(*Tokenizer).ForceEOF = true
}
-//line ./go/vt/sqlparser/sql.y:34
+//line sql.y:34
type yySymType struct {
yys int
empty struct{}
@@ -373,432 +373,424 @@ var yyExca = [...]int{
-1, 1,
1, -1,
-2, 0,
- -1, 15,
- 5, 22,
- -2, 260,
- -1, 206,
+ -1, 3,
+ 5, 20,
+ -2, 4,
+ -1, 203,
103, 327,
-2, 323,
- -1, 207,
+ -1, 204,
103, 328,
-2, 324,
- -1, 424,
+ -1, 405,
+ 5, 20,
+ -2, 278,
+ -1, 423,
103, 330,
-2, 326,
-1, 569,
- 5, 23,
+ 5, 21,
-2, 159,
-1, 594,
- 5, 23,
+ 5, 21,
-2, 279,
+ -1, 638,
+ 5, 20,
+ -2, 281,
-1, 711,
- 5, 23,
+ 5, 21,
-2, 282,
}
-const yyNprod = 442
const yyPrivate = 57344
-var yyTokenNames []string
-var yyStates []string
-
-const yyLast = 3817
+const yyLast = 3709
var yyAct = [...]int{
- 223, 367, 629, 523, 618, 207, 235, 309, 666, 490,
- 643, 307, 617, 201, 677, 259, 524, 485, 38, 562,
- 181, 505, 311, 488, 555, 520, 418, 423, 56, 454,
- 282, 232, 287, 83, 630, 40, 234, 196, 174, 202,
- 295, 33, 237, 43, 190, 225, 37, 366, 3, 15,
- 82, 744, 199, 739, 487, 203, 743, 199, 732, 742,
- 738, 184, 45, 46, 47, 48, 731, 621, 175, 176,
- 177, 178, 660, 212, 478, 35, 479, 428, 478, 199,
- 479, 199, 180, 185, 217, 199, 478, 209, 479, 211,
- 74, 186, 718, 335, 334, 344, 345, 337, 338, 339,
- 340, 341, 342, 343, 336, 315, 572, 346, 73, 312,
- 74, 214, 544, 215, 533, 435, 532, 220, 546, 221,
- 323, 322, 480, 531, 379, 210, 480, 411, 413, 433,
- 76, 77, 78, 213, 480, 79, 346, 324, 75, 356,
- 357, 682, 649, 481, 597, 566, 536, 481, 365, 303,
- 299, 321, 322, 64, 438, 481, 324, 652, 655, 719,
- 336, 624, 59, 346, 302, 216, 727, 506, 324, 580,
- 730, 68, 63, 573, 335, 334, 344, 345, 337, 338,
- 339, 340, 341, 342, 343, 336, 506, 305, 346, 55,
- 323, 322, 228, 283, 35, 412, 289, 626, 323, 322,
- 199, 52, 199, 545, 457, 543, 199, 324, 432, 434,
- 431, 556, 728, 688, 199, 324, 692, 56, 306, 199,
- 56, 222, 199, 218, 494, 199, 314, 461, 224, 186,
- 284, 285, 292, 301, 446, 448, 449, 35, 300, 447,
- 327, 459, 460, 458, 219, 436, 304, 49, 592, 51,
- 326, 313, 722, 53, 316, 664, 437, 319, 58, 574,
- 67, 65, 69, 548, 549, 550, 715, 224, 61, 39,
- 368, 664, 224, 684, 224, 17, 354, 377, 339, 340,
- 341, 342, 343, 336, 325, 57, 346, 62, 71, 66,
- 60, 70, 56, 560, 224, 596, 224, 199, 323, 322,
- 203, 560, 199, 323, 322, 199, 560, 409, 203, 419,
- 56, 422, 421, 576, 224, 324, 425, 17, 199, 35,
- 324, 199, 417, 392, 199, 56, 424, 415, 537, 408,
- 396, 441, 443, 444, 17, 450, 451, 414, 406, 494,
- 224, 420, 637, 187, 521, 455, 301, 402, 589, 301,
- 429, 477, 521, 439, 318, 725, 440, 404, 632, 405,
- 452, 35, 17, 18, 19, 20, 72, 493, 495, 56,
- 704, 702, 456, 492, 724, 705, 703, 741, 35, 368,
- 56, 508, 499, 500, 56, 21, 701, 35, 424, 560,
- 700, 191, 192, 482, 483, 381, 382, 383, 384, 385,
- 386, 387, 283, 737, 547, 195, 35, 510, 503, 442,
- 41, 203, 194, 56, 288, 518, 517, 496, 522, 735,
- 226, 525, 689, 513, 293, 497, 498, 286, 706, 535,
- 672, 673, 227, 635, 56, 56, 530, 534, 590, 426,
- 317, 539, 676, 509, 179, 511, 512, 337, 338, 339,
- 340, 341, 342, 343, 336, 527, 519, 346, 188, 189,
- 288, 182, 22, 23, 25, 24, 26, 695, 183, 540,
- 516, 39, 231, 663, 455, 27, 28, 29, 515, 694,
- 30, 31, 32, 260, 34, 42, 558, 419, 551, 200,
- 679, 394, 395, 320, 39, 42, 56, 569, 570, 571,
- 44, 456, 575, 36, 568, 1, 80, 675, 582, 294,
- 583, 584, 585, 586, 561, 427, 581, 50, 34, 542,
- 199, 541, 430, 208, 514, 34, 579, 593, 594, 595,
- 528, 501, 393, 323, 322, 281, 368, 693, 662, 578,
- 376, 559, 56, 199, 603, 504, 236, 199, 591, 598,
- 324, 445, 587, 247, 244, 602, 246, 245, 577, 397,
- 611, 403, 251, 250, 252, 253, 254, 255, 328, 56,
- 256, 229, 410, 290, 492, 604, 667, 607, 257, 605,
- 665, 606, 56, 613, 612, 616, 619, 620, 631, 424,
- 625, 588, 659, 717, 615, 199, 623, 401, 193, 14,
- 13, 54, 56, 56, 628, 56, 56, 56, 525, 636,
- 56, 645, 646, 12, 11, 627, 647, 650, 651, 642,
- 656, 657, 10, 654, 9, 8, 7, 204, 6, 5,
- 4, 16, 633, 2, 0, 0, 661, 0, 0, 0,
- 199, 680, 0, 638, 683, 0, 685, 686, 0, 0,
- 0, 0, 0, 525, 258, 56, 0, 603, 0, 0,
- 691, 0, 0, 34, 0, 0, 0, 696, 0, 698,
- 199, 199, 199, 199, 0, 0, 0, 633, 709, 0,
- 0, 199, 711, 707, 199, 0, 203, 681, 56, 714,
- 56, 0, 0, 710, 716, 308, 0, 721, 308, 0,
- 697, 197, 699, 205, 720, 368, 197, 633, 633, 633,
- 633, 358, 359, 360, 361, 362, 363, 355, 729, 726,
- 0, 633, 0, 0, 0, 0, 496, 0, 197, 736,
- 197, 0, 733, 734, 197, 0, 0, 0, 0, 0,
- 740, 364, 0, 0, 369, 370, 371, 372, 373, 374,
- 375, 0, 378, 380, 380, 380, 380, 380, 380, 380,
- 380, 388, 389, 390, 391, 668, 671, 672, 673, 669,
- 0, 670, 674, 0, 407, 335, 334, 344, 345, 337,
- 338, 339, 340, 341, 342, 343, 336, 0, 308, 346,
- 310, 0, 0, 310, 0, 0, 0, 0, 0, 608,
- 0, 453, 0, 308, 462, 463, 464, 465, 466, 467,
- 468, 469, 470, 471, 472, 473, 474, 475, 476, 335,
- 334, 344, 345, 337, 338, 339, 340, 341, 342, 343,
- 336, 0, 0, 346, 668, 671, 672, 673, 669, 34,
- 670, 674, 0, 0, 723, 0, 0, 0, 0, 197,
- 0, 297, 0, 369, 0, 197, 0, 0, 0, 0,
- 0, 0, 0, 197, 0, 398, 0, 0, 197, 0,
- 0, 197, 204, 0, 197, 0, 0, 0, 0, 0,
- 204, 557, 310, 310, 0, 0, 0, 0, 0, 526,
- 0, 34, 0, 0, 0, 0, 0, 0, 310, 0,
- 0, 335, 334, 344, 345, 337, 338, 339, 340, 341,
- 342, 343, 336, 308, 0, 346, 334, 344, 345, 337,
- 338, 339, 340, 341, 342, 343, 336, 0, 0, 346,
- 0, 0, 552, 553, 554, 0, 0, 0, 0, 0,
- 0, 0, 484, 0, 310, 0, 197, 0, 205, 0,
- 0, 297, 0, 502, 416, 0, 205, 507, 416, 64,
- 0, 0, 0, 0, 0, 0, 0, 197, 59, 0,
- 197, 0, 0, 197, 0, 64, 567, 68, 63, 563,
- 0, 0, 0, 204, 59, 0, 529, 0, 0, 0,
- 0, 0, 0, 68, 63, 55, 0, 0, 399, 0,
- 0, 400, 0, 0, 0, 0, 0, 538, 310, 0,
- 0, 55, 0, 565, 0, 599, 600, 601, 0, 491,
- 416, 0, 0, 323, 322, 491, 491, 0, 0, 609,
- 610, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 324, 0, 0, 491, 491, 491, 491, 0, 0, 0,
- 0, 0, 0, 0, 0, 173, 491, 0, 0, 205,
- 0, 0, 0, 0, 58, 0, 67, 65, 69, 564,
- 0, 173, 0, 634, 61, 0, 526, 0, 0, 639,
- 58, 648, 67, 65, 69, 0, 0, 0, 308, 0,
- 61, 57, 0, 62, 71, 66, 60, 70, 0, 0,
- 0, 0, 653, 0, 0, 658, 0, 57, 0, 62,
- 71, 66, 60, 70, 0, 310, 0, 0, 678, 0,
- 0, 526, 0, 34, 0, 0, 0, 0, 0, 0,
- 0, 690, 0, 0, 64, 0, 0, 0, 0, 0,
- 0, 491, 564, 59, 0, 310, 0, 0, 634, 634,
- 634, 634, 68, 63, 0, 622, 0, 0, 491, 0,
- 0, 0, 678, 0, 0, 0, 0, 0, 0, 197,
- 55, 0, 0, 0, 0, 640, 641, 0, 644, 644,
- 644, 0, 0, 310, 0, 0, 0, 0, 0, 0,
- 0, 0, 197, 0, 0, 0, 197, 0, 0, 0,
- 0, 0, 0, 335, 334, 344, 345, 337, 338, 339,
- 340, 341, 342, 343, 336, 491, 0, 346, 0, 0,
- 0, 416, 491, 0, 0, 0, 0, 0, 310, 0,
- 173, 0, 0, 0, 0, 0, 0, 0, 0, 58,
- 0, 67, 65, 69, 197, 0, 0, 0, 0, 61,
- 0, 0, 0, 0, 0, 0, 0, 0, 204, 0,
- 0, 712, 0, 713, 0, 0, 57, 0, 62, 71,
- 66, 60, 70, 0, 330, 0, 333, 0, 0, 0,
- 0, 0, 347, 348, 349, 350, 351, 352, 353, 197,
- 331, 332, 329, 335, 334, 344, 345, 337, 338, 339,
- 340, 341, 342, 343, 336, 0, 0, 346, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 197,
- 197, 197, 197, 0, 0, 0, 0, 0, 0, 0,
- 708, 0, 0, 197, 205, 162, 149, 123, 164, 101,
- 115, 172, 116, 117, 143, 89, 131, 64, 113, 0,
- 104, 85, 110, 86, 102, 125, 59, 128, 100, 151,
- 134, 170, 0, 138, 0, 68, 63, 0, 0, 127,
- 156, 129, 148, 122, 144, 94, 137, 165, 114, 141,
- 0, 0, 0, 55, 0, 0, 0, 0, 0, 0,
- 0, 0, 140, 161, 112, 142, 84, 139, 0, 87,
- 90, 171, 159, 107, 108, 0, 0, 0, 0, 0,
- 0, 0, 126, 130, 145, 120, 0, 0, 0, 0,
- 0, 0, 687, 0, 105, 0, 136, 0, 0, 0,
- 91, 88, 124, 0, 0, 0, 93, 0, 106, 146,
- 0, 157, 121, 173, 160, 119, 118, 163, 166, 155,
- 103, 111, 58, 109, 67, 65, 69, 99, 158, 152,
- 153, 154, 61, 0, 97, 98, 95, 96, 132, 133,
- 167, 168, 169, 147, 92, 0, 0, 150, 135, 57,
- 0, 62, 71, 66, 60, 70, 162, 149, 123, 164,
- 101, 115, 172, 116, 117, 143, 89, 131, 64, 113,
- 0, 104, 85, 110, 86, 102, 125, 59, 128, 100,
- 151, 134, 170, 0, 138, 0, 68, 63, 0, 0,
- 127, 156, 129, 148, 122, 144, 94, 137, 165, 114,
- 141, 35, 0, 0, 55, 0, 0, 0, 0, 0,
- 0, 0, 0, 140, 161, 112, 142, 84, 139, 0,
- 87, 90, 171, 159, 107, 108, 0, 0, 0, 0,
- 0, 0, 0, 126, 130, 145, 120, 0, 0, 0,
- 0, 0, 0, 0, 0, 105, 0, 136, 0, 0,
- 0, 91, 88, 124, 0, 0, 0, 93, 0, 106,
- 146, 0, 157, 121, 173, 160, 119, 118, 163, 166,
- 155, 103, 111, 58, 109, 67, 65, 69, 99, 158,
- 152, 153, 154, 61, 0, 97, 98, 95, 96, 132,
- 133, 167, 168, 169, 147, 92, 0, 0, 150, 135,
- 57, 0, 62, 71, 66, 60, 70, 162, 149, 123,
- 164, 101, 115, 172, 116, 117, 143, 89, 131, 64,
- 113, 0, 104, 85, 110, 86, 102, 125, 59, 128,
- 100, 151, 134, 170, 0, 138, 0, 68, 63, 0,
- 0, 127, 156, 129, 148, 122, 144, 94, 137, 165,
- 114, 141, 0, 0, 0, 206, 0, 0, 0, 0,
- 0, 0, 0, 0, 140, 161, 112, 142, 84, 139,
- 0, 87, 90, 171, 159, 107, 108, 0, 0, 0,
- 0, 0, 0, 0, 126, 130, 145, 120, 0, 0,
- 0, 0, 0, 0, 614, 0, 105, 0, 136, 0,
- 0, 0, 91, 88, 124, 0, 0, 0, 93, 0,
- 106, 146, 0, 157, 121, 173, 160, 119, 118, 163,
- 166, 155, 103, 111, 58, 109, 67, 65, 69, 99,
- 158, 152, 153, 154, 61, 0, 97, 98, 95, 96,
- 132, 133, 167, 168, 169, 147, 92, 0, 0, 150,
- 135, 57, 0, 62, 71, 66, 60, 70, 162, 149,
- 123, 164, 101, 115, 172, 116, 117, 143, 89, 131,
- 64, 113, 0, 104, 85, 110, 86, 102, 125, 59,
- 128, 100, 151, 134, 170, 0, 138, 0, 68, 63,
- 0, 0, 127, 156, 129, 148, 122, 144, 94, 137,
- 165, 114, 141, 0, 0, 0, 55, 0, 0, 0,
- 0, 0, 0, 0, 0, 140, 161, 112, 142, 84,
- 139, 0, 87, 90, 171, 159, 107, 108, 0, 0,
- 0, 0, 0, 0, 0, 126, 130, 145, 120, 0,
- 0, 0, 0, 0, 0, 0, 0, 105, 0, 136,
- 0, 0, 0, 91, 88, 124, 0, 0, 0, 93,
- 0, 106, 146, 0, 157, 121, 173, 160, 119, 118,
- 163, 166, 155, 103, 111, 58, 109, 67, 65, 69,
- 99, 158, 152, 153, 154, 61, 0, 97, 98, 95,
- 96, 132, 133, 167, 168, 169, 147, 92, 0, 0,
- 150, 135, 57, 0, 62, 71, 66, 60, 70, 162,
- 149, 123, 164, 101, 115, 172, 116, 117, 143, 89,
- 131, 64, 113, 0, 104, 85, 110, 86, 102, 125,
- 59, 128, 100, 151, 134, 170, 0, 138, 0, 68,
- 63, 0, 0, 127, 156, 129, 148, 122, 144, 94,
- 137, 165, 114, 141, 0, 0, 0, 206, 0, 0,
- 0, 0, 0, 0, 0, 0, 140, 161, 112, 142,
- 84, 139, 0, 87, 90, 171, 159, 107, 108, 0,
- 0, 0, 0, 0, 0, 0, 126, 130, 145, 120,
- 0, 0, 0, 0, 0, 0, 0, 0, 105, 0,
- 136, 0, 0, 0, 91, 88, 124, 0, 0, 0,
- 93, 0, 106, 146, 0, 157, 121, 173, 160, 119,
- 118, 163, 166, 155, 103, 111, 58, 109, 67, 65,
- 69, 99, 158, 152, 153, 154, 61, 0, 97, 98,
- 95, 96, 132, 133, 167, 168, 169, 147, 92, 0,
- 0, 150, 135, 57, 0, 62, 71, 66, 60, 70,
- 162, 149, 123, 164, 101, 115, 172, 116, 117, 143,
- 89, 131, 64, 113, 0, 104, 85, 110, 86, 102,
- 125, 59, 128, 100, 151, 134, 170, 0, 138, 0,
- 68, 63, 0, 0, 127, 156, 129, 148, 122, 144,
- 94, 137, 165, 114, 141, 0, 0, 0, 198, 0,
- 0, 0, 0, 0, 0, 0, 0, 140, 161, 112,
- 142, 84, 139, 0, 87, 90, 171, 159, 107, 108,
- 0, 0, 0, 0, 0, 0, 0, 126, 130, 145,
- 120, 0, 0, 0, 0, 0, 0, 0, 0, 105,
- 0, 136, 0, 0, 0, 91, 88, 124, 0, 0,
- 0, 93, 0, 106, 146, 0, 157, 121, 173, 160,
- 119, 118, 163, 166, 155, 103, 111, 58, 109, 67,
- 65, 69, 99, 158, 152, 153, 154, 61, 0, 97,
- 98, 95, 96, 132, 133, 167, 168, 169, 147, 92,
- 0, 0, 150, 135, 57, 0, 62, 71, 66, 60,
- 70, 162, 149, 123, 164, 101, 115, 172, 116, 117,
- 143, 89, 131, 64, 113, 0, 104, 85, 110, 86,
- 102, 125, 59, 128, 100, 151, 134, 170, 0, 138,
- 0, 68, 63, 0, 0, 127, 156, 129, 148, 122,
- 144, 94, 137, 165, 114, 141, 0, 0, 0, 81,
- 0, 0, 0, 0, 0, 0, 0, 0, 140, 161,
- 112, 142, 84, 139, 0, 87, 90, 171, 159, 107,
- 108, 0, 0, 0, 0, 0, 0, 0, 126, 130,
- 145, 120, 0, 0, 0, 0, 0, 0, 0, 0,
- 105, 0, 136, 0, 0, 0, 91, 88, 124, 0,
- 0, 0, 93, 0, 106, 146, 0, 157, 121, 173,
- 160, 119, 118, 163, 166, 155, 103, 111, 58, 109,
- 67, 65, 69, 99, 158, 152, 153, 154, 61, 0,
- 97, 98, 95, 96, 132, 133, 167, 168, 169, 147,
- 92, 0, 0, 150, 135, 57, 0, 62, 71, 66,
- 60, 70, 64, 0, 0, 486, 0, 233, 0, 0,
- 0, 59, 0, 0, 0, 0, 268, 0, 0, 0,
- 68, 63, 0, 0, 0, 0, 261, 262, 0, 0,
- 0, 0, 0, 0, 0, 35, 0, 0, 206, 251,
- 250, 252, 253, 254, 255, 0, 0, 256, 248, 249,
- 0, 0, 230, 242, 0, 267, 344, 345, 337, 338,
- 339, 340, 341, 342, 343, 336, 0, 0, 346, 0,
- 0, 0, 0, 0, 0, 239, 240, 489, 0, 0,
- 0, 279, 0, 241, 0, 0, 238, 243, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 173, 0,
- 0, 277, 0, 0, 0, 0, 0, 58, 0, 67,
- 65, 69, 0, 0, 0, 0, 0, 61, 0, 269,
- 278, 275, 276, 273, 274, 272, 271, 270, 280, 263,
- 264, 266, 0, 265, 57, 0, 62, 71, 66, 60,
- 70, 64, 0, 0, 0, 0, 233, 0, 0, 0,
- 59, 0, 0, 0, 0, 268, 0, 0, 0, 68,
- 63, 0, 0, 0, 0, 261, 262, 0, 0, 0,
- 0, 0, 0, 0, 35, 0, 0, 206, 251, 250,
- 252, 253, 254, 255, 0, 0, 256, 248, 249, 0,
- 0, 230, 242, 0, 267, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 239, 240, 489, 0, 0, 0,
- 279, 0, 241, 0, 0, 238, 243, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 173, 0, 0,
- 277, 0, 0, 0, 0, 0, 58, 0, 67, 65,
- 69, 0, 0, 0, 0, 0, 61, 0, 269, 278,
- 275, 276, 273, 274, 272, 271, 270, 280, 263, 264,
- 266, 0, 265, 57, 0, 62, 71, 66, 60, 70,
- 64, 0, 0, 0, 0, 233, 0, 0, 0, 59,
- 0, 0, 0, 0, 268, 0, 0, 0, 68, 63,
- 0, 0, 0, 0, 261, 262, 0, 0, 0, 0,
- 0, 0, 0, 35, 0, 224, 206, 251, 250, 252,
- 253, 254, 255, 0, 0, 256, 248, 249, 0, 0,
- 230, 242, 0, 267, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 239, 240, 0, 0, 0, 0, 279,
- 0, 241, 0, 0, 238, 243, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 173, 0, 0, 277,
- 0, 0, 0, 0, 0, 58, 0, 67, 65, 69,
- 0, 0, 0, 0, 0, 61, 0, 269, 278, 275,
- 276, 273, 274, 272, 271, 270, 280, 263, 264, 266,
- 17, 265, 57, 0, 62, 71, 66, 60, 70, 0,
- 0, 64, 0, 0, 0, 0, 233, 0, 0, 0,
- 59, 0, 0, 0, 0, 268, 0, 0, 0, 68,
- 63, 0, 0, 0, 0, 261, 262, 0, 0, 0,
- 0, 0, 0, 0, 35, 0, 0, 206, 251, 250,
- 252, 253, 254, 255, 0, 0, 256, 248, 249, 0,
- 0, 230, 242, 0, 267, 0, 0, 0, 0, 0,
+ 219, 364, 666, 523, 618, 204, 198, 231, 524, 489,
+ 643, 255, 562, 617, 37, 178, 484, 363, 3, 306,
+ 487, 555, 304, 453, 221, 520, 417, 504, 54, 278,
+ 422, 284, 630, 81, 677, 230, 629, 172, 199, 36,
+ 292, 41, 187, 228, 744, 739, 743, 732, 233, 742,
+ 196, 177, 738, 731, 200, 196, 621, 660, 254, 209,
+ 43, 44, 45, 46, 427, 214, 308, 173, 174, 175,
+ 176, 206, 486, 376, 71, 72, 72, 196, 312, 196,
+ 309, 533, 434, 196, 34, 532, 477, 477, 478, 478,
+ 410, 412, 572, 544, 80, 531, 432, 207, 210, 546,
+ 77, 73, 477, 194, 478, 202, 320, 319, 194, 74,
+ 75, 76, 353, 354, 682, 649, 218, 597, 566, 536,
+ 362, 437, 300, 321, 296, 333, 343, 318, 343, 321,
+ 194, 299, 194, 624, 479, 479, 194, 718, 332, 331,
+ 341, 342, 334, 335, 336, 337, 338, 339, 340, 333,
+ 479, 213, 343, 505, 460, 480, 480, 730, 411, 573,
+ 302, 320, 319, 319, 286, 728, 652, 655, 458, 459,
+ 457, 480, 505, 34, 580, 431, 433, 430, 321, 321,
+ 688, 692, 727, 456, 545, 303, 543, 215, 574, 224,
+ 279, 715, 220, 445, 447, 448, 280, 196, 446, 196,
+ 220, 281, 34, 196, 719, 336, 337, 338, 339, 340,
+ 333, 196, 435, 343, 54, 493, 196, 54, 38, 196,
+ 391, 392, 196, 436, 664, 220, 282, 298, 216, 684,
+ 220, 418, 320, 319, 311, 592, 324, 332, 331, 341,
+ 342, 334, 335, 336, 337, 338, 339, 340, 333, 321,
+ 194, 343, 294, 320, 319, 560, 194, 548, 549, 550,
+ 626, 664, 320, 319, 194, 560, 365, 560, 220, 194,
+ 321, 298, 194, 374, 556, 194, 596, 220, 351, 321,
+ 722, 389, 394, 247, 246, 248, 249, 250, 251, 54,
+ 589, 252, 576, 220, 196, 537, 393, 408, 200, 196,
+ 493, 220, 196, 521, 315, 405, 200, 54, 401, 420,
+ 668, 671, 672, 673, 669, 196, 670, 674, 196, 741,
+ 421, 196, 54, 725, 424, 395, 17, 414, 17, 442,
+ 443, 560, 449, 450, 413, 724, 701, 419, 454, 440,
+ 378, 379, 380, 381, 382, 383, 384, 194, 476, 202,
+ 700, 403, 294, 404, 521, 415, 298, 202, 17, 415,
+ 15, 184, 632, 416, 492, 494, 54, 423, 194, 451,
+ 34, 194, 34, 70, 194, 455, 365, 54, 507, 498,
+ 499, 54, 491, 637, 495, 188, 189, 737, 323, 481,
+ 482, 334, 335, 336, 337, 338, 339, 340, 333, 279,
+ 182, 343, 34, 509, 502, 34, 518, 192, 704, 702,
+ 522, 200, 54, 705, 703, 547, 525, 191, 513, 512,
+ 490, 415, 322, 441, 527, 285, 490, 490, 535, 423,
+ 517, 735, 534, 54, 54, 530, 320, 319, 283, 689,
+ 496, 497, 635, 290, 490, 490, 490, 490, 590, 425,
+ 314, 539, 706, 321, 672, 673, 222, 676, 508, 490,
+ 510, 511, 202, 185, 186, 285, 516, 540, 223, 454,
+ 179, 694, 695, 519, 515, 180, 668, 671, 672, 673,
+ 669, 551, 670, 674, 38, 558, 723, 663, 418, 197,
+ 256, 33, 679, 317, 40, 54, 569, 570, 571, 253,
+ 42, 575, 35, 568, 1, 78, 455, 582, 675, 583,
+ 584, 585, 586, 291, 561, 581, 426, 48, 542, 541,
+ 196, 429, 52, 205, 33, 514, 528, 593, 594, 595,
+ 183, 579, 500, 390, 277, 693, 365, 662, 578, 373,
+ 503, 232, 54, 196, 490, 598, 201, 196, 591, 444,
+ 602, 243, 240, 242, 241, 396, 603, 402, 559, 325,
+ 611, 490, 225, 409, 287, 667, 665, 631, 588, 54,
+ 659, 717, 400, 194, 607, 577, 613, 39, 190, 14,
+ 606, 612, 54, 13, 616, 12, 491, 619, 620, 11,
+ 625, 10, 623, 9, 8, 196, 194, 615, 7, 6,
+ 194, 636, 54, 54, 525, 54, 54, 54, 5, 227,
+ 54, 645, 646, 638, 642, 627, 4, 650, 651, 490,
+ 656, 657, 181, 654, 628, 415, 490, 647, 16, 2,
+ 0, 0, 0, 423, 0, 0, 661, 0, 633, 0,
+ 196, 680, 0, 0, 683, 0, 685, 686, 194, 525,
+ 0, 0, 0, 0, 0, 54, 0, 681, 0, 0,
+ 691, 0, 0, 0, 0, 0, 0, 0, 0, 603,
+ 196, 196, 196, 196, 33, 0, 0, 707, 709, 0,
+ 0, 196, 711, 633, 196, 0, 710, 200, 54, 714,
+ 54, 0, 0, 194, 716, 0, 495, 721, 697, 305,
+ 699, 696, 305, 698, 720, 365, 0, 0, 307, 0,
+ 0, 307, 0, 633, 633, 633, 633, 0, 729, 726,
+ 352, 0, 0, 194, 194, 194, 194, 633, 0, 736,
+ 0, 0, 733, 734, 708, 0, 0, 194, 202, 0,
+ 740, 0, 0, 0, 361, 0, 0, 366, 367, 368,
+ 369, 370, 371, 372, 0, 375, 377, 377, 377, 377,
+ 377, 377, 377, 377, 385, 386, 387, 388, 341, 342,
+ 334, 335, 336, 337, 338, 339, 340, 333, 406, 0,
+ 343, 0, 0, 397, 0, 0, 0, 0, 0, 0,
+ 201, 0, 305, 0, 0, 0, 0, 0, 201, 0,
+ 307, 307, 0, 0, 193, 0, 0, 305, 0, 327,
+ 0, 330, 0, 0, 0, 0, 307, 344, 345, 346,
+ 347, 348, 349, 350, 0, 328, 329, 326, 332, 331,
+ 341, 342, 334, 335, 336, 337, 338, 339, 340, 333,
+ 0, 0, 343, 33, 355, 356, 357, 358, 359, 360,
+ 0, 0, 0, 0, 208, 0, 0, 366, 0, 0,
+ 483, 0, 307, 0, 0, 0, 0, 0, 0, 0,
+ 0, 501, 0, 0, 0, 506, 211, 0, 212, 0,
+ 0, 0, 217, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 526, 62, 33, 0, 0,
+ 0, 0, 0, 201, 0, 57, 529, 0, 0, 0,
+ 0, 0, 0, 0, 66, 61, 0, 0, 0, 305,
+ 0, 0, 0, 0, 0, 0, 0, 538, 307, 0,
+ 0, 0, 53, 0, 0, 452, 0, 0, 461, 462,
+ 463, 464, 465, 466, 467, 468, 469, 470, 471, 472,
+ 473, 474, 475, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 332, 331, 341, 342, 334,
+ 335, 336, 337, 338, 339, 340, 333, 0, 0, 343,
+ 0, 0, 567, 0, 0, 0, 0, 0, 0, 564,
+ 0, 0, 171, 0, 0, 0, 289, 0, 0, 0,
+ 0, 56, 297, 65, 63, 67, 0, 0, 0, 0,
+ 301, 59, 0, 0, 0, 310, 0, 608, 313, 0,
+ 0, 316, 599, 600, 601, 0, 0, 0, 55, 0,
+ 60, 69, 64, 58, 68, 0, 307, 332, 331, 341,
+ 342, 334, 335, 336, 337, 338, 339, 340, 333, 0,
+ 0, 343, 331, 341, 342, 334, 335, 336, 337, 338,
+ 339, 340, 333, 564, 0, 343, 307, 0, 552, 553,
+ 554, 0, 0, 0, 0, 0, 622, 0, 0, 0,
+ 634, 0, 0, 526, 0, 0, 639, 17, 18, 19,
+ 20, 0, 0, 407, 0, 305, 640, 641, 0, 644,
+ 644, 644, 0, 0, 307, 0, 0, 0, 0, 653,
+ 21, 0, 658, 0, 428, 62, 0, 438, 17, 563,
+ 439, 0, 0, 0, 57, 678, 0, 0, 526, 62,
+ 33, 34, 0, 66, 61, 0, 0, 0, 57, 0,
+ 0, 0, 0, 0, 0, 0, 0, 66, 61, 307,
+ 0, 53, 0, 565, 0, 634, 634, 634, 634, 0,
+ 0, 0, 34, 320, 319, 195, 609, 610, 0, 678,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 201,
+ 321, 0, 712, 0, 713, 0, 0, 22, 23, 25,
+ 24, 26, 0, 0, 0, 0, 0, 0, 0, 0,
+ 27, 28, 29, 0, 0, 30, 31, 32, 0, 0,
+ 0, 171, 0, 0, 0, 0, 0, 0, 648, 0,
+ 56, 0, 65, 63, 67, 171, 0, 0, 0, 0,
+ 59, 0, 0, 0, 56, 0, 65, 63, 67, 0,
+ 0, 0, 0, 0, 59, 0, 0, 55, 0, 60,
+ 69, 64, 58, 68, 0, 0, 0, 0, 0, 0,
+ 0, 55, 0, 60, 69, 64, 58, 68, 690, 0,
+ 160, 147, 121, 162, 99, 113, 170, 114, 115, 141,
+ 87, 129, 62, 111, 0, 102, 83, 108, 84, 100,
+ 123, 57, 126, 98, 149, 132, 168, 0, 136, 0,
+ 66, 61, 0, 0, 125, 154, 127, 146, 120, 142,
+ 92, 135, 163, 112, 139, 0, 0, 0, 53, 587,
+ 0, 0, 0, 0, 0, 0, 0, 138, 159, 110,
+ 140, 82, 137, 0, 85, 88, 169, 157, 105, 106,
+ 0, 0, 604, 0, 0, 0, 605, 124, 128, 143,
+ 118, 0, 0, 0, 0, 0, 0, 687, 0, 103,
+ 0, 134, 0, 0, 0, 89, 86, 122, 0, 0,
+ 0, 91, 0, 104, 144, 0, 155, 119, 171, 158,
+ 117, 116, 161, 164, 153, 101, 109, 56, 107, 65,
+ 63, 67, 97, 156, 150, 151, 152, 59, 0, 95,
+ 96, 93, 94, 130, 131, 165, 166, 167, 145, 90,
+ 0, 0, 148, 133, 55, 0, 60, 69, 64, 58,
+ 68, 160, 147, 121, 162, 99, 113, 170, 114, 115,
+ 141, 87, 129, 62, 111, 0, 102, 83, 108, 84,
+ 100, 123, 57, 126, 98, 149, 132, 168, 0, 136,
+ 0, 66, 61, 0, 0, 125, 154, 127, 146, 120,
+ 142, 92, 135, 163, 112, 139, 34, 0, 0, 53,
+ 0, 0, 0, 0, 0, 0, 0, 0, 138, 159,
+ 110, 140, 82, 137, 0, 85, 88, 169, 157, 105,
+ 106, 0, 0, 0, 0, 0, 0, 0, 124, 128,
+ 143, 118, 0, 0, 0, 0, 0, 0, 0, 0,
+ 103, 0, 134, 0, 0, 0, 89, 86, 122, 0,
+ 0, 0, 91, 0, 104, 144, 0, 155, 119, 171,
+ 158, 117, 116, 161, 164, 153, 101, 109, 56, 107,
+ 65, 63, 67, 97, 156, 150, 151, 152, 59, 0,
+ 95, 96, 93, 94, 130, 131, 165, 166, 167, 145,
+ 90, 0, 0, 148, 133, 55, 0, 60, 69, 64,
+ 58, 68, 160, 147, 121, 162, 99, 113, 170, 114,
+ 115, 141, 87, 129, 62, 111, 0, 102, 83, 108,
+ 84, 100, 123, 57, 126, 98, 149, 132, 168, 0,
+ 136, 0, 66, 61, 0, 0, 125, 154, 127, 146,
+ 120, 142, 92, 135, 163, 112, 139, 0, 0, 0,
+ 203, 0, 0, 0, 0, 0, 0, 0, 0, 138,
+ 159, 110, 140, 82, 137, 0, 85, 88, 169, 157,
+ 105, 106, 0, 0, 0, 0, 0, 0, 0, 124,
+ 128, 143, 118, 0, 0, 0, 0, 0, 0, 614,
+ 0, 103, 0, 134, 0, 0, 0, 89, 86, 122,
+ 0, 0, 0, 91, 0, 104, 144, 0, 155, 119,
+ 171, 158, 117, 116, 161, 164, 153, 101, 109, 56,
+ 107, 65, 63, 67, 97, 156, 150, 151, 152, 59,
+ 0, 95, 96, 93, 94, 130, 131, 165, 166, 167,
+ 145, 90, 0, 0, 148, 133, 55, 0, 60, 69,
+ 64, 58, 68, 160, 147, 121, 162, 99, 113, 170,
+ 114, 115, 141, 87, 129, 62, 111, 0, 102, 83,
+ 108, 84, 100, 123, 57, 126, 98, 149, 132, 168,
+ 0, 136, 0, 66, 61, 0, 0, 125, 154, 127,
+ 146, 120, 142, 92, 135, 163, 112, 139, 0, 0,
+ 0, 53, 0, 0, 0, 0, 0, 0, 0, 0,
+ 138, 159, 110, 140, 82, 137, 0, 85, 88, 169,
+ 157, 105, 106, 0, 0, 0, 0, 0, 0, 0,
+ 124, 128, 143, 118, 0, 0, 0, 0, 0, 0,
+ 0, 0, 103, 0, 134, 0, 0, 0, 89, 86,
+ 122, 0, 0, 0, 91, 0, 104, 144, 0, 155,
+ 119, 171, 158, 117, 116, 161, 164, 153, 101, 109,
+ 56, 107, 65, 63, 67, 97, 156, 150, 151, 152,
+ 59, 0, 95, 96, 93, 94, 130, 131, 165, 166,
+ 167, 145, 90, 0, 0, 148, 133, 55, 0, 60,
+ 69, 64, 58, 68, 160, 147, 121, 162, 99, 113,
+ 170, 114, 115, 141, 87, 129, 62, 111, 0, 102,
+ 83, 108, 84, 100, 123, 57, 126, 98, 149, 132,
+ 168, 0, 136, 0, 66, 61, 0, 0, 125, 154,
+ 127, 146, 120, 142, 92, 135, 163, 112, 139, 0,
+ 0, 0, 203, 0, 0, 0, 0, 0, 0, 0,
+ 0, 138, 159, 110, 140, 82, 137, 0, 85, 88,
+ 169, 157, 105, 106, 0, 0, 0, 0, 0, 0,
+ 0, 124, 128, 143, 118, 0, 0, 0, 0, 0,
+ 0, 0, 0, 103, 0, 134, 0, 0, 0, 89,
+ 86, 122, 0, 0, 0, 91, 0, 104, 144, 0,
+ 155, 119, 171, 158, 117, 116, 161, 164, 153, 101,
+ 109, 56, 107, 65, 63, 67, 97, 156, 150, 151,
+ 152, 59, 0, 95, 96, 93, 94, 130, 131, 165,
+ 166, 167, 145, 90, 0, 0, 148, 133, 55, 0,
+ 60, 69, 64, 58, 68, 160, 147, 121, 162, 99,
+ 113, 170, 114, 115, 141, 87, 129, 62, 111, 0,
+ 102, 83, 108, 84, 100, 123, 57, 126, 98, 149,
+ 132, 168, 0, 136, 0, 66, 61, 0, 0, 125,
+ 154, 127, 146, 120, 142, 92, 135, 163, 112, 139,
+ 0, 0, 0, 195, 0, 0, 0, 0, 0, 0,
+ 0, 0, 138, 159, 110, 140, 82, 137, 0, 85,
+ 88, 169, 157, 105, 106, 0, 0, 0, 0, 0,
+ 0, 0, 124, 128, 143, 118, 0, 0, 0, 0,
+ 0, 0, 0, 0, 103, 0, 134, 0, 0, 0,
+ 89, 86, 122, 0, 0, 0, 91, 0, 104, 144,
+ 0, 155, 119, 171, 158, 117, 116, 161, 164, 153,
+ 101, 109, 56, 107, 65, 63, 67, 97, 156, 150,
+ 151, 152, 59, 0, 95, 96, 93, 94, 130, 131,
+ 165, 166, 167, 145, 90, 0, 0, 148, 133, 55,
+ 0, 60, 69, 64, 58, 68, 160, 147, 121, 162,
+ 99, 113, 170, 114, 115, 141, 87, 129, 62, 111,
+ 0, 102, 83, 108, 84, 100, 123, 57, 126, 98,
+ 149, 132, 168, 0, 136, 0, 66, 61, 0, 0,
+ 125, 154, 127, 146, 120, 142, 92, 135, 163, 112,
+ 139, 0, 0, 0, 79, 0, 0, 0, 0, 0,
+ 0, 0, 0, 138, 159, 110, 140, 82, 137, 0,
+ 85, 88, 169, 157, 105, 106, 0, 0, 0, 0,
+ 0, 0, 0, 124, 128, 143, 118, 0, 0, 0,
+ 0, 0, 0, 0, 0, 103, 0, 134, 0, 0,
+ 0, 89, 86, 122, 0, 0, 0, 91, 0, 104,
+ 144, 0, 155, 119, 171, 158, 117, 116, 161, 164,
+ 153, 101, 109, 56, 107, 65, 63, 67, 97, 156,
+ 150, 151, 152, 59, 0, 95, 96, 93, 94, 130,
+ 131, 165, 166, 167, 145, 90, 0, 0, 148, 133,
+ 55, 0, 60, 69, 64, 58, 68, 62, 0, 0,
+ 485, 0, 229, 0, 0, 0, 57, 0, 0, 0,
+ 0, 264, 0, 0, 0, 66, 61, 0, 0, 0,
+ 0, 257, 258, 0, 0, 0, 0, 0, 0, 0,
+ 34, 557, 0, 203, 247, 246, 248, 249, 250, 251,
+ 0, 0, 252, 244, 245, 0, 0, 226, 238, 0,
+ 263, 332, 331, 341, 342, 334, 335, 336, 337, 338,
+ 339, 340, 333, 0, 0, 343, 0, 0, 0, 0,
+ 235, 236, 488, 0, 0, 0, 275, 0, 237, 0,
+ 0, 234, 239, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 171, 0, 0, 273, 0, 0, 0,
+ 0, 0, 56, 0, 65, 63, 67, 0, 0, 0,
+ 0, 0, 59, 0, 265, 274, 271, 272, 269, 270,
+ 268, 267, 266, 276, 259, 260, 262, 0, 261, 55,
+ 0, 60, 69, 64, 58, 68, 62, 0, 0, 0,
+ 0, 229, 0, 0, 0, 57, 0, 0, 0, 0,
+ 264, 0, 0, 0, 66, 61, 0, 0, 0, 0,
+ 257, 258, 0, 0, 0, 0, 0, 0, 0, 34,
+ 0, 0, 203, 247, 246, 248, 249, 250, 251, 0,
+ 0, 252, 244, 245, 0, 0, 226, 238, 0, 263,
+ 332, 331, 341, 342, 334, 335, 336, 337, 338, 339,
+ 340, 333, 0, 0, 343, 0, 0, 0, 0, 235,
+ 236, 488, 0, 0, 0, 275, 0, 237, 0, 0,
+ 234, 239, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 171, 0, 0, 273, 0, 0, 0, 0,
+ 0, 56, 0, 65, 63, 67, 0, 0, 0, 0,
+ 0, 59, 0, 265, 274, 271, 272, 269, 270, 268,
+ 267, 266, 276, 259, 260, 262, 0, 261, 55, 0,
+ 60, 69, 64, 58, 68, 62, 0, 0, 0, 0,
+ 229, 0, 0, 0, 57, 0, 0, 0, 0, 264,
+ 0, 0, 0, 66, 61, 0, 0, 0, 0, 257,
+ 258, 0, 0, 0, 0, 0, 0, 0, 34, 0,
+ 220, 203, 247, 246, 248, 249, 250, 251, 0, 0,
+ 252, 244, 245, 0, 0, 226, 238, 0, 263, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 239, 240, 0, 0, 0, 0,
- 279, 0, 241, 0, 0, 238, 243, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 173, 0, 0,
- 277, 0, 0, 0, 0, 0, 58, 0, 67, 65,
- 69, 0, 0, 0, 0, 0, 61, 0, 269, 278,
- 275, 276, 273, 274, 272, 271, 270, 280, 263, 264,
- 266, 0, 265, 57, 0, 62, 71, 66, 60, 70,
- 64, 0, 0, 0, 0, 233, 0, 0, 0, 59,
- 0, 0, 0, 0, 268, 0, 0, 0, 68, 63,
- 0, 0, 0, 0, 261, 262, 0, 0, 0, 0,
- 0, 0, 0, 35, 0, 0, 206, 251, 250, 252,
- 253, 254, 255, 0, 0, 256, 248, 249, 0, 0,
- 230, 242, 0, 267, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 235, 236,
+ 0, 0, 0, 0, 275, 0, 237, 0, 0, 234,
+ 239, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 171, 0, 0, 273, 0, 0, 0, 0, 0,
+ 56, 0, 65, 63, 67, 0, 0, 0, 0, 0,
+ 59, 0, 265, 274, 271, 272, 269, 270, 268, 267,
+ 266, 276, 259, 260, 262, 17, 261, 55, 0, 60,
+ 69, 64, 58, 68, 0, 0, 62, 0, 0, 0,
+ 0, 229, 0, 0, 0, 57, 0, 0, 0, 0,
+ 264, 0, 0, 0, 66, 61, 0, 0, 0, 0,
+ 257, 258, 0, 0, 0, 0, 0, 0, 0, 34,
+ 0, 0, 203, 247, 246, 248, 249, 250, 251, 0,
+ 0, 252, 244, 245, 0, 0, 226, 238, 0, 263,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 239, 240, 0, 0, 0, 0, 279,
- 0, 241, 0, 0, 238, 243, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 173, 0, 0, 277,
- 0, 0, 0, 0, 0, 58, 0, 67, 65, 69,
- 0, 0, 0, 0, 0, 61, 0, 269, 278, 275,
- 276, 273, 274, 272, 271, 270, 280, 263, 264, 266,
- 64, 265, 57, 0, 62, 71, 66, 60, 70, 59,
- 0, 0, 0, 0, 268, 0, 0, 0, 68, 63,
- 0, 0, 0, 0, 261, 262, 0, 0, 0, 0,
- 0, 0, 0, 35, 0, 0, 206, 251, 250, 252,
- 253, 254, 255, 0, 0, 256, 248, 249, 0, 0,
- 0, 242, 0, 267, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 235,
+ 236, 0, 0, 0, 0, 275, 0, 237, 0, 0,
+ 234, 239, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 171, 0, 0, 273, 0, 0, 0, 0,
+ 0, 56, 0, 65, 63, 67, 0, 0, 0, 0,
+ 0, 59, 0, 265, 274, 271, 272, 269, 270, 268,
+ 267, 266, 276, 259, 260, 262, 0, 261, 55, 0,
+ 60, 69, 64, 58, 68, 62, 0, 0, 0, 0,
+ 229, 0, 0, 0, 57, 0, 0, 0, 0, 264,
+ 0, 0, 0, 66, 61, 0, 0, 0, 0, 257,
+ 258, 0, 0, 0, 0, 0, 0, 0, 34, 0,
+ 0, 203, 247, 246, 248, 249, 250, 251, 0, 0,
+ 252, 244, 245, 0, 0, 226, 238, 0, 263, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 239, 240, 0, 0, 0, 0, 279,
- 0, 241, 0, 0, 238, 243, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 173, 0, 0, 277,
- 0, 0, 0, 0, 0, 58, 0, 67, 65, 69,
- 0, 0, 0, 0, 0, 61, 0, 269, 278, 275,
- 276, 273, 274, 272, 271, 270, 280, 263, 264, 266,
- 64, 265, 57, 0, 62, 71, 66, 60, 70, 59,
- 0, 0, 0, 0, 268, 0, 0, 0, 68, 63,
- 0, 0, 0, 0, 261, 262, 0, 0, 0, 0,
- 0, 0, 0, 35, 0, 0, 206, 251, 250, 252,
- 253, 254, 255, 0, 0, 256, 17, 0, 0, 0,
- 0, 242, 0, 267, 0, 0, 0, 64, 0, 0,
- 0, 0, 0, 0, 0, 0, 59, 0, 0, 0,
- 0, 0, 0, 239, 240, 68, 63, 0, 0, 279,
- 0, 241, 0, 0, 238, 243, 0, 0, 0, 0,
- 35, 0, 0, 198, 0, 0, 173, 0, 0, 277,
- 0, 0, 0, 0, 0, 58, 0, 67, 65, 69,
- 0, 0, 0, 0, 0, 61, 0, 269, 278, 275,
- 276, 273, 274, 272, 271, 270, 280, 263, 264, 266,
- 17, 265, 57, 0, 62, 71, 66, 60, 70, 0,
- 0, 64, 0, 0, 0, 0, 0, 0, 0, 0,
- 59, 0, 0, 173, 0, 0, 0, 0, 0, 68,
- 63, 0, 58, 0, 67, 65, 69, 0, 0, 0,
- 0, 0, 61, 0, 35, 0, 0, 55, 64, 0,
- 0, 0, 296, 0, 0, 0, 0, 59, 0, 57,
- 0, 62, 71, 66, 60, 70, 68, 63, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 235, 236,
+ 0, 0, 0, 0, 275, 0, 237, 0, 0, 234,
+ 239, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 171, 0, 0, 273, 0, 0, 0, 0, 0,
+ 56, 0, 65, 63, 67, 0, 0, 0, 0, 0,
+ 59, 0, 265, 274, 271, 272, 269, 270, 268, 267,
+ 266, 276, 259, 260, 262, 62, 261, 55, 0, 60,
+ 69, 64, 58, 68, 57, 0, 0, 0, 0, 264,
+ 0, 0, 0, 66, 61, 0, 0, 0, 0, 257,
+ 258, 0, 0, 0, 0, 0, 0, 0, 34, 0,
+ 0, 203, 247, 246, 248, 249, 250, 251, 0, 0,
+ 252, 244, 245, 0, 0, 0, 238, 0, 263, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 198, 0, 298, 0, 0, 0,
- 0, 64, 0, 0, 0, 0, 0, 0, 0, 0,
- 59, 0, 0, 0, 0, 0, 0, 173, 0, 68,
- 63, 0, 0, 0, 0, 0, 58, 0, 67, 65,
- 69, 0, 0, 0, 35, 0, 61, 198, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 64, 0, 57, 173, 62, 71, 66, 60, 70,
- 59, 0, 0, 58, 0, 67, 65, 69, 0, 68,
- 63, 0, 0, 61, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 55, 0, 565,
- 57, 0, 62, 71, 66, 60, 70, 173, 0, 0,
- 0, 0, 0, 0, 64, 0, 58, 0, 67, 65,
- 69, 0, 0, 59, 0, 0, 61, 0, 0, 0,
- 0, 0, 68, 63, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 57, 0, 62, 71, 66, 60, 70,
- 198, 0, 298, 0, 0, 0, 0, 173, 0, 0,
- 0, 0, 0, 0, 64, 0, 58, 0, 67, 65,
- 69, 0, 291, 59, 0, 0, 61, 0, 0, 0,
- 0, 0, 68, 63, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 57, 0, 62, 71, 66, 60, 70,
- 198, 0, 0, 0, 0, 0, 0, 64, 0, 0,
- 173, 0, 0, 0, 0, 0, 59, 0, 0, 58,
- 0, 67, 65, 69, 0, 68, 63, 0, 0, 61,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 55, 64, 0, 57, 0, 62, 71,
- 66, 60, 70, 59, 0, 0, 0, 0, 64, 0,
- 173, 0, 68, 63, 0, 0, 0, 59, 0, 58,
- 0, 67, 65, 69, 0, 0, 68, 63, 0, 61,
- 206, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 198, 0, 57, 0, 62, 71,
- 66, 60, 70, 173, 0, 0, 0, 0, 0, 0,
- 0, 0, 58, 0, 67, 65, 69, 0, 0, 0,
- 0, 0, 61, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 57,
- 173, 62, 71, 66, 60, 70, 0, 0, 0, 58,
- 0, 67, 65, 69, 173, 0, 0, 0, 0, 61,
- 0, 0, 0, 58, 0, 67, 65, 69, 0, 0,
- 0, 0, 0, 61, 0, 0, 57, 0, 62, 71,
- 66, 60, 70, 0, 0, 0, 0, 0, 0, 0,
- 57, 0, 62, 71, 66, 60, 70,
+ 0, 0, 0, 0, 0, 0, 0, 0, 235, 236,
+ 0, 0, 0, 0, 275, 0, 237, 0, 0, 234,
+ 239, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 171, 0, 0, 273, 0, 0, 0, 0, 0,
+ 56, 0, 65, 63, 67, 0, 0, 0, 0, 0,
+ 59, 0, 265, 274, 271, 272, 269, 270, 268, 267,
+ 266, 276, 259, 260, 262, 62, 261, 55, 0, 60,
+ 69, 64, 58, 68, 57, 0, 0, 0, 0, 264,
+ 0, 0, 0, 66, 61, 0, 0, 0, 0, 257,
+ 258, 0, 0, 0, 0, 0, 0, 0, 34, 0,
+ 0, 203, 247, 246, 248, 249, 250, 251, 0, 0,
+ 252, 62, 0, 0, 0, 0, 238, 0, 263, 0,
+ 57, 0, 0, 0, 0, 0, 0, 0, 0, 66,
+ 61, 0, 0, 0, 0, 0, 0, 0, 235, 236,
+ 0, 0, 0, 0, 275, 0, 237, 53, 0, 234,
+ 239, 0, 0, 0, 0, 0, 0, 0, 0, 50,
+ 0, 171, 0, 0, 273, 0, 0, 0, 0, 0,
+ 56, 0, 65, 63, 67, 0, 0, 0, 0, 0,
+ 59, 0, 265, 274, 271, 272, 269, 270, 268, 267,
+ 266, 276, 259, 260, 262, 17, 261, 55, 0, 60,
+ 69, 64, 58, 68, 0, 47, 62, 49, 0, 0,
+ 0, 51, 0, 0, 0, 57, 56, 0, 65, 63,
+ 67, 0, 62, 0, 66, 61, 59, 0, 0, 0,
+ 0, 57, 0, 0, 0, 0, 0, 0, 0, 34,
+ 66, 61, 53, 55, 0, 60, 69, 64, 58, 68,
+ 0, 0, 0, 0, 0, 0, 62, 0, 53, 0,
+ 293, 398, 0, 0, 399, 57, 0, 0, 0, 0,
+ 62, 0, 0, 0, 66, 61, 0, 0, 0, 57,
+ 0, 0, 0, 0, 0, 0, 0, 0, 66, 61,
+ 0, 0, 195, 0, 295, 0, 0, 0, 0, 0,
+ 0, 0, 171, 34, 0, 0, 195, 0, 0, 0,
+ 0, 56, 0, 65, 63, 67, 0, 62, 171, 0,
+ 0, 59, 0, 0, 0, 0, 57, 56, 0, 65,
+ 63, 67, 0, 0, 0, 66, 61, 59, 55, 0,
+ 60, 69, 64, 58, 68, 0, 0, 0, 0, 0,
+ 0, 0, 171, 53, 55, 565, 60, 69, 64, 58,
+ 68, 56, 0, 65, 63, 67, 171, 0, 0, 0,
+ 0, 59, 0, 0, 0, 56, 0, 65, 63, 67,
+ 62, 0, 0, 0, 0, 59, 0, 0, 55, 57,
+ 60, 69, 64, 58, 68, 0, 0, 0, 66, 61,
+ 0, 0, 55, 0, 60, 69, 64, 58, 68, 0,
+ 0, 0, 0, 171, 0, 0, 195, 0, 295, 0,
+ 0, 0, 56, 0, 65, 63, 67, 62, 0, 0,
+ 0, 0, 59, 0, 0, 288, 57, 0, 0, 0,
+ 0, 62, 0, 0, 0, 66, 61, 0, 0, 55,
+ 57, 60, 69, 64, 58, 68, 0, 0, 0, 66,
+ 61, 0, 0, 195, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 62, 171, 53, 0, 0,
+ 0, 0, 0, 0, 57, 56, 0, 65, 63, 67,
+ 62, 0, 0, 66, 61, 59, 0, 0, 0, 57,
+ 0, 0, 0, 0, 0, 0, 0, 0, 66, 61,
+ 0, 203, 55, 0, 60, 69, 64, 58, 68, 0,
+ 0, 0, 0, 171, 0, 0, 195, 0, 0, 0,
+ 0, 0, 56, 0, 65, 63, 67, 171, 0, 0,
+ 0, 0, 59, 0, 0, 0, 56, 0, 65, 63,
+ 67, 0, 0, 0, 0, 0, 59, 0, 0, 55,
+ 0, 60, 69, 64, 58, 68, 0, 0, 0, 0,
+ 0, 171, 0, 55, 0, 60, 69, 64, 58, 68,
+ 56, 0, 65, 63, 67, 0, 171, 0, 0, 0,
+ 59, 0, 0, 0, 0, 56, 0, 65, 63, 67,
+ 0, 0, 0, 0, 0, 59, 0, 55, 0, 60,
+ 69, 64, 58, 68, 0, 0, 0, 0, 0, 0,
+ 0, 0, 55, 0, 60, 69, 64, 58, 68,
}
var yyPact = [...]int{
- 356, -1000, -110, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
- -1000, -1000, -1000, -1000, -1000, 457, 480, -1000, -1000, -1000,
- -1000, -1000, 136, -5, 27, 19, 24, 2236, -1000, -1000,
- -1000, -1000, -1000, 490, 269, -1000, -1000, -1000, 445, 453,
- 445, 337, 439, 354, -1000, -25, 3661, 479, 3647, -29,
- 13, 3661, -70, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
+ 1081, -1000, -117, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
+ -1000, -1000, -1000, -1000, -1000, 470, 489, -1000, -1000, -1000,
+ -1000, -1000, 3174, -39, -10, -2, -11, 2171, -1000, -1000,
+ -1000, -1000, -1000, 320, -1000, -1000, -1000, 454, 460, 355,
+ 444, 348, -1000, -40, 3553, 479, 3538, -45, -15, 3553,
+ -84, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
+ -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
+ -13, 3553, -1000, 3553, -51, 134, -51, 3553, -1000, -1000,
-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
- -1000, -1000, 22, 3661, -1000, 3661, -32, 170, -32, 3661,
-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
@@ -807,80 +799,79 @@ var yyPact = [...]int{
-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
+ -1000, -1000, -1000, -1000, -1000, -1000, -1000, 148, 438, 2868,
+ 2868, 470, -1000, 320, -1000, -1000, -1000, 405, -1000, -1000,
+ 103, 3490, 414, 3319, 21, -1000, -1000, 3553, 176, -1000,
+ 56, -1000, 19, -1000, -1000, 3553, 93, 132, 1416, -33,
+ 3553, 1416, -36, 3553, 428, 255, 3553, -1000, -1000, -1000,
+ -1000, -1000, 485, 42, 371, -1000, 2868, 742, -1000, 152,
+ -1000, 8, -1000, -1000, 3128, 3128, 3128, 3128, 3128, 3128,
-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
- -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 337,
- 176, 402, 2933, 2933, 402, -1000, -1000, -1000, -1000, -1000,
- 394, -1000, -1000, 135, 3567, 395, 3371, 47, -1000, -1000,
- 3661, 182, -1000, 89, -1000, 46, -1000, -1000, 3661, 120,
- 165, 1481, -4, 3661, 1481, -9, 3661, 418, 305, 3661,
- -1000, -1000, -1000, -1000, -1000, -1000, 485, 66, 233, -1000,
- 2933, 1207, -1000, 187, -1000, 35, -1000, -1000, 3193, 3193,
- 3193, 3193, 3193, 3193, -1000, -1000, -1000, -1000, -1000, -1000,
- -1000, -1000, -1000, -1000, -1000, -1000, -1000, 187, 45, -1000,
- 2794, 187, 187, 187, 187, 187, 187, 2933, 187, 187,
- 187, 187, 187, 187, 187, 187, 187, 187, 187, 187,
- 187, 272, -1000, 468, -1000, 354, 942, 307, -1000, -1000,
- 328, 3661, -1000, 3647, 80, -1000, 3517, -1000, -1000, 2085,
- 476, 3647, 2933, 1934, 1481, 417, -41, -1000, -1000, -1000,
- -1000, -1000, 3661, 101, -1000, 3661, -1000, -1000, 3661, 1481,
- -1000, 374, 2933, 2933, 172, 2933, 2933, 74, 3063, 144,
- 158, 3193, 3193, 3193, 3193, 3193, 3193, 3193, 3193, 3193,
- 3193, 3193, 3193, 3193, 3193, 3193, 21, -1000, -1000, -1000,
- -1000, -1000, -1000, -1000, -1000, 269, 508, 508, 36, 36,
- 36, 36, 36, 1117, 2375, 1934, 176, 288, 133, 2794,
- 2514, 2514, 2933, 2933, 3610, 440, 115, 133, 3610, -1000,
- 176, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 2514, 2514,
- 2514, 2514, 2933, -1000, -1000, -1000, 440, 460, -1000, 385,
- 384, 2514, -1000, 303, 3647, 187, -1000, 3334, -1000, 298,
- -1000, 11, 4, 2, -1000, -1000, -1000, -1000, 457, 2933,
- -1000, 133, -1000, 43, -1000, -1000, -1000, 279, 3610, 1481,
- -1000, 91, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
- -1000, -1000, 368, 74, 86, -1000, -1000, 201, -1000, -1000,
- 133, 133, -1000, 689, -1000, -1000, -1000, -1000, 144, 3193,
- 3193, 3193, 88, 689, 815, 2358, 829, 36, 186, 186,
- 63, 63, 63, 63, 63, 357, 357, -1000, -1000, -1000,
- -1000, -1000, -1000, -1000, -1000, 176, 2514, 250, -1000, -1000,
- 958, 42, 187, -1000, 2933, -1000, 176, 242, 242, 55,
- 238, 262, -1000, 2514, 96, -1000, 2933, 176, -1000, 242,
- 176, 242, 242, -1000, 3661, -1000, -1000, -1000, -1000, 338,
- -1000, 412, 295, 197, -1000, -1000, 2653, 176, 244, 41,
- 457, 187, 187, 187, 445, 133, 1783, 3661, -1000, -1000,
- -1000, 3661, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
- -1000, -1000, 88, 689, 733, -1000, 3193, 3193, -1000, 242,
- 2514, -1000, -1000, 3464, -1000, -1000, 1632, 2514, 133, -1000,
- -1000, -1000, 21, 21, 21, -82, 3610, 255, 87, -1000,
- 2933, 125, -1000, -1000, -1000, -1000, -1000, -1000, 476, 3414,
- 406, -1000, 187, -1000, -1000, 311, 3610, 3610, 445, 3610,
- 3610, 3610, -1000, -1000, 1481, -1000, -1000, -1000, 3193, 689,
- 689, -1000, -1000, -1000, -1000, 39, 176, 176, 25, 176,
- 176, 187, -1000, -75, -1000, 133, 2933, 461, 204, 726,
- -1000, -1000, -1000, 421, 3250, 482, -1000, 187, -1000, 269,
- 38, -1000, -1000, 222, -1000, 222, 222, -1000, 689, 1330,
- -1000, -1000, -1000, 157, -1000, 393, -1000, -1000, 3193, 176,
- 161, 133, 466, 452, 3414, 3414, 3414, 3414, -1000, 351,
- 347, -1000, 332, 331, 389, 3661, -1000, 220, 3250, 3647,
- 197, 176, 3610, -1000, 3610, -1000, -1000, -1000, 215, 21,
- 7, -1000, -1000, -1000, 2933, 2933, 726, 203, 795, -1000,
- -1000, -1000, -1000, 335, -1000, 316, -1000, -1000, -1000, -1000,
- 182, -1000, -1000, -1000, 33, 156, -1000, 176, 20, -95,
- 133, 173, 2933, 2933, -1000, -1000, -1000, 390, 176, -1000,
- 367, -91, -101, 133, 133, 21, -1000, -1000, 341, -1000,
- -1000, -93, -97, -103, -1000,
+ -1000, -1000, -1000, 152, 17, -1000, 2729, 152, 152, 152,
+ 152, 152, 152, 2868, 152, 152, 152, 152, 152, 152,
+ 152, 152, 152, 152, 152, 152, 152, 230, -1000, 197,
+ 454, 148, 348, 3285, 268, -1000, -1000, 322, 3553, -1000,
+ 3538, 43, -1000, 3443, -1000, -1000, 2020, 477, 3538, 2868,
+ 1869, 1416, 427, -54, -1000, -1000, -1000, -1000, -1000, 3553,
+ 68, -1000, 3553, -1000, -1000, 3553, 1416, -1000, 388, 2868,
+ 2868, 131, 2868, 2868, 47, 2998, 123, 85, 3128, 3128,
+ 3128, 3128, 3128, 3128, 3128, 3128, 3128, 3128, 3128, 3128,
+ 3128, 3128, 3128, 33, -1000, -1000, -1000, -1000, -1000, -1000,
+ -1000, -1000, 320, 229, 229, 26, 26, 26, 26, 26,
+ 879, 2310, 1869, 148, 249, 96, 2729, 2449, 2449, 2868,
+ 2868, 3504, 445, 82, 96, 3504, -1000, 148, -1000, -1000,
+ -1000, -1000, -1000, -1000, -1000, 2449, 2449, 2449, 2449, 2868,
+ -1000, -1000, -1000, 438, -1000, 445, 456, -1000, 399, 375,
+ 2449, -1000, 254, 3538, 152, -1000, 3269, -1000, 220, -1000,
+ -17, -27, -31, -1000, -1000, -1000, -1000, 470, 2868, -1000,
+ 96, -1000, 16, -1000, -1000, -1000, 246, 3504, 1416, -1000,
+ 72, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
+ -1000, 379, 47, 97, -1000, -1000, 195, -1000, -1000, 96,
+ 96, -1000, 2434, -1000, -1000, -1000, -1000, 123, 3128, 3128,
+ 3128, 151, 2434, 2295, 680, 965, 26, 113, 113, 28,
+ 28, 28, 28, 28, 301, 301, -1000, -1000, -1000, -1000,
+ -1000, -1000, -1000, -1000, 148, 2449, 214, -1000, -1000, 1098,
+ 15, 152, -1000, 2868, -1000, 148, 216, 216, 41, 167,
+ 241, -1000, 2449, 101, -1000, 2868, 148, -1000, 216, 148,
+ 216, 216, -1000, -1000, 3553, -1000, -1000, -1000, -1000, 280,
+ -1000, 422, 305, 184, -1000, -1000, 2588, 148, 225, 14,
+ 470, 152, 152, 152, 454, 96, 1718, 3553, -1000, -1000,
+ -1000, 3553, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
+ -1000, -1000, 151, 2434, 951, -1000, 3128, 3128, -1000, 216,
+ 2449, -1000, -1000, 3380, -1000, -1000, 1567, 2449, 96, -1000,
+ -1000, -1000, 33, 33, 33, -93, 3504, 204, 59, -1000,
+ 2868, 188, -1000, -1000, -1000, -1000, -1000, -1000, 477, 3333,
+ 415, -1000, 152, -1000, -1000, 352, 3504, 3504, 454, 3504,
+ 3504, 3504, -1000, -1000, 1416, -1000, -1000, -1000, 3128, 2434,
+ 2434, -1000, -1000, -1000, -1000, 12, 148, 148, 34, 148,
+ 148, 152, -1000, -90, -1000, 96, 2868, 475, 210, 271,
+ -1000, -1000, -1000, 436, 1112, 484, -1000, 152, -1000, 320,
+ 11, -1000, -1000, 178, -1000, 178, 178, -1000, 2434, 1265,
+ -1000, -1000, -1000, 124, -1000, 410, -1000, -1000, 3128, 148,
+ 126, 96, 458, 457, 3333, 3333, 3333, 3333, -1000, 311,
+ 297, -1000, 370, 369, 413, 3553, -1000, 173, 1112, 3538,
+ 184, 148, 3504, -1000, 3504, -1000, -1000, -1000, 140, 33,
+ 52, -1000, -1000, -1000, 2868, 2868, 271, 231, 437, -1000,
+ -1000, -1000, -1000, 296, -1000, 284, -1000, -1000, -1000, -1000,
+ 176, -1000, -1000, -1000, 49, 109, -1000, 148, 7, -106,
+ 96, 164, 2868, 2868, -1000, -1000, -1000, 402, 148, -1000,
+ 351, -99, -109, 96, 96, 33, -1000, -1000, 283, -1000,
+ -1000, -103, -107, -110, -1000,
}
var yyPgo = [...]int{
- 0, 633, 47, 49, 631, 41, 630, 629, 628, 626,
- 625, 624, 622, 614, 613, 600, 599, 43, 598, 410,
- 32, 597, 44, 593, 592, 24, 54, 17, 23, 9,
- 591, 14, 2, 34, 588, 580, 8, 576, 37, 573,
- 358, 572, 10, 26, 571, 31, 568, 561, 36, 472,
- 559, 557, 556, 554, 553, 551, 29, 1, 3, 15,
- 16, 546, 42, 6, 545, 21, 540, 539, 538, 537,
- 18, 535, 30, 532, 20, 45, 531, 530, 25, 13,
- 39, 524, 366, 165, 523, 522, 521, 519, 517, 515,
- 22, 5, 578, 7, 19, 514, 654, 27, 40, 509,
- 507, 38, 11, 4, 12, 506, 505, 503, 483, 0,
- 500, 124,
+ 0, 629, 17, 360, 628, 622, 616, 608, 599, 598,
+ 594, 593, 591, 589, 585, 583, 579, 41, 578, 577,
+ 31, 572, 42, 571, 570, 21, 72, 16, 20, 9,
+ 568, 34, 36, 32, 567, 566, 2, 565, 804, 564,
+ 362, 563, 10, 26, 562, 43, 559, 557, 35, 609,
+ 555, 554, 553, 552, 551, 549, 23, 1, 3, 11,
+ 8, 541, 48, 7, 540, 27, 539, 538, 537, 535,
+ 14, 534, 29, 533, 15, 24, 532, 526, 25, 6,
+ 38, 525, 373, 151, 523, 521, 519, 518, 517, 516,
+ 66, 5, 499, 19, 12, 514, 58, 30, 40, 513,
+ 508, 37, 22, 4, 13, 505, 504, 502, 490, 0,
+ 500, 73,
}
var yyR1 = [...]int{
@@ -933,8 +924,8 @@ var yyR1 = [...]int{
var yyR2 = [...]int{
0, 2, 0, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 4, 4, 7, 10,
- 3, 3, 1, 3, 6, 7, 8, 7, 3, 5,
+ 1, 1, 1, 1, 1, 1, 4, 6, 7, 10,
+ 1, 3, 1, 3, 6, 7, 8, 7, 3, 5,
8, 4, 6, 6, 7, 7, 4, 5, 4, 5,
5, 3, 1, 1, 1, 3, 2, 2, 2, 2,
2, 0, 2, 0, 2, 1, 2, 2, 0, 1,
@@ -983,55 +974,55 @@ var yyChk = [...]int{
-1000, -106, -1, -2, -6, -7, -8, -9, -10, -11,
-12, -13, -14, -15, -16, -3, -4, 6, 7, 8,
9, 29, 106, 107, 109, 108, 110, 119, 120, 121,
- 124, 125, 126, -5, -108, 50, -107, 156, -70, 14,
- -70, -19, 5, -17, -110, -17, -17, -17, -17, 111,
- -88, 113, 65, 117, -92, 53, -91, 149, 122, 26,
- 154, 132, 151, 36, 17, 125, 153, 124, 35, 126,
- 155, 152, -82, 113, 115, 111, 111, 112, 113, 111,
- -105, 53, -90, -91, 66, 21, 23, 69, 101, 15,
- 70, 100, 144, 106, 45, 136, 137, 134, 135, 127,
- 28, 9, 24, 120, 20, 94, 108, 73, 74, 123,
- 22, 121, 64, 18, 48, 10, 12, 13, 116, 115,
- 85, 112, 43, 7, 102, 25, 82, 39, 27, 41,
- 83, 16, 138, 139, 30, 148, 96, 46, 33, 67,
- 62, 49, 65, 14, 44, 84, 109, 143, 42, 6,
- 147, 29, 129, 130, 131, 119, 40, 111, 128, 72,
- 114, 63, 5, 117, 8, 47, 118, 140, 141, 142,
- 31, 71, 11, 113, -101, -101, -101, -101, -101, -19,
- -2, -74, 16, 15, -74, -5, -3, 6, 19, 20,
- -22, 37, 38, -18, -82, -40, -38, -96, 53, -91,
- 10, -79, -80, -63, -92, -96, 53, -91, -84, 116,
- 112, -38, 143, 111, -38, -38, -83, 116, 53, -83,
- -38, -101, -5, -109, 52, -75, 18, 30, -29, -44,
- 67, -49, -45, 22, -48, -63, -61, -62, 101, 90,
- 91, 98, 68, 102, -53, -51, -52, -54, 63, 64,
- 55, 54, 56, 57, 58, 59, 62, -92, -96, -59,
- -108, 41, 42, 144, 145, 148, 146, 70, 31, 134,
- 142, 141, 140, 138, 139, 136, 137, 116, 135, 96,
- 143, -71, -72, -29, -75, -17, 33, -20, 20, 61,
- -39, 25, -38, 29, -99, -98, 21, -96, 55, 103,
- -38, 51, 75, 103, -38, 67, 53, -102, -108, -93,
- -92, -90, 113, -38, -102, 114, -38, 22, 49, -38,
- 8, 85, 66, 65, 82, 51, 17, -29, -46, 85,
- 67, 83, 84, 69, 87, 86, 97, 90, 91, 92,
- 93, 94, 95, 96, 88, 89, 100, 75, 76, 77,
- 78, 79, 80, 81, -62, -108, 104, 105, -49, -49,
- -49, -49, -49, -49, -108, 103, -2, -57, -29, -108,
- -108, -108, -108, -108, -108, -108, -66, -29, -108, -111,
- -108, -111, -111, -111, -111, -111, -111, -111, -108, -108,
- -108, -108, 51, -73, 23, 24, -22, -50, -92, 56,
- 59, -21, 40, -47, 29, 31, -2, -108, -38, -79,
- -41, 47, 115, 48, -98, -97, -96, -90, -43, 11,
- -80, -29, -93, -97, -90, -102, 22, -89, 118, -38,
- -85, 109, 107, 28, 108, 14, 144, 155, 53, -38,
- -38, -102, 35, -29, -29, -55, 62, 67, 63, 64,
- -29, -29, -45, -49, -56, -59, -62, 60, 85, 83,
- 84, 69, -49, -49, -49, -49, -49, -49, -49, -49,
- -49, -49, -49, -49, -49, -49, -49, -103, 53, 55,
- 101, 122, -48, -48, -92, -27, 20, -26, -28, 92,
- -29, -96, -93, -109, 51, -109, -2, -26, -26, -29,
- -29, -76, -92, -20, -64, -65, 71, -92, -109, -26,
- -27, -26, -26, -72, -81, 18, 10, 31, 31, -26,
+ 124, 125, 126, -108, 50, -107, 156, -70, 14, -19,
+ 5, -17, -110, -17, -17, -17, -17, 111, -88, 113,
+ 65, 117, -92, 53, -91, 149, 122, 26, 154, 132,
+ 151, 36, 17, 125, 153, 124, 35, 126, 155, 152,
+ -82, 113, 115, 111, 111, 112, 113, 111, -105, 53,
+ -90, -91, 66, 21, 23, 69, 101, 15, 70, 100,
+ 144, 106, 45, 136, 137, 134, 135, 127, 28, 9,
+ 24, 120, 20, 94, 108, 73, 74, 123, 22, 121,
+ 64, 18, 48, 10, 12, 13, 116, 115, 85, 112,
+ 43, 7, 102, 25, 82, 39, 27, 41, 83, 16,
+ 138, 139, 30, 148, 96, 46, 33, 67, 62, 49,
+ 65, 14, 44, 84, 109, 143, 42, 6, 147, 29,
+ 129, 130, 131, 119, 40, 111, 128, 72, 114, 63,
+ 5, 117, 8, 47, 118, 140, 141, 142, 31, 71,
+ 11, 113, -101, -101, -101, -101, -101, -2, -74, 16,
+ 15, -5, -3, -108, 6, 19, 20, -22, 37, 38,
+ -18, -82, -40, -38, -96, 53, -91, 10, -79, -80,
+ -63, -92, -96, 53, -91, -84, 116, 112, -38, 143,
+ 111, -38, -38, -83, 116, 53, -83, -38, -101, -109,
+ 52, -75, 18, 30, -29, -44, 67, -49, -45, 22,
+ -48, -63, -61, -62, 101, 90, 91, 98, 68, 102,
+ -53, -51, -52, -54, 63, 64, 55, 54, 56, 57,
+ 58, 59, 62, -92, -96, -59, -108, 41, 42, 144,
+ 145, 148, 146, 70, 31, 134, 142, 141, 140, 138,
+ 139, 136, 137, 116, 135, 96, 143, -71, -72, -29,
+ -70, -2, -17, 33, -20, 20, 61, -39, 25, -38,
+ 29, -99, -98, 21, -96, 55, 103, -38, 51, 75,
+ 103, -38, 67, 53, -102, -108, -93, -92, -90, 113,
+ -38, -102, 114, -38, 22, 49, -38, 8, 85, 66,
+ 65, 82, 51, 17, -29, -46, 85, 67, 83, 84,
+ 69, 87, 86, 97, 90, 91, 92, 93, 94, 95,
+ 96, 88, 89, 100, 75, 76, 77, 78, 79, 80,
+ 81, -62, -108, 104, 105, -49, -49, -49, -49, -49,
+ -49, -108, 103, -2, -57, -29, -108, -108, -108, -108,
+ -108, -108, -108, -66, -29, -108, -111, -108, -111, -111,
+ -111, -111, -111, -111, -111, -108, -108, -108, -108, 51,
+ -73, 23, 24, -74, -109, -22, -50, -92, 56, 59,
+ -21, 40, -47, 29, 31, -2, -108, -38, -79, -41,
+ 47, 115, 48, -98, -97, -96, -90, -43, 11, -80,
+ -29, -93, -97, -90, -102, 22, -89, 118, -38, -85,
+ 109, 107, 28, 108, 14, 144, 155, 53, -38, -38,
+ -102, 35, -29, -29, -55, 62, 67, 63, 64, -29,
+ -29, -45, -49, -56, -59, -62, 60, 85, 83, 84,
+ 69, -49, -49, -49, -49, -49, -49, -49, -49, -49,
+ -49, -49, -49, -49, -49, -49, -103, 53, 55, 101,
+ 122, -48, -48, -92, -27, 20, -26, -28, 92, -29,
+ -96, -93, -109, 51, -109, -2, -26, -26, -29, -29,
+ -76, -92, -20, -64, -65, 71, -92, -109, -26, -27,
+ -26, -26, -72, -75, -81, 18, 10, 31, 31, -26,
-78, 49, -79, -58, -60, -59, -108, -2, -77, -92,
-43, 112, 112, 112, -70, -29, 103, 49, -92, -102,
-101, -86, -87, 114, 21, 112, 27, 36, 62, 63,
@@ -1058,59 +1049,59 @@ var yyChk = [...]int{
}
var yyDef = [...]int{
- 0, -2, 2, 4, 5, 6, 7, 8, 9, 10,
- 11, 12, 13, 14, 15, -2, 260, 51, 51, 51,
+ 0, -2, 2, -2, 5, 6, 7, 8, 9, 10,
+ 11, 12, 13, 14, 15, 260, 0, 51, 51, 51,
51, 51, 318, 304, 0, 0, 0, 0, 438, 438,
- 438, 438, 438, 0, 0, 436, 1, 3, 268, 0,
- 268, 0, 55, 58, 53, 304, 0, 0, 0, 302,
- 0, 434, 0, 319, 320, 323, 324, 420, 421, 422,
- 423, 424, 425, 426, 427, 428, 429, 430, 431, 432,
- 433, 435, 0, 0, 305, 0, 300, 0, 300, 0,
- 438, 42, 43, 44, 331, 332, 333, 334, 335, 336,
- 337, 338, 339, 340, 341, 342, 343, 344, 345, 346,
- 347, 348, 349, 350, 351, 352, 353, 354, 355, 356,
- 357, 358, 359, 360, 361, 362, 363, 364, 365, 366,
- 367, 368, 369, 370, 371, 372, 373, 374, 375, 376,
- 377, 378, 379, 380, 381, 382, 383, 384, 385, 386,
- 387, 388, 389, 390, 391, 392, 393, 394, 395, 396,
- 397, 398, 399, 400, 401, 402, 403, 404, 405, 406,
- 407, 408, 409, 410, 411, 412, 413, 414, 415, 416,
- 417, 418, 419, 434, 46, 47, 48, 49, 50, 0,
- 0, 272, 0, 0, 272, 21, 22, 51, 56, 57,
- 61, 59, 60, 52, 0, 0, 94, 111, 327, 328,
- 0, 28, 295, 0, 243, 0, -2, -2, 0, 0,
- 0, 439, 0, 0, 439, 0, 0, 0, 0, 0,
- 41, 45, 20, 23, 437, 16, 0, 0, 269, 121,
- 0, 126, 129, 0, 166, 167, 168, 169, 0, 0,
- 0, 0, 0, 0, 191, 192, 193, 194, 127, 128,
- 246, 247, 248, 249, 250, 251, 252, 243, 0, 294,
- 0, 0, 0, 0, 0, 0, 0, 234, 0, 215,
- 215, 215, 215, 215, 215, 215, 215, 0, 0, 0,
- 0, 261, 262, 265, 17, 58, 0, 63, 62, 54,
- 0, 0, 110, 0, 113, 95, 0, 97, 98, 0,
- 119, 0, 0, 0, 439, 0, 321, 31, 440, 441,
- 325, 326, 0, 0, 36, 0, 38, 301, 0, 439,
- 273, 0, 0, 0, 0, 0, 0, 124, 0, 0,
+ 438, 438, 438, 0, 436, 1, 3, 268, 0, 0,
+ 55, 58, 53, 304, 0, 0, 0, 302, 0, 434,
+ 0, 319, 320, 323, 324, 420, 421, 422, 423, 424,
+ 425, 426, 427, 428, 429, 430, 431, 432, 433, 435,
+ 0, 0, 305, 0, 300, 0, 300, 0, 438, 42,
+ 43, 44, 331, 332, 333, 334, 335, 336, 337, 338,
+ 339, 340, 341, 342, 343, 344, 345, 346, 347, 348,
+ 349, 350, 351, 352, 353, 354, 355, 356, 357, 358,
+ 359, 360, 361, 362, 363, 364, 365, 366, 367, 368,
+ 369, 370, 371, 372, 373, 374, 375, 376, 377, 378,
+ 379, 380, 381, 382, 383, 384, 385, 386, 387, 388,
+ 389, 390, 391, 392, 393, 394, 395, 396, 397, 398,
+ 399, 400, 401, 402, 403, 404, 405, 406, 407, 408,
+ 409, 410, 411, 412, 413, 414, 415, 416, 417, 418,
+ 419, 434, 46, 47, 48, 49, 50, 20, 272, 0,
+ 0, 260, 22, 0, 51, 56, 57, 61, 59, 60,
+ 52, 0, 0, 94, 111, 327, 328, 0, 28, 295,
+ 0, 243, 0, -2, -2, 0, 0, 0, 439, 0,
+ 0, 439, 0, 0, 0, 0, 0, 41, 45, 21,
+ 437, 16, 0, 0, 269, 121, 0, 126, 129, 0,
+ 166, 167, 168, 169, 0, 0, 0, 0, 0, 0,
+ 191, 192, 193, 194, 127, 128, 246, 247, 248, 249,
+ 250, 251, 252, 243, 0, 294, 0, 0, 0, 0,
+ 0, 0, 0, 234, 0, 215, 215, 215, 215, 215,
+ 215, 215, 215, 0, 0, 0, 0, 261, 262, 265,
+ 268, 20, 58, 0, 63, 62, 54, 0, 0, 110,
+ 0, 113, 95, 0, 97, 98, 0, 119, 0, 0,
+ 0, 439, 0, 321, 31, 440, 441, 325, 326, 0,
+ 0, 36, 0, 38, 301, 0, 439, 273, 0, 0,
+ 0, 0, 0, 0, 124, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 147, 148, 149,
- 150, 151, 152, 153, 140, 0, 0, 0, 185, 186,
- 187, 188, 189, 0, 65, 0, 0, 0, 160, 0,
- 0, 0, 0, 0, 0, 61, 0, 235, 0, 207,
- 0, 208, 209, 210, 211, 212, 213, 214, 0, 65,
- 0, 0, 0, 264, 266, 267, 61, 0, 253, 0,
- 0, 0, 64, 287, 0, 0, 278, 0, 109, 119,
- 87, 0, 0, 0, 96, 112, 329, 330, 260, 0,
- 296, 297, 244, 0, -2, 29, 303, 0, 0, 439,
- 438, 313, 306, 307, 308, 309, 310, 311, 312, 37,
- 39, 40, 0, 122, 123, 125, 141, 0, 143, 145,
- 270, 271, 130, 131, 132, 156, 157, 158, 0, 0,
- 0, 0, 154, 136, 0, 170, 171, 172, 173, 174,
- 175, 176, 177, 178, 179, 180, 181, 184, 162, 163,
- 164, 165, 182, 183, 190, 0, 0, 66, 67, 69,
- 73, 0, 244, 159, 0, 293, 0, 0, 0, 0,
- 0, 0, 275, 0, 241, 238, 0, 0, 216, 0,
- 0, 0, 0, 263, 0, 298, 299, 254, 255, 78,
- 24, 0, 287, 277, 289, 291, 0, 0, 0, 283,
+ 0, 0, 0, 0, 147, 148, 149, 150, 151, 152,
+ 153, 140, 0, 0, 0, 185, 186, 187, 188, 189,
+ 0, 65, 0, 20, 0, 160, 0, 0, 0, 0,
+ 0, 0, 61, 0, 235, 0, 207, 0, 208, 209,
+ 210, 211, 212, 213, 214, 0, 65, 0, 0, 0,
+ 264, 266, 267, 272, 23, 61, 0, 253, 0, 0,
+ 0, 64, 287, 0, 0, -2, 0, 109, 119, 87,
+ 0, 0, 0, 96, 112, 329, 330, 260, 0, 296,
+ 297, 244, 0, -2, 29, 303, 0, 0, 439, 438,
+ 313, 306, 307, 308, 309, 310, 311, 312, 37, 39,
+ 40, 0, 122, 123, 125, 141, 0, 143, 145, 270,
+ 271, 130, 131, 132, 156, 157, 158, 0, 0, 0,
+ 0, 154, 136, 0, 170, 171, 172, 173, 174, 175,
+ 176, 177, 178, 179, 180, 181, 184, 162, 163, 164,
+ 165, 182, 183, 190, 0, 0, 66, 67, 69, 73,
+ 0, 244, 159, 0, 293, 20, 0, 0, 0, 0,
+ 0, 275, 0, 241, 238, 0, 0, 216, 0, 0,
+ 0, 0, 263, 17, 0, 298, 299, 254, 255, 78,
+ 24, 0, 287, 277, 289, 291, 0, 20, 0, 283,
260, 0, 0, 0, 268, 120, 0, 0, 322, 32,
33, 0, 438, 314, 315, 316, 317, 274, 142, 144,
146, 133, 154, 137, 0, 134, 0, 0, 195, 0,
@@ -1121,12 +1112,12 @@ var yyDef = [...]int{
0, 0, 27, 245, 439, 34, 35, 135, 0, 155,
138, 196, 68, 75, 71, 0, 0, 0, 226, 0,
0, 0, 276, 236, 205, 242, 0, 256, 79, 80,
- 82, 83, 84, 92, 0, 0, 290, 0, 281, 0,
+ 82, 83, 84, 92, 0, 0, 290, 0, -2, 0,
285, 284, 26, 0, 117, 0, 0, 30, 139, 0,
197, 200, 227, 0, 231, 0, 201, 202, 0, 0,
0, 240, 258, 0, 0, 0, 0, 0, 99, 0,
0, 102, 0, 0, 0, 0, 93, 0, 0, 0,
- 280, 0, 0, 114, 0, 115, 116, 72, 0, 0,
+ 280, 20, 0, 114, 0, 115, 116, 72, 0, 0,
221, 204, 237, 19, 0, 0, 81, 88, 0, 91,
100, 101, 103, 0, 105, 0, 107, 108, 85, 86,
288, -2, 286, 118, 228, 0, 232, 0, 0, 0,
@@ -1510,29 +1501,29 @@ yydefault:
case 1:
yyDollar = yyS[yypt-2 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:202
+ //line sql.y:202
{
setParseTree(yylex, yyDollar[1].statement)
}
case 2:
yyDollar = yyS[yypt-0 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:207
+ //line sql.y:207
{
}
case 3:
yyDollar = yyS[yypt-1 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:208
+ //line sql.y:208
{
}
case 4:
yyDollar = yyS[yypt-1 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:212
+ //line sql.y:212
{
yyVAL.statement = yyDollar[1].selStmt
}
case 16:
yyDollar = yyS[yypt-4 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:229
+ //line sql.y:229
{
sel := yyDollar[1].selStmt.(*Select)
sel.OrderBy = yyDollar[2].orderBy
@@ -1541,54 +1532,50 @@ yydefault:
yyVAL.selStmt = sel
}
case 17:
- yyDollar = yyS[yypt-4 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:237
+ yyDollar = yyS[yypt-6 : yypt+1]
+ //line sql.y:237
{
- uni := yyDollar[1].selStmt.(*Union)
- uni.OrderBy = yyDollar[2].orderBy
- uni.Limit = yyDollar[3].limit
- uni.Lock = yyDollar[4].str
- yyVAL.selStmt = uni
+ yyVAL.selStmt = &Union{Type: yyDollar[2].str, Left: yyDollar[1].selStmt, Right: yyDollar[3].selStmt, OrderBy: yyDollar[4].orderBy, Limit: yyDollar[5].limit, Lock: yyDollar[6].str}
}
case 18:
yyDollar = yyS[yypt-7 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:245
+ //line sql.y:241
{
yyVAL.selStmt = &Select{Comments: Comments(yyDollar[2].bytes2), Cache: yyDollar[3].str, SelectExprs: SelectExprs{Nextval{Expr: yyDollar[5].expr}}, From: TableExprs{&AliasedTableExpr{Expr: yyDollar[7].tableName}}}
}
case 19:
yyDollar = yyS[yypt-10 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:252
+ //line sql.y:248
{
yyVAL.selStmt = &Select{Comments: Comments(yyDollar[2].bytes2), Cache: yyDollar[3].str, Distinct: yyDollar[4].str, Hints: yyDollar[5].str, SelectExprs: yyDollar[6].selectExprs, From: yyDollar[7].tableExprs, Where: NewWhere(WhereStr, yyDollar[8].expr), GroupBy: GroupBy(yyDollar[9].exprs), Having: NewWhere(HavingStr, yyDollar[10].expr)}
}
case 20:
- yyDollar = yyS[yypt-3 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:258
+ yyDollar = yyS[yypt-1 : yypt+1]
+ //line sql.y:254
{
- yyVAL.selStmt = &Union{Type: yyDollar[2].str, Left: yyDollar[1].selStmt, Right: yyDollar[3].selStmt}
+ yyVAL.selStmt = yyDollar[1].selStmt
}
case 21:
yyDollar = yyS[yypt-3 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:262
+ //line sql.y:258
{
- yyVAL.selStmt = &Union{Type: yyDollar[2].str, Left: yyDollar[1].selStmt, Right: yyDollar[3].selStmt}
+ yyVAL.selStmt = &ParenSelect{Select: yyDollar[2].selStmt}
}
case 22:
yyDollar = yyS[yypt-1 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:270
+ //line sql.y:264
{
yyVAL.selStmt = yyDollar[1].selStmt
}
case 23:
yyDollar = yyS[yypt-3 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:274
+ //line sql.y:268
{
yyVAL.selStmt = &ParenSelect{Select: yyDollar[2].selStmt}
}
case 24:
yyDollar = yyS[yypt-6 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:281
+ //line sql.y:275
{
// insert_data returns a *Insert pre-filled with Columns & Values
ins := yyDollar[5].ins
@@ -1600,7 +1587,7 @@ yydefault:
}
case 25:
yyDollar = yyS[yypt-7 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:291
+ //line sql.y:285
{
cols := make(Columns, 0, len(yyDollar[6].updateExprs))
vals := make(ValTuple, 0, len(yyDollar[7].updateExprs))
@@ -1612,82 +1599,82 @@ yydefault:
}
case 26:
yyDollar = yyS[yypt-8 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:303
+ //line sql.y:297
{
yyVAL.statement = &Update{Comments: Comments(yyDollar[2].bytes2), Table: yyDollar[3].aliasedTableName, Exprs: yyDollar[5].updateExprs, Where: NewWhere(WhereStr, yyDollar[6].expr), OrderBy: yyDollar[7].orderBy, Limit: yyDollar[8].limit}
}
case 27:
yyDollar = yyS[yypt-7 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:309
+ //line sql.y:303
{
yyVAL.statement = &Delete{Comments: Comments(yyDollar[2].bytes2), Table: yyDollar[4].tableName, Where: NewWhere(WhereStr, yyDollar[5].expr), OrderBy: yyDollar[6].orderBy, Limit: yyDollar[7].limit}
}
case 28:
yyDollar = yyS[yypt-3 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:315
+ //line sql.y:309
{
yyVAL.statement = &Set{Comments: Comments(yyDollar[2].bytes2), Exprs: yyDollar[3].updateExprs}
}
case 29:
yyDollar = yyS[yypt-5 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:321
+ //line sql.y:315
{
yyVAL.statement = &DDL{Action: CreateStr, NewName: yyDollar[4].tableName}
}
case 30:
yyDollar = yyS[yypt-8 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:325
+ //line sql.y:319
{
// Change this to an alter statement
yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[7].tableName, NewName: yyDollar[7].tableName}
}
case 31:
yyDollar = yyS[yypt-4 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:330
+ //line sql.y:324
{
yyVAL.statement = &DDL{Action: CreateStr, NewName: yyDollar[3].tableName.ToViewName()}
}
case 32:
yyDollar = yyS[yypt-6 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:334
+ //line sql.y:328
{
yyVAL.statement = &DDL{Action: CreateStr, NewName: yyDollar[5].tableName.ToViewName()}
}
case 33:
yyDollar = yyS[yypt-6 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:340
+ //line sql.y:334
{
yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[4].tableName, NewName: yyDollar[4].tableName}
}
case 34:
yyDollar = yyS[yypt-7 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:344
+ //line sql.y:338
{
// Change this to a rename statement
yyVAL.statement = &DDL{Action: RenameStr, Table: yyDollar[4].tableName, NewName: yyDollar[7].tableName}
}
case 35:
yyDollar = yyS[yypt-7 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:349
+ //line sql.y:343
{
// Rename an index can just be an alter
yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[4].tableName, NewName: yyDollar[4].tableName}
}
case 36:
yyDollar = yyS[yypt-4 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:354
+ //line sql.y:348
{
yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[3].tableName.ToViewName(), NewName: yyDollar[3].tableName.ToViewName()}
}
case 37:
yyDollar = yyS[yypt-5 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:360
+ //line sql.y:354
{
yyVAL.statement = &DDL{Action: RenameStr, Table: yyDollar[3].tableName, NewName: yyDollar[5].tableName}
}
case 38:
yyDollar = yyS[yypt-4 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:366
+ //line sql.y:360
{
var exists bool
if yyDollar[3].byt != 0 {
@@ -1697,14 +1684,14 @@ yydefault:
}
case 39:
yyDollar = yyS[yypt-5 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:374
+ //line sql.y:368
{
// Change this to an alter statement
yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[5].tableName, NewName: yyDollar[5].tableName}
}
case 40:
yyDollar = yyS[yypt-5 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:379
+ //line sql.y:373
{
var exists bool
if yyDollar[3].byt != 0 {
@@ -1714,19 +1701,19 @@ yydefault:
}
case 41:
yyDollar = yyS[yypt-3 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:389
+ //line sql.y:383
{
yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[3].tableName, NewName: yyDollar[3].tableName}
}
case 42:
yyDollar = yyS[yypt-1 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:395
+ //line sql.y:389
{
yyVAL.str = ShowUnsupportedStr
}
case 43:
yyDollar = yyS[yypt-1 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:399
+ //line sql.y:393
{
if string(yyDollar[1].bytes) == "databases" {
yyVAL.str = ShowDatabasesStr
@@ -1744,368 +1731,368 @@ yydefault:
}
case 44:
yyDollar = yyS[yypt-1 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:415
+ //line sql.y:409
{
yyVAL.str = ShowUnsupportedStr
}
case 45:
yyDollar = yyS[yypt-3 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:421
+ //line sql.y:415
{
yyVAL.statement = &Show{Type: yyDollar[2].str}
}
case 46:
yyDollar = yyS[yypt-2 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:427
+ //line sql.y:421
{
yyVAL.statement = &Other{}
}
case 47:
yyDollar = yyS[yypt-2 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:431
+ //line sql.y:425
{
yyVAL.statement = &Other{}
}
case 48:
yyDollar = yyS[yypt-2 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:435
+ //line sql.y:429
{
yyVAL.statement = &Other{}
}
case 49:
yyDollar = yyS[yypt-2 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:439
+ //line sql.y:433
{
yyVAL.statement = &Other{}
}
case 50:
yyDollar = yyS[yypt-2 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:443
+ //line sql.y:437
{
yyVAL.statement = &Other{}
}
case 51:
yyDollar = yyS[yypt-0 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:448
+ //line sql.y:442
{
setAllowComments(yylex, true)
}
case 52:
yyDollar = yyS[yypt-2 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:452
+ //line sql.y:446
{
yyVAL.bytes2 = yyDollar[2].bytes2
setAllowComments(yylex, false)
}
case 53:
yyDollar = yyS[yypt-0 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:458
+ //line sql.y:452
{
yyVAL.bytes2 = nil
}
case 54:
yyDollar = yyS[yypt-2 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:462
+ //line sql.y:456
{
yyVAL.bytes2 = append(yyDollar[1].bytes2, yyDollar[2].bytes)
}
case 55:
yyDollar = yyS[yypt-1 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:468
+ //line sql.y:462
{
yyVAL.str = UnionStr
}
case 56:
yyDollar = yyS[yypt-2 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:472
+ //line sql.y:466
{
yyVAL.str = UnionAllStr
}
case 57:
yyDollar = yyS[yypt-2 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:476
+ //line sql.y:470
{
yyVAL.str = UnionDistinctStr
}
case 58:
yyDollar = yyS[yypt-0 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:481
+ //line sql.y:475
{
yyVAL.str = ""
}
case 59:
yyDollar = yyS[yypt-1 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:485
+ //line sql.y:479
{
yyVAL.str = SQLNoCacheStr
}
case 60:
yyDollar = yyS[yypt-1 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:489
+ //line sql.y:483
{
yyVAL.str = SQLCacheStr
}
case 61:
yyDollar = yyS[yypt-0 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:494
+ //line sql.y:488
{
yyVAL.str = ""
}
case 62:
yyDollar = yyS[yypt-1 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:498
+ //line sql.y:492
{
yyVAL.str = DistinctStr
}
case 63:
yyDollar = yyS[yypt-0 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:503
+ //line sql.y:497
{
yyVAL.str = ""
}
case 64:
yyDollar = yyS[yypt-1 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:507
+ //line sql.y:501
{
yyVAL.str = StraightJoinHint
}
case 65:
yyDollar = yyS[yypt-0 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:512
+ //line sql.y:506
{
yyVAL.selectExprs = nil
}
case 66:
yyDollar = yyS[yypt-1 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:516
+ //line sql.y:510
{
yyVAL.selectExprs = yyDollar[1].selectExprs
}
case 67:
yyDollar = yyS[yypt-1 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:522
+ //line sql.y:516
{
yyVAL.selectExprs = SelectExprs{yyDollar[1].selectExpr}
}
case 68:
yyDollar = yyS[yypt-3 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:526
+ //line sql.y:520
{
yyVAL.selectExprs = append(yyVAL.selectExprs, yyDollar[3].selectExpr)
}
case 69:
yyDollar = yyS[yypt-1 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:532
+ //line sql.y:526
{
yyVAL.selectExpr = &StarExpr{}
}
case 70:
yyDollar = yyS[yypt-2 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:536
+ //line sql.y:530
{
yyVAL.selectExpr = &NonStarExpr{Expr: yyDollar[1].expr, As: yyDollar[2].colIdent}
}
case 71:
yyDollar = yyS[yypt-3 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:540
+ //line sql.y:534
{
yyVAL.selectExpr = &StarExpr{TableName: &TableName{Name: yyDollar[1].tableIdent}}
}
case 72:
yyDollar = yyS[yypt-5 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:544
+ //line sql.y:538
{
yyVAL.selectExpr = &StarExpr{TableName: &TableName{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].tableIdent}}
}
case 73:
yyDollar = yyS[yypt-0 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:549
+ //line sql.y:543
{
yyVAL.colIdent = ColIdent{}
}
case 74:
yyDollar = yyS[yypt-1 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:553
+ //line sql.y:547
{
yyVAL.colIdent = yyDollar[1].colIdent
}
case 75:
yyDollar = yyS[yypt-2 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:557
+ //line sql.y:551
{
yyVAL.colIdent = yyDollar[2].colIdent
}
case 77:
yyDollar = yyS[yypt-1 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:564
+ //line sql.y:558
{
yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes))
}
case 78:
yyDollar = yyS[yypt-0 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:569
+ //line sql.y:563
{
yyVAL.tableExprs = TableExprs{&AliasedTableExpr{Expr: &TableName{Name: NewTableIdent("dual")}}}
}
case 79:
yyDollar = yyS[yypt-2 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:573
+ //line sql.y:567
{
yyVAL.tableExprs = yyDollar[2].tableExprs
}
case 80:
yyDollar = yyS[yypt-1 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:579
+ //line sql.y:573
{
yyVAL.tableExprs = TableExprs{yyDollar[1].tableExpr}
}
case 81:
yyDollar = yyS[yypt-3 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:583
+ //line sql.y:577
{
yyVAL.tableExprs = append(yyVAL.tableExprs, yyDollar[3].tableExpr)
}
case 84:
yyDollar = yyS[yypt-1 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:593
+ //line sql.y:587
{
yyVAL.tableExpr = yyDollar[1].aliasedTableName
}
case 85:
yyDollar = yyS[yypt-3 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:597
+ //line sql.y:591
{
yyVAL.tableExpr = &AliasedTableExpr{Expr: yyDollar[1].subquery, As: yyDollar[3].tableIdent}
}
case 86:
yyDollar = yyS[yypt-3 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:601
+ //line sql.y:595
{
yyVAL.tableExpr = &ParenTableExpr{Exprs: yyDollar[2].tableExprs}
}
case 87:
yyDollar = yyS[yypt-3 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:607
+ //line sql.y:601
{
yyVAL.aliasedTableName = &AliasedTableExpr{Expr: yyDollar[1].tableName, As: yyDollar[2].tableIdent, Hints: yyDollar[3].indexHints}
}
case 88:
yyDollar = yyS[yypt-3 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:620
+ //line sql.y:614
{
yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].str, RightExpr: yyDollar[3].tableExpr}
}
case 89:
yyDollar = yyS[yypt-5 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:624
+ //line sql.y:618
{
yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].str, RightExpr: yyDollar[3].tableExpr, On: yyDollar[5].expr}
}
case 90:
yyDollar = yyS[yypt-5 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:628
+ //line sql.y:622
{
yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].str, RightExpr: yyDollar[3].tableExpr, On: yyDollar[5].expr}
}
case 91:
yyDollar = yyS[yypt-3 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:632
+ //line sql.y:626
{
yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].str, RightExpr: yyDollar[3].tableExpr}
}
case 92:
yyDollar = yyS[yypt-0 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:637
+ //line sql.y:631
{
yyVAL.empty = struct{}{}
}
case 93:
yyDollar = yyS[yypt-1 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:639
+ //line sql.y:633
{
yyVAL.empty = struct{}{}
}
case 94:
yyDollar = yyS[yypt-0 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:642
+ //line sql.y:636
{
yyVAL.tableIdent = NewTableIdent("")
}
case 95:
yyDollar = yyS[yypt-1 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:646
+ //line sql.y:640
{
yyVAL.tableIdent = yyDollar[1].tableIdent
}
case 96:
yyDollar = yyS[yypt-2 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:650
+ //line sql.y:644
{
yyVAL.tableIdent = yyDollar[2].tableIdent
}
case 98:
yyDollar = yyS[yypt-1 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:657
+ //line sql.y:651
{
yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].bytes))
}
case 99:
yyDollar = yyS[yypt-1 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:663
+ //line sql.y:657
{
yyVAL.str = JoinStr
}
case 100:
yyDollar = yyS[yypt-2 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:667
+ //line sql.y:661
{
yyVAL.str = JoinStr
}
case 101:
yyDollar = yyS[yypt-2 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:671
+ //line sql.y:665
{
yyVAL.str = JoinStr
}
case 102:
yyDollar = yyS[yypt-1 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:675
+ //line sql.y:669
{
yyVAL.str = StraightJoinStr
}
case 103:
yyDollar = yyS[yypt-2 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:681
+ //line sql.y:675
{
yyVAL.str = LeftJoinStr
}
case 104:
yyDollar = yyS[yypt-3 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:685
+ //line sql.y:679
{
yyVAL.str = LeftJoinStr
}
case 105:
yyDollar = yyS[yypt-2 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:689
+ //line sql.y:683
{
yyVAL.str = RightJoinStr
}
case 106:
yyDollar = yyS[yypt-3 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:693
+ //line sql.y:687
{
yyVAL.str = RightJoinStr
}
case 107:
yyDollar = yyS[yypt-2 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:699
+ //line sql.y:693
{
yyVAL.str = NaturalJoinStr
}
case 108:
yyDollar = yyS[yypt-2 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:703
+ //line sql.y:697
{
if yyDollar[2].str == LeftJoinStr {
yyVAL.str = NaturalLeftJoinStr
@@ -2115,469 +2102,469 @@ yydefault:
}
case 109:
yyDollar = yyS[yypt-2 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:713
+ //line sql.y:707
{
yyVAL.tableName = yyDollar[2].tableName
}
case 110:
yyDollar = yyS[yypt-1 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:717
+ //line sql.y:711
{
yyVAL.tableName = yyDollar[1].tableName
}
case 111:
yyDollar = yyS[yypt-1 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:723
+ //line sql.y:717
{
yyVAL.tableName = &TableName{Name: yyDollar[1].tableIdent}
}
case 112:
yyDollar = yyS[yypt-3 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:727
+ //line sql.y:721
{
yyVAL.tableName = &TableName{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].tableIdent}
}
case 113:
yyDollar = yyS[yypt-0 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:732
+ //line sql.y:726
{
yyVAL.indexHints = nil
}
case 114:
yyDollar = yyS[yypt-5 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:736
+ //line sql.y:730
{
yyVAL.indexHints = &IndexHints{Type: UseStr, Indexes: yyDollar[4].colIdents}
}
case 115:
yyDollar = yyS[yypt-5 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:740
+ //line sql.y:734
{
yyVAL.indexHints = &IndexHints{Type: IgnoreStr, Indexes: yyDollar[4].colIdents}
}
case 116:
yyDollar = yyS[yypt-5 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:744
+ //line sql.y:738
{
yyVAL.indexHints = &IndexHints{Type: ForceStr, Indexes: yyDollar[4].colIdents}
}
case 117:
yyDollar = yyS[yypt-1 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:750
+ //line sql.y:744
{
yyVAL.colIdents = []ColIdent{yyDollar[1].colIdent}
}
case 118:
yyDollar = yyS[yypt-3 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:754
+ //line sql.y:748
{
yyVAL.colIdents = append(yyDollar[1].colIdents, yyDollar[3].colIdent)
}
case 119:
yyDollar = yyS[yypt-0 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:759
+ //line sql.y:753
{
yyVAL.expr = nil
}
case 120:
yyDollar = yyS[yypt-2 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:763
+ //line sql.y:757
{
yyVAL.expr = yyDollar[2].expr
}
case 121:
yyDollar = yyS[yypt-1 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:769
+ //line sql.y:763
{
yyVAL.expr = yyDollar[1].expr
}
case 122:
yyDollar = yyS[yypt-3 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:773
+ //line sql.y:767
{
yyVAL.expr = &AndExpr{Left: yyDollar[1].expr, Right: yyDollar[3].expr}
}
case 123:
yyDollar = yyS[yypt-3 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:777
+ //line sql.y:771
{
yyVAL.expr = &OrExpr{Left: yyDollar[1].expr, Right: yyDollar[3].expr}
}
case 124:
yyDollar = yyS[yypt-2 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:781
+ //line sql.y:775
{
yyVAL.expr = &NotExpr{Expr: yyDollar[2].expr}
}
case 125:
yyDollar = yyS[yypt-3 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:785
+ //line sql.y:779
{
yyVAL.expr = &IsExpr{Operator: yyDollar[3].str, Expr: yyDollar[1].expr}
}
case 126:
yyDollar = yyS[yypt-1 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:789
+ //line sql.y:783
{
yyVAL.expr = yyDollar[1].expr
}
case 127:
yyDollar = yyS[yypt-1 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:795
+ //line sql.y:789
{
yyVAL.boolVal = BoolVal(true)
}
case 128:
yyDollar = yyS[yypt-1 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:799
+ //line sql.y:793
{
yyVAL.boolVal = BoolVal(false)
}
case 129:
yyDollar = yyS[yypt-1 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:805
+ //line sql.y:799
{
yyVAL.expr = yyDollar[1].boolVal
}
case 130:
yyDollar = yyS[yypt-3 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:809
+ //line sql.y:803
{
yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: yyDollar[2].str, Right: yyDollar[3].boolVal}
}
case 131:
yyDollar = yyS[yypt-3 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:813
+ //line sql.y:807
{
yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: yyDollar[2].str, Right: yyDollar[3].expr}
}
case 132:
yyDollar = yyS[yypt-3 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:817
+ //line sql.y:811
{
yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: InStr, Right: yyDollar[3].colTuple}
}
case 133:
yyDollar = yyS[yypt-4 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:821
+ //line sql.y:815
{
yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: NotInStr, Right: yyDollar[4].colTuple}
}
case 134:
yyDollar = yyS[yypt-4 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:825
+ //line sql.y:819
{
yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: LikeStr, Right: yyDollar[3].expr, Escape: yyDollar[4].expr}
}
case 135:
yyDollar = yyS[yypt-5 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:829
+ //line sql.y:823
{
yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: NotLikeStr, Right: yyDollar[4].expr, Escape: yyDollar[5].expr}
}
case 136:
yyDollar = yyS[yypt-3 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:833
+ //line sql.y:827
{
yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: RegexpStr, Right: yyDollar[3].expr}
}
case 137:
yyDollar = yyS[yypt-4 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:837
+ //line sql.y:831
{
yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: NotRegexpStr, Right: yyDollar[4].expr}
}
case 138:
yyDollar = yyS[yypt-5 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:841
+ //line sql.y:835
{
yyVAL.expr = &RangeCond{Left: yyDollar[1].expr, Operator: BetweenStr, From: yyDollar[3].expr, To: yyDollar[5].expr}
}
case 139:
yyDollar = yyS[yypt-6 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:845
+ //line sql.y:839
{
yyVAL.expr = &RangeCond{Left: yyDollar[1].expr, Operator: NotBetweenStr, From: yyDollar[4].expr, To: yyDollar[6].expr}
}
case 140:
yyDollar = yyS[yypt-2 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:849
+ //line sql.y:843
{
yyVAL.expr = &ExistsExpr{Subquery: yyDollar[2].subquery}
}
case 141:
yyDollar = yyS[yypt-1 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:855
+ //line sql.y:849
{
yyVAL.str = IsNullStr
}
case 142:
yyDollar = yyS[yypt-2 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:859
+ //line sql.y:853
{
yyVAL.str = IsNotNullStr
}
case 143:
yyDollar = yyS[yypt-1 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:863
+ //line sql.y:857
{
yyVAL.str = IsTrueStr
}
case 144:
yyDollar = yyS[yypt-2 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:867
+ //line sql.y:861
{
yyVAL.str = IsNotTrueStr
}
case 145:
yyDollar = yyS[yypt-1 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:871
+ //line sql.y:865
{
yyVAL.str = IsFalseStr
}
case 146:
yyDollar = yyS[yypt-2 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:875
+ //line sql.y:869
{
yyVAL.str = IsNotFalseStr
}
case 147:
yyDollar = yyS[yypt-1 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:881
+ //line sql.y:875
{
yyVAL.str = EqualStr
}
case 148:
yyDollar = yyS[yypt-1 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:885
+ //line sql.y:879
{
yyVAL.str = LessThanStr
}
case 149:
yyDollar = yyS[yypt-1 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:889
+ //line sql.y:883
{
yyVAL.str = GreaterThanStr
}
case 150:
yyDollar = yyS[yypt-1 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:893
+ //line sql.y:887
{
yyVAL.str = LessEqualStr
}
case 151:
yyDollar = yyS[yypt-1 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:897
+ //line sql.y:891
{
yyVAL.str = GreaterEqualStr
}
case 152:
yyDollar = yyS[yypt-1 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:901
+ //line sql.y:895
{
yyVAL.str = NotEqualStr
}
case 153:
yyDollar = yyS[yypt-1 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:905
+ //line sql.y:899
{
yyVAL.str = NullSafeEqualStr
}
case 154:
yyDollar = yyS[yypt-0 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:910
+ //line sql.y:904
{
yyVAL.expr = nil
}
case 155:
yyDollar = yyS[yypt-2 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:914
+ //line sql.y:908
{
yyVAL.expr = yyDollar[2].expr
}
case 156:
yyDollar = yyS[yypt-1 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:920
+ //line sql.y:914
{
yyVAL.colTuple = yyDollar[1].valTuple
}
case 157:
yyDollar = yyS[yypt-1 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:924
+ //line sql.y:918
{
yyVAL.colTuple = yyDollar[1].subquery
}
case 158:
yyDollar = yyS[yypt-1 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:928
+ //line sql.y:922
{
yyVAL.colTuple = ListArg(yyDollar[1].bytes)
}
case 159:
yyDollar = yyS[yypt-3 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:934
+ //line sql.y:928
{
yyVAL.subquery = &Subquery{yyDollar[2].selStmt}
}
case 160:
yyDollar = yyS[yypt-1 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:940
+ //line sql.y:934
{
yyVAL.exprs = Exprs{yyDollar[1].expr}
}
case 161:
yyDollar = yyS[yypt-3 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:944
+ //line sql.y:938
{
yyVAL.exprs = append(yyDollar[1].exprs, yyDollar[3].expr)
}
case 162:
yyDollar = yyS[yypt-1 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:950
+ //line sql.y:944
{
yyVAL.str = string(yyDollar[1].bytes)
}
case 163:
yyDollar = yyS[yypt-1 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:954
+ //line sql.y:948
{
yyVAL.str = string(yyDollar[1].bytes)
}
case 164:
yyDollar = yyS[yypt-1 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:958
+ //line sql.y:952
{
yyVAL.str = string(yyDollar[1].bytes)
}
case 165:
yyDollar = yyS[yypt-1 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:962
+ //line sql.y:956
{
yyVAL.str = string(yyDollar[1].bytes)
}
case 166:
yyDollar = yyS[yypt-1 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:968
+ //line sql.y:962
{
yyVAL.expr = yyDollar[1].expr
}
case 167:
yyDollar = yyS[yypt-1 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:972
+ //line sql.y:966
{
yyVAL.expr = yyDollar[1].colName
}
case 168:
yyDollar = yyS[yypt-1 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:976
+ //line sql.y:970
{
yyVAL.expr = yyDollar[1].expr
}
case 169:
yyDollar = yyS[yypt-1 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:980
+ //line sql.y:974
{
yyVAL.expr = yyDollar[1].subquery
}
case 170:
yyDollar = yyS[yypt-3 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:984
+ //line sql.y:978
{
yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitAndStr, Right: yyDollar[3].expr}
}
case 171:
yyDollar = yyS[yypt-3 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:988
+ //line sql.y:982
{
yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitOrStr, Right: yyDollar[3].expr}
}
case 172:
yyDollar = yyS[yypt-3 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:992
+ //line sql.y:986
{
yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitXorStr, Right: yyDollar[3].expr}
}
case 173:
yyDollar = yyS[yypt-3 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:996
+ //line sql.y:990
{
yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: PlusStr, Right: yyDollar[3].expr}
}
case 174:
yyDollar = yyS[yypt-3 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1000
+ //line sql.y:994
{
yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: MinusStr, Right: yyDollar[3].expr}
}
case 175:
yyDollar = yyS[yypt-3 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1004
+ //line sql.y:998
{
yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: MultStr, Right: yyDollar[3].expr}
}
case 176:
yyDollar = yyS[yypt-3 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1008
+ //line sql.y:1002
{
yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: DivStr, Right: yyDollar[3].expr}
}
case 177:
yyDollar = yyS[yypt-3 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1012
+ //line sql.y:1006
{
yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: IntDivStr, Right: yyDollar[3].expr}
}
case 178:
yyDollar = yyS[yypt-3 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1016
+ //line sql.y:1010
{
yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ModStr, Right: yyDollar[3].expr}
}
case 179:
yyDollar = yyS[yypt-3 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1020
+ //line sql.y:1014
{
yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ModStr, Right: yyDollar[3].expr}
}
case 180:
yyDollar = yyS[yypt-3 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1024
+ //line sql.y:1018
{
yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ShiftLeftStr, Right: yyDollar[3].expr}
}
case 181:
yyDollar = yyS[yypt-3 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1028
+ //line sql.y:1022
{
yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ShiftRightStr, Right: yyDollar[3].expr}
}
case 182:
yyDollar = yyS[yypt-3 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1032
+ //line sql.y:1026
{
yyVAL.expr = &BinaryExpr{Left: yyDollar[1].colName, Operator: JSONExtractOp, Right: yyDollar[3].expr}
}
case 183:
yyDollar = yyS[yypt-3 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1036
+ //line sql.y:1030
{
yyVAL.expr = &BinaryExpr{Left: yyDollar[1].colName, Operator: JSONUnquoteExtractOp, Right: yyDollar[3].expr}
}
case 184:
yyDollar = yyS[yypt-3 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1040
+ //line sql.y:1034
{
yyVAL.expr = &CollateExpr{Expr: yyDollar[1].expr, Charset: yyDollar[3].str}
}
case 185:
yyDollar = yyS[yypt-2 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1044
+ //line sql.y:1038
{
yyVAL.expr = &UnaryExpr{Operator: BinaryStr, Expr: yyDollar[2].expr}
}
case 186:
yyDollar = yyS[yypt-2 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1048
+ //line sql.y:1042
{
if num, ok := yyDollar[2].expr.(*SQLVal); ok && num.Type == IntVal {
yyVAL.expr = num
@@ -2587,7 +2574,7 @@ yydefault:
}
case 187:
yyDollar = yyS[yypt-2 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1056
+ //line sql.y:1050
{
if num, ok := yyDollar[2].expr.(*SQLVal); ok && num.Type == IntVal {
// Handle double negative
@@ -2603,19 +2590,19 @@ yydefault:
}
case 188:
yyDollar = yyS[yypt-2 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1070
+ //line sql.y:1064
{
yyVAL.expr = &UnaryExpr{Operator: TildaStr, Expr: yyDollar[2].expr}
}
case 189:
yyDollar = yyS[yypt-2 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1074
+ //line sql.y:1068
{
yyVAL.expr = &UnaryExpr{Operator: BangStr, Expr: yyDollar[2].expr}
}
case 190:
yyDollar = yyS[yypt-3 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1078
+ //line sql.y:1072
{
// This rule prevents the usage of INTERVAL
// as a function. If support is needed for that,
@@ -2625,343 +2612,343 @@ yydefault:
}
case 195:
yyDollar = yyS[yypt-4 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1096
+ //line sql.y:1090
{
yyVAL.expr = &FuncExpr{Name: yyDollar[1].colIdent, Exprs: yyDollar[3].selectExprs}
}
case 196:
yyDollar = yyS[yypt-5 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1100
+ //line sql.y:1094
{
yyVAL.expr = &FuncExpr{Name: yyDollar[1].colIdent, Distinct: true, Exprs: yyDollar[4].selectExprs}
}
case 197:
yyDollar = yyS[yypt-6 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1104
+ //line sql.y:1098
{
yyVAL.expr = &FuncExpr{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].colIdent, Exprs: yyDollar[5].selectExprs}
}
case 198:
yyDollar = yyS[yypt-4 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1114
+ //line sql.y:1108
{
yyVAL.expr = &FuncExpr{Name: NewColIdent("left"), Exprs: yyDollar[3].selectExprs}
}
case 199:
yyDollar = yyS[yypt-4 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1118
+ //line sql.y:1112
{
yyVAL.expr = &FuncExpr{Name: NewColIdent("right"), Exprs: yyDollar[3].selectExprs}
}
case 200:
yyDollar = yyS[yypt-6 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1122
+ //line sql.y:1116
{
yyVAL.expr = &ConvertExpr{Expr: yyDollar[3].expr, Type: yyDollar[5].convertType}
}
case 201:
yyDollar = yyS[yypt-6 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1126
+ //line sql.y:1120
{
yyVAL.expr = &ConvertExpr{Expr: yyDollar[3].expr, Type: yyDollar[5].convertType}
}
case 202:
yyDollar = yyS[yypt-6 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1130
+ //line sql.y:1124
{
yyVAL.expr = &ConvertExpr{Expr: yyDollar[3].expr, Type: yyDollar[5].convertType}
}
case 203:
yyDollar = yyS[yypt-9 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1134
+ //line sql.y:1128
{
yyVAL.expr = &MatchExpr{Columns: yyDollar[3].columns, Expr: yyDollar[7].expr, Option: yyDollar[8].str}
}
case 204:
yyDollar = yyS[yypt-7 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1138
+ //line sql.y:1132
{
yyVAL.expr = &GroupConcatExpr{Distinct: yyDollar[3].str, Exprs: yyDollar[4].selectExprs, OrderBy: yyDollar[5].orderBy, Separator: yyDollar[6].str}
}
case 205:
yyDollar = yyS[yypt-5 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1142
+ //line sql.y:1136
{
yyVAL.expr = &CaseExpr{Expr: yyDollar[2].expr, Whens: yyDollar[3].whens, Else: yyDollar[4].expr}
}
case 206:
yyDollar = yyS[yypt-4 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1146
+ //line sql.y:1140
{
yyVAL.expr = &ValuesFuncExpr{Name: yyDollar[3].colIdent}
}
case 207:
yyDollar = yyS[yypt-2 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1156
+ //line sql.y:1150
{
yyVAL.expr = &FuncExpr{Name: NewColIdent("current_timestamp")}
}
case 208:
yyDollar = yyS[yypt-2 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1160
+ //line sql.y:1154
{
yyVAL.expr = &FuncExpr{Name: NewColIdent("utc_timestamp")}
}
case 209:
yyDollar = yyS[yypt-2 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1164
+ //line sql.y:1158
{
yyVAL.expr = &FuncExpr{Name: NewColIdent("utc_time")}
}
case 210:
yyDollar = yyS[yypt-2 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1168
+ //line sql.y:1162
{
yyVAL.expr = &FuncExpr{Name: NewColIdent("utc_date")}
}
case 211:
yyDollar = yyS[yypt-2 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1173
+ //line sql.y:1167
{
yyVAL.expr = &FuncExpr{Name: NewColIdent("localtime")}
}
case 212:
yyDollar = yyS[yypt-2 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1178
+ //line sql.y:1172
{
yyVAL.expr = &FuncExpr{Name: NewColIdent("localtimestamp")}
}
case 213:
yyDollar = yyS[yypt-2 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1183
+ //line sql.y:1177
{
yyVAL.expr = &FuncExpr{Name: NewColIdent("current_date")}
}
case 214:
yyDollar = yyS[yypt-2 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1188
+ //line sql.y:1182
{
yyVAL.expr = &FuncExpr{Name: NewColIdent("current_time")}
}
case 217:
yyDollar = yyS[yypt-4 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1202
+ //line sql.y:1196
{
yyVAL.expr = &FuncExpr{Name: NewColIdent("if"), Exprs: yyDollar[3].selectExprs}
}
case 218:
yyDollar = yyS[yypt-4 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1206
+ //line sql.y:1200
{
yyVAL.expr = &FuncExpr{Name: NewColIdent("database"), Exprs: yyDollar[3].selectExprs}
}
case 219:
yyDollar = yyS[yypt-4 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1210
+ //line sql.y:1204
{
yyVAL.expr = &FuncExpr{Name: NewColIdent("mod"), Exprs: yyDollar[3].selectExprs}
}
case 220:
yyDollar = yyS[yypt-4 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1214
+ //line sql.y:1208
{
yyVAL.expr = &FuncExpr{Name: NewColIdent("replace"), Exprs: yyDollar[3].selectExprs}
}
case 221:
yyDollar = yyS[yypt-0 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1220
+ //line sql.y:1214
{
yyVAL.str = ""
}
case 222:
yyDollar = yyS[yypt-3 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1224
+ //line sql.y:1218
{
yyVAL.str = BooleanModeStr
}
case 223:
yyDollar = yyS[yypt-4 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1228
+ //line sql.y:1222
{
yyVAL.str = NaturalLanguageModeStr
}
case 224:
yyDollar = yyS[yypt-7 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1232
+ //line sql.y:1226
{
yyVAL.str = NaturalLanguageModeWithQueryExpansionStr
}
case 225:
yyDollar = yyS[yypt-3 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1236
+ //line sql.y:1230
{
yyVAL.str = QueryExpansionStr
}
case 226:
yyDollar = yyS[yypt-1 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1243
+ //line sql.y:1237
{
yyVAL.convertType = &ConvertType{Type: yyDollar[1].str}
}
case 227:
yyDollar = yyS[yypt-2 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1247
+ //line sql.y:1241
{
yyVAL.convertType = &ConvertType{Type: yyDollar[1].str}
}
case 228:
yyDollar = yyS[yypt-4 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1251
+ //line sql.y:1245
{
yyVAL.convertType = &ConvertType{Type: yyDollar[1].str, Length: NewIntVal(yyDollar[3].bytes)}
}
case 229:
yyDollar = yyS[yypt-5 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1255
+ //line sql.y:1249
{
yyVAL.convertType = &ConvertType{Type: yyDollar[1].str, Length: NewIntVal(yyDollar[3].bytes), Charset: yyDollar[5].str}
}
case 230:
yyDollar = yyS[yypt-7 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1259
+ //line sql.y:1253
{
yyVAL.convertType = &ConvertType{Type: yyDollar[1].str, Length: NewIntVal(yyDollar[3].bytes), Charset: yyDollar[7].str, Operator: CharacterSetStr}
}
case 231:
yyDollar = yyS[yypt-2 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1263
+ //line sql.y:1257
{
yyVAL.convertType = &ConvertType{Type: yyDollar[1].str, Charset: yyDollar[2].str}
}
case 232:
yyDollar = yyS[yypt-4 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1267
+ //line sql.y:1261
{
yyVAL.convertType = &ConvertType{Type: yyDollar[1].str, Charset: yyDollar[4].str, Operator: CharacterSetStr}
}
case 233:
yyDollar = yyS[yypt-6 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1271
+ //line sql.y:1265
{
yyVAL.convertType = &ConvertType{Type: yyDollar[1].str, Length: NewIntVal(yyDollar[3].bytes), Scale: NewIntVal(yyDollar[5].bytes)}
}
case 234:
yyDollar = yyS[yypt-0 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1276
+ //line sql.y:1270
{
yyVAL.expr = nil
}
case 235:
yyDollar = yyS[yypt-1 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1280
+ //line sql.y:1274
{
yyVAL.expr = yyDollar[1].expr
}
case 236:
yyDollar = yyS[yypt-0 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1285
+ //line sql.y:1279
{
yyVAL.str = string("")
}
case 237:
yyDollar = yyS[yypt-2 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1289
+ //line sql.y:1283
{
yyVAL.str = " separator '" + string(yyDollar[2].bytes) + "'"
}
case 238:
yyDollar = yyS[yypt-1 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1295
+ //line sql.y:1289
{
yyVAL.whens = []*When{yyDollar[1].when}
}
case 239:
yyDollar = yyS[yypt-2 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1299
+ //line sql.y:1293
{
yyVAL.whens = append(yyDollar[1].whens, yyDollar[2].when)
}
case 240:
yyDollar = yyS[yypt-4 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1305
+ //line sql.y:1299
{
yyVAL.when = &When{Cond: yyDollar[2].expr, Val: yyDollar[4].expr}
}
case 241:
yyDollar = yyS[yypt-0 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1310
+ //line sql.y:1304
{
yyVAL.expr = nil
}
case 242:
yyDollar = yyS[yypt-2 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1314
+ //line sql.y:1308
{
yyVAL.expr = yyDollar[2].expr
}
case 243:
yyDollar = yyS[yypt-1 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1320
+ //line sql.y:1314
{
yyVAL.colName = &ColName{Name: yyDollar[1].colIdent}
}
case 244:
yyDollar = yyS[yypt-3 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1324
+ //line sql.y:1318
{
yyVAL.colName = &ColName{Qualifier: &TableName{Name: yyDollar[1].tableIdent}, Name: yyDollar[3].colIdent}
}
case 245:
yyDollar = yyS[yypt-5 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1328
+ //line sql.y:1322
{
yyVAL.colName = &ColName{Qualifier: &TableName{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].tableIdent}, Name: yyDollar[5].colIdent}
}
case 246:
yyDollar = yyS[yypt-1 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1334
+ //line sql.y:1328
{
yyVAL.expr = NewStrVal(yyDollar[1].bytes)
}
case 247:
yyDollar = yyS[yypt-1 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1338
+ //line sql.y:1332
{
yyVAL.expr = NewHexVal(yyDollar[1].bytes)
}
case 248:
yyDollar = yyS[yypt-1 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1342
+ //line sql.y:1336
{
yyVAL.expr = NewIntVal(yyDollar[1].bytes)
}
case 249:
yyDollar = yyS[yypt-1 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1346
+ //line sql.y:1340
{
yyVAL.expr = NewFloatVal(yyDollar[1].bytes)
}
case 250:
yyDollar = yyS[yypt-1 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1350
+ //line sql.y:1344
{
yyVAL.expr = NewHexNum(yyDollar[1].bytes)
}
case 251:
yyDollar = yyS[yypt-1 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1354
+ //line sql.y:1348
{
yyVAL.expr = NewValArg(yyDollar[1].bytes)
}
case 252:
yyDollar = yyS[yypt-1 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1358
+ //line sql.y:1352
{
yyVAL.expr = &NullVal{}
}
case 253:
yyDollar = yyS[yypt-1 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1364
+ //line sql.y:1358
{
// TODO(sougou): Deprecate this construct.
if yyDollar[1].colIdent.Lowered() != "value" {
@@ -2972,249 +2959,249 @@ yydefault:
}
case 254:
yyDollar = yyS[yypt-2 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1373
+ //line sql.y:1367
{
yyVAL.expr = NewIntVal(yyDollar[1].bytes)
}
case 255:
yyDollar = yyS[yypt-2 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1377
+ //line sql.y:1371
{
yyVAL.expr = NewValArg(yyDollar[1].bytes)
}
case 256:
yyDollar = yyS[yypt-0 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1382
+ //line sql.y:1376
{
yyVAL.exprs = nil
}
case 257:
yyDollar = yyS[yypt-3 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1386
+ //line sql.y:1380
{
yyVAL.exprs = yyDollar[3].exprs
}
case 258:
yyDollar = yyS[yypt-0 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1391
+ //line sql.y:1385
{
yyVAL.expr = nil
}
case 259:
yyDollar = yyS[yypt-2 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1395
+ //line sql.y:1389
{
yyVAL.expr = yyDollar[2].expr
}
case 260:
yyDollar = yyS[yypt-0 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1400
+ //line sql.y:1394
{
yyVAL.orderBy = nil
}
case 261:
yyDollar = yyS[yypt-3 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1404
+ //line sql.y:1398
{
yyVAL.orderBy = yyDollar[3].orderBy
}
case 262:
yyDollar = yyS[yypt-1 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1410
+ //line sql.y:1404
{
yyVAL.orderBy = OrderBy{yyDollar[1].order}
}
case 263:
yyDollar = yyS[yypt-3 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1414
+ //line sql.y:1408
{
yyVAL.orderBy = append(yyDollar[1].orderBy, yyDollar[3].order)
}
case 264:
yyDollar = yyS[yypt-2 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1420
+ //line sql.y:1414
{
yyVAL.order = &Order{Expr: yyDollar[1].expr, Direction: yyDollar[2].str}
}
case 265:
yyDollar = yyS[yypt-0 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1425
+ //line sql.y:1419
{
yyVAL.str = AscScr
}
case 266:
yyDollar = yyS[yypt-1 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1429
+ //line sql.y:1423
{
yyVAL.str = AscScr
}
case 267:
yyDollar = yyS[yypt-1 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1433
+ //line sql.y:1427
{
yyVAL.str = DescScr
}
case 268:
yyDollar = yyS[yypt-0 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1438
+ //line sql.y:1432
{
yyVAL.limit = nil
}
case 269:
yyDollar = yyS[yypt-2 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1442
+ //line sql.y:1436
{
yyVAL.limit = &Limit{Rowcount: yyDollar[2].expr}
}
case 270:
yyDollar = yyS[yypt-4 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1446
+ //line sql.y:1440
{
yyVAL.limit = &Limit{Offset: yyDollar[2].expr, Rowcount: yyDollar[4].expr}
}
case 271:
yyDollar = yyS[yypt-4 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1450
+ //line sql.y:1444
{
yyVAL.limit = &Limit{Offset: yyDollar[4].expr, Rowcount: yyDollar[2].expr}
}
case 272:
yyDollar = yyS[yypt-0 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1455
+ //line sql.y:1449
{
yyVAL.str = ""
}
case 273:
yyDollar = yyS[yypt-2 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1459
+ //line sql.y:1453
{
yyVAL.str = ForUpdateStr
}
case 274:
yyDollar = yyS[yypt-4 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1463
+ //line sql.y:1457
{
yyVAL.str = ShareModeStr
}
case 275:
yyDollar = yyS[yypt-1 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1469
+ //line sql.y:1463
{
yyVAL.columns = Columns{yyDollar[1].colIdent}
}
case 276:
yyDollar = yyS[yypt-3 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1473
+ //line sql.y:1467
{
yyVAL.columns = append(yyVAL.columns, yyDollar[3].colIdent)
}
case 277:
yyDollar = yyS[yypt-2 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1486
+ //line sql.y:1480
{
yyVAL.ins = &Insert{Rows: yyDollar[2].values}
}
case 278:
yyDollar = yyS[yypt-1 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1490
+ //line sql.y:1484
{
yyVAL.ins = &Insert{Rows: yyDollar[1].selStmt}
}
case 279:
yyDollar = yyS[yypt-3 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1494
+ //line sql.y:1488
{
// Drop the redundant parenthesis.
yyVAL.ins = &Insert{Rows: yyDollar[2].selStmt}
}
case 280:
yyDollar = yyS[yypt-5 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1499
+ //line sql.y:1493
{
yyVAL.ins = &Insert{Columns: yyDollar[2].columns, Rows: yyDollar[5].values}
}
case 281:
yyDollar = yyS[yypt-4 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1503
+ //line sql.y:1497
{
yyVAL.ins = &Insert{Columns: yyDollar[2].columns, Rows: yyDollar[4].selStmt}
}
case 282:
yyDollar = yyS[yypt-6 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1507
+ //line sql.y:1501
{
// Drop the redundant parenthesis.
yyVAL.ins = &Insert{Columns: yyDollar[2].columns, Rows: yyDollar[5].selStmt}
}
case 283:
yyDollar = yyS[yypt-1 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1514
+ //line sql.y:1508
{
yyVAL.columns = Columns{yyDollar[1].colIdent}
}
case 284:
yyDollar = yyS[yypt-3 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1518
+ //line sql.y:1512
{
yyVAL.columns = Columns{yyDollar[3].colIdent}
}
case 285:
yyDollar = yyS[yypt-3 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1522
+ //line sql.y:1516
{
yyVAL.columns = append(yyVAL.columns, yyDollar[3].colIdent)
}
case 286:
yyDollar = yyS[yypt-5 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1526
+ //line sql.y:1520
{
yyVAL.columns = append(yyVAL.columns, yyDollar[5].colIdent)
}
case 287:
yyDollar = yyS[yypt-0 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1531
+ //line sql.y:1525
{
yyVAL.updateExprs = nil
}
case 288:
yyDollar = yyS[yypt-5 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1535
+ //line sql.y:1529
{
yyVAL.updateExprs = yyDollar[5].updateExprs
}
case 289:
yyDollar = yyS[yypt-1 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1541
+ //line sql.y:1535
{
yyVAL.values = Values{yyDollar[1].valTuple}
}
case 290:
yyDollar = yyS[yypt-3 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1545
+ //line sql.y:1539
{
yyVAL.values = append(yyDollar[1].values, yyDollar[3].valTuple)
}
case 291:
yyDollar = yyS[yypt-1 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1551
+ //line sql.y:1545
{
yyVAL.valTuple = yyDollar[1].valTuple
}
case 292:
yyDollar = yyS[yypt-2 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1555
+ //line sql.y:1549
{
yyVAL.valTuple = ValTuple{}
}
case 293:
yyDollar = yyS[yypt-3 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1561
+ //line sql.y:1555
{
yyVAL.valTuple = ValTuple(yyDollar[2].exprs)
}
case 294:
yyDollar = yyS[yypt-1 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1567
+ //line sql.y:1561
{
if len(yyDollar[1].valTuple) == 1 {
yyVAL.expr = &ParenExpr{yyDollar[1].valTuple[0]}
@@ -3224,199 +3211,199 @@ yydefault:
}
case 295:
yyDollar = yyS[yypt-1 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1577
+ //line sql.y:1571
{
yyVAL.updateExprs = UpdateExprs{yyDollar[1].updateExpr}
}
case 296:
yyDollar = yyS[yypt-3 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1581
+ //line sql.y:1575
{
yyVAL.updateExprs = append(yyDollar[1].updateExprs, yyDollar[3].updateExpr)
}
case 297:
yyDollar = yyS[yypt-3 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1587
+ //line sql.y:1581
{
yyVAL.updateExpr = &UpdateExpr{Name: yyDollar[1].colName, Expr: yyDollar[3].expr}
}
case 300:
yyDollar = yyS[yypt-0 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1596
+ //line sql.y:1590
{
yyVAL.byt = 0
}
case 301:
yyDollar = yyS[yypt-2 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1598
+ //line sql.y:1592
{
yyVAL.byt = 1
}
case 302:
yyDollar = yyS[yypt-0 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1601
+ //line sql.y:1595
{
yyVAL.empty = struct{}{}
}
case 303:
yyDollar = yyS[yypt-3 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1603
+ //line sql.y:1597
{
yyVAL.empty = struct{}{}
}
case 304:
yyDollar = yyS[yypt-0 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1606
+ //line sql.y:1600
{
yyVAL.str = ""
}
case 305:
yyDollar = yyS[yypt-1 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1608
+ //line sql.y:1602
{
yyVAL.str = IgnoreStr
}
case 306:
yyDollar = yyS[yypt-1 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1612
+ //line sql.y:1606
{
yyVAL.empty = struct{}{}
}
case 307:
yyDollar = yyS[yypt-1 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1614
+ //line sql.y:1608
{
yyVAL.empty = struct{}{}
}
case 308:
yyDollar = yyS[yypt-1 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1616
+ //line sql.y:1610
{
yyVAL.empty = struct{}{}
}
case 309:
yyDollar = yyS[yypt-1 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1618
+ //line sql.y:1612
{
yyVAL.empty = struct{}{}
}
case 310:
yyDollar = yyS[yypt-1 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1620
+ //line sql.y:1614
{
yyVAL.empty = struct{}{}
}
case 311:
yyDollar = yyS[yypt-1 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1622
+ //line sql.y:1616
{
yyVAL.empty = struct{}{}
}
case 312:
yyDollar = yyS[yypt-1 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1624
+ //line sql.y:1618
{
yyVAL.empty = struct{}{}
}
case 313:
yyDollar = yyS[yypt-0 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1627
+ //line sql.y:1621
{
yyVAL.empty = struct{}{}
}
case 314:
yyDollar = yyS[yypt-1 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1629
+ //line sql.y:1623
{
yyVAL.empty = struct{}{}
}
case 315:
yyDollar = yyS[yypt-1 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1631
+ //line sql.y:1625
{
yyVAL.empty = struct{}{}
}
case 316:
yyDollar = yyS[yypt-1 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1635
+ //line sql.y:1629
{
yyVAL.empty = struct{}{}
}
case 317:
yyDollar = yyS[yypt-1 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1637
+ //line sql.y:1631
{
yyVAL.empty = struct{}{}
}
case 318:
yyDollar = yyS[yypt-0 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1640
+ //line sql.y:1634
{
yyVAL.empty = struct{}{}
}
case 319:
yyDollar = yyS[yypt-1 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1642
+ //line sql.y:1636
{
yyVAL.empty = struct{}{}
}
case 320:
yyDollar = yyS[yypt-1 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1644
+ //line sql.y:1638
{
yyVAL.empty = struct{}{}
}
case 321:
yyDollar = yyS[yypt-0 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1647
+ //line sql.y:1641
{
yyVAL.empty = struct{}{}
}
case 322:
yyDollar = yyS[yypt-2 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1649
+ //line sql.y:1643
{
yyVAL.empty = struct{}{}
}
case 323:
yyDollar = yyS[yypt-1 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1653
+ //line sql.y:1647
{
yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes))
}
case 324:
yyDollar = yyS[yypt-1 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1657
+ //line sql.y:1651
{
yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes))
}
case 326:
yyDollar = yyS[yypt-1 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1664
+ //line sql.y:1658
{
yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes))
}
case 327:
yyDollar = yyS[yypt-1 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1670
+ //line sql.y:1664
{
yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].bytes))
}
case 328:
yyDollar = yyS[yypt-1 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1674
+ //line sql.y:1668
{
yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].bytes))
}
case 330:
yyDollar = yyS[yypt-1 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1681
+ //line sql.y:1675
{
yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].bytes))
}
case 436:
yyDollar = yyS[yypt-1 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1811
+ //line sql.y:1805
{
if incNesting(yylex) {
yylex.Error("max nesting level reached")
@@ -3425,31 +3412,31 @@ yydefault:
}
case 437:
yyDollar = yyS[yypt-1 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1820
+ //line sql.y:1814
{
decNesting(yylex)
}
case 438:
yyDollar = yyS[yypt-0 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1825
+ //line sql.y:1819
{
forceEOF(yylex)
}
case 439:
yyDollar = yyS[yypt-0 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1830
+ //line sql.y:1824
{
forceEOF(yylex)
}
case 440:
yyDollar = yyS[yypt-1 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1834
+ //line sql.y:1828
{
forceEOF(yylex)
}
case 441:
yyDollar = yyS[yypt-1 : yypt+1]
- //line ./go/vt/sqlparser/sql.y:1838
+ //line sql.y:1832
{
forceEOF(yylex)
}
diff --git a/go/vt/sqlparser/sql.y b/go/vt/sqlparser/sql.y
index 16c2b0c852a..433a8540a12 100644
--- a/go/vt/sqlparser/sql.y
+++ b/go/vt/sqlparser/sql.y
@@ -134,7 +134,7 @@ func forceEOF(yylex interface{}) {
%token User Guide