Skip to content

Incorrect result of index list scan for a composite index, the second segment of which is a text field with COLLATE UNICODE_CI. #8214

@sim1984

Description

@sim1984

Incorrect result of index list scan for a composite index, the second segment of which is a text field with COLLATE UNICODE_CI.

Firebird 5.0.1 Windows 10 x64

SET NAMES UTF8;

CREATE DATABASE 'inet4://localhost:3055/test'
USER "SYSDBA" PASSWORD 'masterkey'
PAGE_SIZE 8192
DEFAULT CHARACTER SET UTF8;

RECREATE TABLE MANS (
  CODE_MAN BIGINT NOT NULL,
  CODE_SEX SMALLINT NOT NULL,
  NAME VARCHAR(50) NOT NULL COLLATE UNICODE_CI,
  CONSTRAINT PK_MANS PRIMARY KEY(CODE_MAN)
);

CREATE INDEX IDX_SEX_AND_NAME ON MANS(CODE_SEX, NAME);

INSERT INTO MANS (CODE_MAN, CODE_SEX, NAME)
VALUES (1, 1, 'Bob');

INSERT INTO MANS (CODE_MAN, CODE_SEX, NAME)
VALUES (2, 1, 'John');

INSERT INTO MANS (CODE_MAN, CODE_SEX, NAME)
VALUES (3, 2, 'Barbara');

INSERT INTO MANS (CODE_MAN, CODE_SEX, NAME)
VALUES (4, 2, 'Anna');

COMMIT;

-- Good
SELECT *
FROM MANS
WHERE CODE_SEX = 1 AND NAME STARTS 'B';

             CODE_MAN CODE_SEX NAME
===================== ======== ==================================================
                    1        1 Bob


-- Good
SELECT *
FROM MANS
WHERE CODE_SEX = 2 AND NAME STARTS 'B';

             CODE_MAN CODE_SEX NAME
===================== ======== ==================================================
                    3        2 Barbara


-- Error
SELECT *
FROM MANS
WHERE CODE_SEX IN (1, 2) AND NAME STARTS 'B';


             CODE_MAN CODE_SEX NAME
===================== ======== ==================================================
                    1        1 Bob

-- Good
SELECT *
FROM MANS
WHERE (CODE_SEX = 1 OR CODE_SEX = 2) AND NAME STARTS 'B';


             CODE_MAN CODE_SEX NAME
===================== ======== ==================================================
                    1        1 Bob
                    3        2 Barbara

The third query gives an incorrect result.

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions