Skip to content

Commit

Permalink
Merge branch '10.8' into 10.9
Browse files Browse the repository at this point in the history
  • Loading branch information
sanja-byelkin committed May 4, 2023
2 parents d7fae79 + 4ccc310 commit 84a72f4
Show file tree
Hide file tree
Showing 7 changed files with 118 additions and 4 deletions.
41 changes: 41 additions & 0 deletions mysql-test/main/insert_update.result
Expand Up @@ -412,3 +412,44 @@ select if( @stamp1 = @stamp2, "correct", "wrong");
if( @stamp1 = @stamp2, "correct", "wrong")
correct
drop table t1;
#
# MDEV-31164 default current_timestamp() not working when used INSERT ON DUPLICATE KEY in some cases
#
set timestamp=unix_timestamp('2000-10-20 0:0:0');
create table t1 (pk integer primary key, val varchar(20) not null, ts timestamp);
insert t1 (pk, val) values(1, 'val1');
select * from t1;
pk val ts
1 val1 2000-10-20 00:00:00
set timestamp=unix_timestamp('2000-10-20 1:0:0');
insert t1 (pk, val) select 2, 'val3' union select 3, 'val4'
on duplicate key update ts=now();
select * from t1;
pk val ts
1 val1 2000-10-20 00:00:00
2 val3 2000-10-20 01:00:00
3 val4 2000-10-20 01:00:00
set timestamp=unix_timestamp('2000-10-20 2:0:0');
insert t1 (pk, val) select 1, 'val1' union select 4, 'val2'
on duplicate key update ts=now();
select * from t1;
pk val ts
1 val1 2000-10-20 02:00:00
2 val3 2000-10-20 01:00:00
3 val4 2000-10-20 01:00:00
4 val2 2000-10-20 02:00:00
set timestamp=unix_timestamp('2000-10-20 3:0:0');
insert t1 (pk, val) select 5, 'val1' union select 1, 'val2'
on duplicate key update ts=now();
select * from t1;
pk val ts
1 val1 2000-10-20 03:00:00
2 val3 2000-10-20 01:00:00
3 val4 2000-10-20 01:00:00
4 val2 2000-10-20 02:00:00
5 val1 2000-10-20 03:00:00
drop table t1;
set timestamp=default;
#
# End of 10.4 tests
#
26 changes: 26 additions & 0 deletions mysql-test/main/insert_update.test
Expand Up @@ -311,3 +311,29 @@ insert into t1(f1) values(1) on duplicate key update f1=1;
select @stamp2:=f2 from t1;
select if( @stamp1 = @stamp2, "correct", "wrong");
drop table t1;

--echo #
--echo # MDEV-31164 default current_timestamp() not working when used INSERT ON DUPLICATE KEY in some cases
--echo #
set timestamp=unix_timestamp('2000-10-20 0:0:0');
create table t1 (pk integer primary key, val varchar(20) not null, ts timestamp);
insert t1 (pk, val) values(1, 'val1');
select * from t1;
set timestamp=unix_timestamp('2000-10-20 1:0:0');
insert t1 (pk, val) select 2, 'val3' union select 3, 'val4'
on duplicate key update ts=now();
select * from t1;
set timestamp=unix_timestamp('2000-10-20 2:0:0');
insert t1 (pk, val) select 1, 'val1' union select 4, 'val2'
on duplicate key update ts=now();
select * from t1;
set timestamp=unix_timestamp('2000-10-20 3:0:0');
insert t1 (pk, val) select 5, 'val1' union select 1, 'val2'
on duplicate key update ts=now();
select * from t1;
drop table t1;
set timestamp=default;

--echo #
--echo # End of 10.4 tests
--echo #
18 changes: 18 additions & 0 deletions mysql-test/main/view.result
Expand Up @@ -6951,6 +6951,24 @@ create algorithm=merge view v as
select * from t1 left join t2 on t1.a=t2.b and t1.a in (select d from t3);
ERROR 42S22: Unknown column 'd' in 'field list'
drop table t1,t2,t3;
#
# MDEV-31189: Server crash or assertion failure in upon 2nd
# execution of PS with views and HAVING
#
CREATE TABLE t (f INT);
INSERT INTO t VALUES (1),(2);
CREATE VIEW v1 AS SELECT 1 AS a;
CREATE VIEW v2 AS SELECT a FROM v1;
PREPARE stmt FROM "SELECT * FROM v2 HAVING 1 IN (SELECT f FROM t)";
EXECUTE stmt;
a
1
EXECUTE stmt;
a
1
DROP VIEW v1;
DROP VIEW v2;
DROP TABLE t;
# End of 10.4 tests
#
# MDEV-13115: SELECT .. SKIP LOCKED - ensure SHOW CREATE VIEW is correct
Expand Down
19 changes: 19 additions & 0 deletions mysql-test/main/view.test
Expand Up @@ -6695,6 +6695,25 @@ create algorithm=merge view v as

drop table t1,t2,t3;

--echo #
--echo # MDEV-31189: Server crash or assertion failure in upon 2nd
--echo # execution of PS with views and HAVING
--echo #

CREATE TABLE t (f INT);
INSERT INTO t VALUES (1),(2); # Optional, fails either way
CREATE VIEW v1 AS SELECT 1 AS a;
CREATE VIEW v2 AS SELECT a FROM v1;

PREPARE stmt FROM "SELECT * FROM v2 HAVING 1 IN (SELECT f FROM t)";
EXECUTE stmt;
EXECUTE stmt;

# Cleanup
DROP VIEW v1;
DROP VIEW v2;
DROP TABLE t;

--echo # End of 10.4 tests

--echo #
Expand Down
1 change: 1 addition & 0 deletions sql/sql_insert.cc
Expand Up @@ -4213,6 +4213,7 @@ bool select_insert::store_values(List<Item> &values)
DBUG_ENTER("select_insert::store_values");
bool error;

table->reset_default_fields();
if (fields->elements)
error= fill_record_n_invoke_before_triggers(thd, table, *fields, values,
true, TRG_EVENT_INSERT);
Expand Down
12 changes: 8 additions & 4 deletions sql/table.cc
Expand Up @@ -9533,8 +9533,13 @@ void TABLE_LIST::wrap_into_nested_join(List<TABLE_LIST> &join_list)

static inline bool derived_table_optimization_done(TABLE_LIST *table)
{
return table->derived &&
(table->derived->is_excluded() ||
SELECT_LEX_UNIT *derived= (table->derived ?
table->derived :
(table->view ?
&table->view->unit:
NULL));
return derived &&
(derived->is_excluded() ||
table->is_materialized_derived());
}

Expand Down Expand Up @@ -9596,8 +9601,7 @@ bool TABLE_LIST::init_derived(THD *thd, bool init_view)
set_derived();
}

if (is_view() ||
!derived_table_optimization_done(this))
if (!derived_table_optimization_done(this))
{
/* A subquery might be forced to be materialized due to a side-effect. */
if (!is_materialized_derived() && unit->can_be_merged() &&
Expand Down
5 changes: 5 additions & 0 deletions storage/rocksdb/CMakeLists.txt
Expand Up @@ -30,6 +30,11 @@ IF(WITH_VALGRIND)
ADD_DEFINITIONS(-DROCKSDB_VALGRIND_RUN=1)
ENDIF()

ADD_DEFINITIONS(-Duint64_t=u_int64_t)
ADD_DEFINITIONS(-Duint32_t=u_int32_t)
ADD_DEFINITIONS(-Duint16_t=u_int16_t)
ADD_DEFINITIONS(-Duint8_t=u_int8_t)

# We've had our builders hang during the build process. This prevents MariaRocks
# to be built on 32 bit intel OS kernels.
IF(CMAKE_SYSTEM_PROCESSOR MATCHES "i[36]86")
Expand Down

0 comments on commit 84a72f4

Please sign in to comment.