1
0
mirror of https://github.com/mariadb-corporation/mariadb-columnstore-engine.git synced 2025-07-29 08:21:15 +03:00

Fix autoincrement filtering problems with utf-8 (#2964)

MCOL-5572: Widen the autoincrement column to accomodate utf-8  encoded into weights with strnxfrm function.
This commit is contained in:
Sergey Zefirov
2023-09-22 16:40:10 +03:00
committed by GitHub
parent 1eb053b46c
commit 4bfce51628
3 changed files with 48 additions and 1 deletions

View File

@ -6043,7 +6043,12 @@ void CalpontSystemCatalog::buildSysColinfomap()
fColinfomap[OID_SYSCOLUMN_PRECISION] = ColType(4, scale, precision, NOTNULL_CONSTRAINT,
notDict, colPosition++, compressionType, OID_SYSCOLUMN_PRECISION, INT);
fColinfomap[OID_SYSCOLUMN_AUTOINC] = ColType(1, scale, precision, NO_CONSTRAINT,
// please note that column width specified in table creation is 1.
// we specify 4 because we use strnxfrm in filtering and it may convert
// data to, well, unsigned long int (my_cw_t type). But, all of the
// contemporary character sets have weights up to 32-bit, thus, here we
// specify 4-byte width which ill be enough for time being.
fColinfomap[OID_SYSCOLUMN_AUTOINC] = ColType(4, scale, precision, NO_CONSTRAINT,
notDict, colPosition++, compressionType, OID_SYSCOLUMN_AUTOINC, CHAR);
fColinfomap[OID_SYSCOLUMN_DISTCOUNT] = ColType(4, scale, precision, NO_CONSTRAINT,

View File

@ -0,0 +1,20 @@
SET default_storage_engine=columnstore;
DROP DATABASE IF EXISTS mcol5572;
CREATE DATABASE mcol5572;
USE mcol5572;
create table foo (col1 int) engine=columnstore;
insert into foo values ( 1 ), ( 2 ), ( 3 ), ( 4 ), ( 5 );
Alter table foo add column newcol bigint comment 'autoincrement';
select callastinsertid('foo');
callastinsertid('foo')
5
select tablename, autoincrement, nextvalue from calpontsys.syscolumn where autoincrement = 'y' and `schema`='mcol5572' and tablename='foo';
tablename autoincrement nextvalue
foo y 6
select tablename, autoincrement, nextvalue from calpontsys.syscolumn where autoincrement != 'n' and `schema`='mcol5572' and tablename='foo';
tablename autoincrement nextvalue
foo y 6
select tablename, autoincrement, nextvalue from calpontsys.syscolumn where autoincrement = 'n' and `schema`='mcol5572' and tablename='foo';
tablename autoincrement nextvalue
foo n 1
DROP DATABASE mcol5572;

View File

@ -0,0 +1,22 @@
--source ../include/have_columnstore.inc
SET default_storage_engine=columnstore;
--disable_warnings
DROP DATABASE IF EXISTS mcol5572;
--enable_warnings
CREATE DATABASE mcol5572;
USE mcol5572;
create table foo (col1 int) engine=columnstore;
insert into foo values ( 1 ), ( 2 ), ( 3 ), ( 4 ), ( 5 );
Alter table foo add column newcol bigint comment 'autoincrement';
select callastinsertid('foo');
select tablename, autoincrement, nextvalue from calpontsys.syscolumn where autoincrement = 'y' and `schema`='mcol5572' and tablename='foo';
select tablename, autoincrement, nextvalue from calpontsys.syscolumn where autoincrement != 'n' and `schema`='mcol5572' and tablename='foo';
select tablename, autoincrement, nextvalue from calpontsys.syscolumn where autoincrement = 'n' and `schema`='mcol5572' and tablename='foo';
DROP DATABASE mcol5572;