Skip to content

Build join plan Panic #1031

Closed
Closed
@shenli

Description

Please answer these questions before submitting your issue. Thanks!

  1. What version of Go are you using (go version)?
    1.5.1
  2. What operating system and processor architecture are you using (go env)?
    Linux
  3. What did you do?
    Run SQL:
    CREATE TABLE b (id INTEGER NOT NULL AUTO_INCREMENT, PRIMARY KEY (id))ENGINE=MyISAM;

CREATE TABLE a (
id INTEGER NOT NULL AUTO_INCREMENT,
bid INTEGER,
type VARCHAR(30),
PRIMARY KEY (id),
FOREIGN KEY(bid) REFERENCES b (id)
)ENGINE=MyISAM;

CREATE TABLE asub (
id INTEGER NOT NULL,
data VARCHAR(30),
PRIMARY KEY (id),
FOREIGN KEY(id) REFERENCES a (id)
)ENGINE=MyISAM;

INSERT INTO asub (id, data) VALUES
(1, 'a1'),
(2, 'a2'),
(3, 'a3');

INSERT INTO b () VALUES ();
INSERT INTO a (bid, type) VALUES (1, 'asub');

SELECT anon_1.a_id AS anon_1_a_id, anon_1.a_bid AS anon_1_a_bid, anon_1.a_type AS anon_1_a_type, anon_1.asub_id AS anon_1_asub_id, anon_1.asub_data AS anon_1_asub_data, anon_2.b_id AS anon_2_b_id FROM (SELECT b.id AS b_id FROM b) AS anon_2 INNER JOIN (SELECT a.id AS a_id, a.bid AS a_bid, a.type AS a_type, asub.id AS asub_id, asub.data AS asub_data FROM a LEFT OUTER JOIN asub ON a.id = asub.id) AS anon_1 ON anon_2.b_id = anon_1.a_bid ORDER BY anon_2.b_id;

  1. What did you expect to see?
    Run SQL successfully.
  2. What did you see instead?
    2016/03/31 14:13:54 tidb.go:129: �[0;36m[debug] compiling SELECT anon_1.a_id AS anon_1_a_id, anon_1.a_bid AS anon_1_a_bid, anon_1.a_type AS anon_1_a_type, anon_1.asub_id AS anon_1_asub_id, anon_1.asub_data AS anon_1_asub_data, anon_2.b_id AS anon_2_b_id
    FROM (SELECT b.id AS b_id
    FROM b) AS anon_2 INNER JOIN (SELECT a.id AS a_id, a.bid AS a_bid, a.type AS a_type, asub.id AS asub_id, asub.data AS asub_data
    FROM a LEFT OUTER JOIN asub ON a.id = asub.id) AS anon_1 ON anon_2.b_id = anon_1.a_bid ORDER BY anon_2.b_id �[0m
    2016/03/31 14:13:54 conn.go:222: �[0;31m[error] lastCmd SELECT anon_1.a_id AS anon_1_a_id, anon_1.a_bid AS anon_1_a_bid, anon_1.a_type AS anon_1_a_type, anon_1.asub_id AS anon_1_asub_id, anon_1.asub_data AS anon_1_asub_data, anon_2.b_id AS anon_2_b_id
    FROM (SELECT b.id AS b_id
    FROM b) AS anon_2 INNER JOIN (SELECT a.id AS a_id, a.bid AS a_bid, a.type AS a_type, asub.id AS asub_id, asub.data AS asub_data
    FROM a LEFT OUTER JOIN asub ON a.id = asub.id) AS anon_1 ON anon_2.b_id = anon_1.a_bid ORDER BY anon_2.b_id, runtime error: invalid memory address or nil pointer dereference, goroutine 1071 [running]:
    github.com/pingcap/tidb/tidb-server/server.(_clientConn).Run.func1(0xc8200ee790)
    /home/shenli/go/src/github.com/pingcap/tidb/tidb-server/server/conn.go:221 +0xb5
    github.com/pingcap/tidb/optimizer/plan.(_joinPath).attachEqualCond(0x0, 0xc820dbde00, 0xc82077d8d0, 0x1, 0x1, 0x0)
    /home/shenli/go/src/github.com/pingcap/tidb/optimizer/plan/planbuilder_join.go:241 +0x47
    github.com/pingcap/tidb/optimizer/plan.(_joinPath).attachEqualCond(0xc8206fc620, 0xc820dbde00, 0xc82077d8d0, 0x1, 0x1, 0x1)
    /home/shenli/go/src/github.com/pingcap/tidb/optimizer/plan/planbuilder_join.go:276 +0x441
    github.com/pingcap/tidb/optimizer/plan.(_joinPath).reattach(0xc8206fc7e0, 0xc820bb0300, 0xc82077d8d0, 0x1, 0x1)
    /home/shenli/go/src/github.com/pingcap/tidb/optimizer/plan/planbuilder_join.go:488 +0x3f4
    github.com/pingcap/tidb/optimizer/plan.(_joinPath).optimizeJoinOrder(0xc8206fc7e0, 0xc82077d8d0, 0x1, 0x1)
    /home/shenli/go/src/github.com/pingcap/tidb/optimizer/plan/planbuilder_join.go:459 +0x51d
    github.com/pingcap/tidb/optimizer/plan.(_planBuilder).buildJoin(0xc820c75c40, 0xc820294280, 0x0, 0x0)
    /home/shenli/go/src/github.com/pingcap/tidb/optimizer/plan/planbuilder_join.go:610 +0x498
    github.com/pingcap/tidb/optimizer/plan.(_planBuilder).buildFrom(0xc820c75c40, 0xc820294280, 0x0, 0x0)
    /home/shenli/go/src/github.com/pingcap/tidb/optimizer/plan/planbuilder.go:274 +0x70
    github.com/pingcap/tidb/optimizer/plan.(_planBuilder).buildSelect(0xc820c75c40, 0xc820294280, 0x0, 0x0)
    /home/shenli/go/src/github.com/pingcap/tidb/optimizer/plan/planbuilder.go:216 +0x150
    github.com/pingcap/tidb/optimizer/plan.(_planBuilder).build(0xc820c75c40, 0x7f7ffc2748e8, 0xc820294280, 0x0, 0x0)
    /home/shenli/go/src/github.com/pingcap/tidb/optimizer/plan/planbuilder.go:87 +0x824
    github.com/pingcap/tidb/optimizer/plan.BuildPlan(0x7f7ffc2748e8, 0xc820294280, 0x7f7ffc2744b0, 0xc820853500, 0x0, 0x0, 0x0, 0x0)
    /home/shenli/go/src/github.com/pingcap/tidb/optimizer/plan/planbuilder.go:43 +0xd4
    github.com/pingcap/tidb/optimizer.Optimize(0x7f7ffcab94a8, 0xc821456080, 0x7f7ffc2748e8, 0xc820294280, 0x7f7ffc2744b0, 0xc820853500, 0x0, 0x0, 0x0, 0x0)
    /home/shenli/go/src/github.com/pingcap/tidb/optimizer/optimizer.go:36 +0x184
    github.com/pingcap/tidb/executor.(_Compiler).Compile(0xc8203a38e0, 0x7f7ffcab94a8, 0xc821456080, 0x7f7ffc2748a8, 0xc820294280, 0x0, 0x0, 0x0, 0x0)
    /home/shenli/go/src/github.com/pingcap/tidb/executor/compiler.go:46 +0x370
    github.com/pingcap/tidb.Compile(0x7f7ffcab94a8, 0xc821456080, 0x7f7ffc2748a8, 0xc820294280, 0x0, 0x0, 0x0, 0x0)
    /home/shenli/go/src/github.com/pingcap/tidb/tidb.go:142 +0x79
    github.com/pingcap/tidb.(_session).Execute(0xc821456080, 0xc820dce001, 0x1cc, 0x0, 0x0, 0x0, 0x0, 0x0)
    /home/shenli/go/src/github.com/pingcap/tidb/session.go:372 +0x22d
    github.com/pingcap/tidb/tidb-server/server.(_TiDBContext).Execute(0xc8202823f0, 0xc820dce001, 0x1cc, 0x0, 0x0, 0x0, 0x0)
    /home/shenli/go/src/github.com/pingcap/tidb/tidb-server/server/driver_tidb.go:157 +0x83
    github.com/pingcap/tidb/tidb-server/server.(_clientConn).handleQuery(0xc8200ee790, 0xc820dce001, 0x1cc, 0x0, 0x0)
    /home/shenli/go/src/github.com/pingcap/tidb/tidb-server/server/conn.go:366 +0x6d
    github.com/pingcap/tidb/tidb-server/server.(_clientConn).dispatch(0xc8200ee790, 0xc820dce001, 0x1cc, 0x1cc, 0x0, 0x0)
    /home/shenli/go/src/github.com/pingcap/tidb/tidb-server/server/conn.go:265 +0x748
    github.com/pingcap/tidb/tidb-server/server.(_clientConn).Run(0xc8200ee790)
    /home/shenli/go/src/github.com/pingcap/tidb/tidb-server/server/conn.go:237 +0x238
    github.com/pingcap/tidb/tidb-server/server.(_Server).onConn(0xc82010a680, 0x7f7ffd3392b0, 0xc820ce17c0)
    /home/shenli/go/src/github.com/pingcap/tidb/tidb-server/server/server.go:163 +0x39a
    created by github.com/pingcap/tidb/tidb-server/server.(*Server).Run
    /home/shenli/go/src/github.com/pingcap/tidb/tidb-server/server/server.go:129 +0x203

Metadata

Assignees

Labels

type/bugThe issue is confirmed as a bug.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions