Skip to content

Wrong result for MINVALUE/MAXVALUE with string arguments #8440

@EPluribusUnum

Description

@EPluribusUnum

Hi *!

This select returns null. It should return "2024×202401; 2024×202402"
Works on ever previous FB versions.

WITH idoszak AS
(SELECT i.nev kod, i.ntz_tol, i.ntz_ig, i.erv_tol dat_tol, i.erv_ig dat_ig, i.iktato_tol ikt_tol, i.iktato_ig ikt_ig
FROM fk_tabla_idoszak i
WHERE i.fk_tabla_fej_id = 1000 AND ((nev STARTING WITH '2024'))),
combine AS
(SELECT i.kod, i.ntz_tol, i.ntz_ig, i.dat_tol, i.dat_ig, i.ikt_tol, i.ikt_ig,
i2.kod i2_kod, i2.ntz_tol i2_ntz_tol, i2.ntz_ig i2_ntz_ig, i2.dat_tol i2_dat_tol, i2.dat_ig i2_dat_ig, i2.ikt_tol i2_ikt_tol, i2.ikt_ig i2_ikt_ig
FROM idoszak i
JOIN idoszak i2 ON i2.kod > i.kod),
overlap AS
(SELECT DISTINCT MINVALUE(kod, i2_kod) kod, MAXVALUE(kod, i2_kod) i2_kod,
NOT (
(COALESCE(ntz_tol, 'N') > COALESCE(i2_ntz_ig, 'Z') OR COALESCE(ntz_ig, 'Z') < COALESCE(i2_ntz_tol, 'N')) OR
(COALESCE(dat_tol, CAST('1900.01.01' AS DATE)) > COALESCE(i2_dat_ig, CAST('2100.12.31' AS DATE)) OR COALESCE(dat_ig, CAST('2100.12.31' AS DATE)) < COALESCE(i2_dat_tol, CAST('1900.01.01' AS DATE))) OR
(COALESCE(ikt_tol, 0) > COALESCE(i2_ikt_ig, 2147483647) OR COALESCE(ikt_ig, 2147483647) < COALESCE(i2_ikt_tol, 0))
) overlap
FROM combine)
SELECT LIST(kod || '×' || i2_kod, '; ')
FROM overlap
WHERE overlap
--SELECT * FROM overlap (no null in the resultset)

Run attached prepare.sql befure the select.
I'll send the FTP details for the database on request.

Thank you!

prepare.zip

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions