Skip to content

Commit 165fa7e

Browse files
author
Tor Didriksen
committed
Bug#35129166 push_packet_overflow_warning(THD*, const char*):Assertion `is_nullable()' failed
Tag the function last_insert_id() as constant for execution, rather than constant, to avoid evaluating it at resolve time. Change-Id: I3ad215f3d9b8a68e8e2fd5ef76e50e15f8c71085 (cherry picked from commit acf059773f7f14fec9459ee735c257845ffc791e)
1 parent 18ad1c4 commit 165fa7e

File tree

3 files changed

+77
-0
lines changed

3 files changed

+77
-0
lines changed

mysql-test/r/func_str.result

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5739,3 +5739,38 @@ WHEN (CONVERT(c1 USING utf16)) THEN c1 END
57395739
FROM t1;
57405740
ERROR HY000: Cannot convert string '\xDC\x01\xA0\xC1\x02\xD8...' from binary to utf16
57415741
DROP TABLE t1;
5742+
#
5743+
# Bug#35129166 push_packet_overflow_warning(THD*, const char*):
5744+
# Assertion `is_nullable()' failed
5745+
#
5746+
SET SESSION SQL_MODE='';
5747+
CREATE TABLE t1 (
5748+
col_varchar_255_utf8_key varchar(255),
5749+
col_int int DEFAULT NULL,
5750+
pk int NOT NULL AUTO_INCREMENT,
5751+
PRIMARY KEY (pk),
5752+
KEY col_varchar_255_utf8_key (col_varchar_255_utf8_key)
5753+
);
5754+
INSERT INTO t1 VALUES
5755+
('that',4,1),
5756+
('r',-1153105920,2);
5757+
CREATE VIEW v1 AS SELECT * FROM t1;
5758+
SELECT
5759+
pk FROM v1
5760+
ORDER BY "cant" IN ( ( FORMAT( LAST_INSERT_ID( pk ) , 42 ) ) );
5761+
pk
5762+
2
5763+
1
5764+
SELECT
5765+
STDDEV_POP( ( LAST_INSERT_ID( ( - 2313724308561592320 ) ) ) ) AS field5
5766+
FROM t1
5767+
GROUP BY HEX( col_varchar_255_utf8_key )
5768+
ORDER BY SPACE( LAST_INSERT_ID() );
5769+
field5
5770+
0
5771+
0
5772+
Warnings:
5773+
Warning 1301 Result of space() was larger than max_allowed_packet (67108864) - truncated
5774+
DROP VIEW v1;
5775+
DROP TABLE t1;
5776+
SET SESSION SQL_MODE=DEFAULT;

mysql-test/t/func_str.test

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2558,3 +2558,40 @@ SELECT
25582558
FROM t1;
25592559

25602560
DROP TABLE t1;
2561+
2562+
--echo #
2563+
--echo # Bug#35129166 push_packet_overflow_warning(THD*, const char*):
2564+
--echo # Assertion `is_nullable()' failed
2565+
--echo #
2566+
2567+
SET SESSION SQL_MODE='';
2568+
2569+
CREATE TABLE t1 (
2570+
col_varchar_255_utf8_key varchar(255),
2571+
col_int int DEFAULT NULL,
2572+
pk int NOT NULL AUTO_INCREMENT,
2573+
2574+
PRIMARY KEY (pk),
2575+
KEY col_varchar_255_utf8_key (col_varchar_255_utf8_key)
2576+
);
2577+
2578+
INSERT INTO t1 VALUES
2579+
('that',4,1),
2580+
('r',-1153105920,2);
2581+
2582+
CREATE VIEW v1 AS SELECT * FROM t1;
2583+
2584+
SELECT
2585+
pk FROM v1
2586+
ORDER BY "cant" IN ( ( FORMAT( LAST_INSERT_ID( pk ) , 42 ) ) );
2587+
2588+
SELECT
2589+
STDDEV_POP( ( LAST_INSERT_ID( ( - 2313724308561592320 ) ) ) ) AS field5
2590+
FROM t1
2591+
GROUP BY HEX( col_varchar_255_utf8_key )
2592+
ORDER BY SPACE( LAST_INSERT_ID() );
2593+
2594+
DROP VIEW v1;
2595+
DROP TABLE t1;
2596+
2597+
SET SESSION SQL_MODE=DEFAULT;

sql/item_func.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2014,6 +2014,11 @@ class Item_func_last_insert_id final : public Item_int_func {
20142014
bool itemize(Parse_context *pc, Item **res) override;
20152015
longlong val_int() override;
20162016
const char *func_name() const override { return "last_insert_id"; }
2017+
2018+
table_map get_initial_pseudo_tables() const override {
2019+
return INNER_TABLE_BIT;
2020+
}
2021+
20172022
bool resolve_type(THD *thd) override {
20182023
if (param_type_is_default(thd, 0, 1, MYSQL_TYPE_LONGLONG)) return true;
20192024
unsigned_flag = true;

0 commit comments

Comments
 (0)