Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

session: fix bootstrap error in ANSI sql_mode #8353

Merged
merged 3 commits into from
Nov 20, 2018

Conversation

tiancaiamao
Copy link
Contributor

@tiancaiamao tiancaiamao commented Nov 19, 2018

What problem does this PR solve?

After setting sql_mode to ANSI, TiDB panic on startup:

set @@global.sql_mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,ANSI"
2018/11/19 16:58:31.015 printer.go:39: [info] Welcome to TiDB.
2018/11/19 16:58:31.015 printer.go:40: [info] Release Version: v2.1.0-rc.5
2018/11/19 16:58:31.015 printer.go:41: [info] Git Commit Hash: a6d2c0e11eb5618cd1d8a74bfc18df3067a59edb
2018/11/19 16:58:31.015 printer.go:42: [info] Git Branch: release-2.1
2018/11/19 16:58:31.015 printer.go:43: [info] UTC Build Time: 2018-11-12 11:55:18
2018/11/19 16:58:31.015 printer.go:44: [info] GoVersion: go version go1.11 linux/amd64
2018/11/19 16:58:31.015 printer.go:45: [info] Race Enabled: false
2018/11/19 16:58:31.015 printer.go:46: [info] Check Table Before Drop: false
2018/11/19 16:58:31.015 printer.go:47: [info] TiKV Min Version: 2.1.0-alpha.1-ff3dd160846b7d1aed9079c389fc188f7f5ea13e
2018/11/19 16:58:31.015 printer.go:52: [info] Config: {"host":"0.0.0.0","advertise-address":"192.168.0.202","port":4000,"store":"tikv","path":"192.168.0.201:2379,192.168.0.202:2379,192.168.
0.203:2379","socket":"","lease":"45s","run-ddl":true,"split-table":true,"token-limit":1000,"oom-action":"log","mem-quota-query":34359738368,"enable-streaming":false,"txn-local-latches":

{"en abled":false,"capacity":10240000}
,"lower-case-table-names":2,"log":{"level":"info","format":"text","disable-timestamp":false,"file":

{"filename":"/data0/deploy/log/tidb.log","log-rotate":tru e,"max-size":300,"max-days":0,"max-backups":0}
,"slow-query-file":"","slow-threshold":300,"expensive-threshold":10000,"query-log-max-len":2048},"security":

{"skip-grant-table":false,"ssl-ca": "","ssl-cert":"","ssl-key":"","cluster-ssl-ca":"","cluster-ssl-cert":"","cluster-ssl-key":""}
,"status":{"report-status":true,"status-port":10080,"metrics-addr":"","metrics-interval":15},"pe
rformance":

{"max-procs":0,"tcp-keep-alive":true,"cross-join":true,"stats-lease":"3s","run-auto-analyze":true,"stmt-count-limit":5000,"feedback-probability":0.05,"query-feedback-limit":1024, "pseudo-estimate-ratio":0.8,"force-priority":"NO_PRIORITY"}
,"xprotocol":{"xserver":false,"xhost":"","xport":0,"xsocket":""},"prepared-plan-cache":{"enabled":false,"capacity":100},"opentraci
ng":{"enable":false,"sampler":

{"type":"const","param":1,"sampling-server-url":"","max-operations":0,"sampling-refresh-interval":0}
,"reporter":

{"queue-size":0,"buffer-flush-interval":0,"log- spans":false,"local-agent-host-port":""}
,"rpc-metrics":false},"proxy-protocol":{"networks":"","header-timeout":5},"tikv-client":

{"grpc-connection-count":16,"grpc-keepalive-time":10,"grpc-ke epalive-timeout":3,"commit-timeout":"41s"}
,"binlog":{"enable":false,"write-timeout":"15s","ignore-error":false},"compatible-kill-query":false}
2018/11/19 16:58:31.015 main.go:196: [info] disable Prometheus push client
2018/11/19 16:58:31.015 tidb.go:260: [info] new store
2018/11/19 16:58:31.015 client.go:124: [info] [pd] create pd client with endpoints [192.168.0.201:2379 192.168.0.202:2379 192.168.0.203:2379]
2018/11/19 16:58:31.015 systime_mon.go:24: [info] start system time monitor
2018/11/19 16:58:31.017 client.go:226: [info] [pd] leader switches to: http://192.168.0.203:2379, previous:
2018/11/19 16:58:31.017 client.go:143: [info] [pd] init cluster id 6624403977823135243
2018/11/19 16:58:31.025 tidb.go:61: [info] store tikv-6624403977823135243 new domain, ddl lease 45s, stats lease 3000000000
2018/11/19 16:58:31.025 ddl.go:360: [info] [ddl] start DDL:5ab0971e-6043-41aa-b21c-21ae2263f749, run worker true
2018/11/19 16:58:31.026 ddl_worker.go:82: [info] [ddl] start delRangeManager OK, with emulator: false
2018/11/19 16:58:31.026 ddl_worker.go:82: [info] [ddl] start delRangeManager OK, with emulator: false
2018/11/19 16:58:31.026 ddl_worker.go:117: [info] [ddl-worker 1, tp general] start DDL worker
2018/11/19 16:58:31.026 ddl_worker.go:117: [info] [ddl-worker 2, tp add index] start DDL worker
2018/11/19 16:58:31.098 domain.go:125: [info] [ddl] full load InfoSchema from version 0 to 215, in 65.722955ms
2018/11/19 16:58:31.099 domain.go:322: [info] [ddl] full load and reset schema validator.
2018/11/19 16:58:31.103 session.go:809: [warning] con:0 compile error:
[planner:1054]Unknown column 'system_tz' in 'where clause'
select variable_value from mysql.tidb where variable_name = "system_tz"
2018/11/19 16:58:31.103 terror.go:327: [fatal] [planner:1054]Unknown column 'system_tz' in 'where clause'
github.com/pingcap/tidb/vendor/github.com/pkg/errors.AddStack
/home/jenkins/workspace/build_tidb_2.1/go/src/github.com/pingcap/tidb/vendor/github.com/pkg/errors/errors.go:174
github.com/pingcap/tidb/terror.(*Error).GenWithStackByArgs
/home/jenkins/workspace/build_tidb_2.1/go/src/github.com/pingcap/tidb/terror/terror.go:231
github.com/pingcap/tidb/planner/core.(*expressionRewriter).toColumn
/home/jenkins/workspace/build_tidb_2.1/go/src/github.com/pingcap/tidb/planner/core/expression_rewriter.go:1261
github.com/pingcap/tidb/planner/core.(*expressionRewriter).Leave
/home/jenkins/workspace/build_tidb_2.1/go/src/github.com/pingcap/tidb/planner/core/expression_rewriter.go:772
github.com/pingcap/tidb/ast.(*ColumnName).Accept
/home/jenkins/workspace/build_tidb_2.1/go/src/github.com/pingcap/tidb/ast/expressions.go:412
github.com/pingcap/tidb/ast.(*ColumnNameExpr).Accept
/home/jenkins/workspace/build_tidb_2.1/go/src/github.com/pingcap/tidb/ast/expressions.go:466
github.com/pingcap/tidb/ast.(*BinaryOperationExpr).Accept
/home/jenkins/workspace/build_tidb_2.1/go/src/github.com/pingcap/tidb/ast/expressions.go:221
github.com/pingcap/tidb/planner/core.(*planBuilder).rewriteExprNode
/home/jenkins/workspace/build_tidb_2.1/go/src/github.com/pingcap/tidb/planner/core/expression_rewriter.go:133
github.com/pingcap/tidb/planner/core.(*planBuilder).rewriteWithPreprocess
/home/jenkins/workspace/build_tidb_2.1/go/src/github.com/pingcap/tidb/planner/core/expression_rewriter.go:105
github.com/pingcap/tidb/planner/core.(*planBuilder).rewrite
/home/jenkins/workspace/build_tidb_2.1/go/src/github.com/pingcap/tidb/planner/core/expression_rewriter.go:81
github.com/pingcap/tidb/planner/core.(*planBuilder).buildSelection
/home/jenkins/workspace/build_tidb_2.1/go/src/github.com/pingcap/tidb/planner/core/logical_plan_builder.go:463
github.com/pingcap/tidb/planner/core.(*planBuilder).buildSelect
/home/jenkins/workspace/build_tidb_2.1/go/src/github.com/pingcap/tidb/planner/core/logical_plan_builder.go:1668
github.com/pingcap/tidb/planner/core.(*planBuilder).build
/home/jenkins/workspace/build_tidb_2.1/go/src/github.com/pingcap/tidb/planner/core/planbuilder.go:157
github.com/pingcap/tidb/planner/core.Optimize
/home/jenkins/workspace/build_tidb_2.1/go/src/github.com/pingcap/tidb/planner/core/optimizer.go:74
github.com/pingcap/tidb/executor.(*Compiler).Compile
/home/jenkins/workspace/build_tidb_2.1/go/src/github.com/pingcap/tidb/executor/compiler.go:48
github.com/pingcap/tidb/session.(*session).execute
/home/jenkins/workspace/build_tidb_2.1/go/src/github.com/pingcap/tidb/session/session.go:806
github.com/pingcap/tidb/session.(*session).Execute
/home/jenkins/workspace/build_tidb_2.1/go/src/github.com/pingcap/tidb/session/session.go:768
github.com/pingcap/tidb/session.loadSystemTZ
/home/jenkins/workspace/build_tidb_2.1/go/src/github.com/pingcap/tidb/session/session.go:1090
github.com/pingcap/tidb/session.BootstrapSession
/home/jenkins/workspace/build_tidb_2.1/go/src/github.com/pingcap/tidb/session/session.go:1115
main.createStoreAndDomain
/home/jenkins/workspace/build_tidb_2.1/go/src/github.com/pingcap/tidb/tidb-server/main.go:166
main.main
/home/jenkins/workspace/build_tidb_2.1/go/src/github.com/pingcap/tidb/tidb-server/main.go:140
runtime.main
/usr/local/go/src/runtime/proc.go:201
runtime.goexit
/usr/local/go/src/runtime/asm_amd64.s:1333

What is changed and how it works?

Change
select variable_value from mysql.tidb where variable_name = "system_tz"
to
select variable_value from mysql.tidb where variable_name = 'system_tz'

Check List

Tests

  • Unit test

Related changes

  • Need to cherry-pick to the release branch

This change is Reviewable

@tiancaiamao tiancaiamao added status/WIP type/bugfix This PR fixes a bug. labels Nov 19, 2018
Copy link
Member

@winoros winoros left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm
Description is wrong. Also, it's not a panic. It just returned error.

winkyao
winkyao previously approved these changes Nov 19, 2018
@tiancaiamao
Copy link
Contributor Author

/run-all-tests

PTAL @winoros @zz-jason

@tiancaiamao tiancaiamao changed the title session: fix expression rewriter panic in ANSI sql_mode session: fix a bootstrap panic in ANSI sql_mode Nov 19, 2018
@tiancaiamao tiancaiamao changed the title session: fix a bootstrap panic in ANSI sql_mode session: fix bootstrap error in ANSI sql_mode Nov 19, 2018
@tiancaiamao
Copy link
Contributor Author

/run-integration-ddl-test

@tiancaiamao
Copy link
Contributor Author

PTAL @winkyao @winoros

@shenli
Copy link
Member

shenli commented Nov 20, 2018

LGTM
But the description is still wrong:

After setting sql_mode to ANSI, TiDB panic on startup:

@shenli shenli added the status/LGT1 Indicates that a PR has LGTM 1. label Nov 20, 2018
Copy link
Member

@jackysp jackysp left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
component/server status/LGT1 Indicates that a PR has LGTM 1. type/bugfix This PR fixes a bug.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants