heavyai / heavydb

HeavyDB (formerly OmniSciDB)
https://heavy.ai
Apache License 2.0
2.96k stars 448 forks source link

[GPU Logic Bug] SELECT /*+ keep_result */ DISTINCT <column> FROM <table> GROUP BY <column> LIMIT <number> Brings Errors #828

Open qwebug opened 5 months ago

qwebug commented 5 months ago

Describe:

SELECT /+ keep_result / DISTINCT \ FROM \

GROUP BY \ LIMIT \ brings different results, when using CPU-only configurations and GPU-used configurations.

SQL with CPU-only Config:

CREATE TABLE t0(c0 TEXT);
INSERT INTO t0(c0) VALUES('AI');
INSERT INTO t0(c0) VALUES('ai');
INSERT INTO t0(c0) VALUES('');
ALTER SESSION SET EXECUTOR_DEVICE='CPU';
SELECT /*+ keep_result */ DISTINCT t0.c0 FROM t0 ORDER BY t0.c0 DESC LIMIT 1;

Result:

c0
NULL

SQL with GPU-used Config:

ALTER SESSION SET EXECUTOR_DEVICE='GPU';
SELECT /*+ keep_result */ DISTINCT t0.c0 FROM t0 ORDER BY t0.c0 DESC LIMIT 1;

Result:

c0
AI
ai
NULL

Environment:

Docker Deployment

https://hub.docker.com/layers/heavyai/heavyai-ee-cuda/latest/images/sha256-5af3ad3a00cbc5ce09c299b8b81cda96521a27373dbb1e59209c02358cfd9b1f?context=explore

Docker DIGEST: sha256:5af3ad3a00cbc5ce09c299b8b81cda96521a27373dbb1e59209c02358cfd9b1f

HeavyDB Version: 7.1.0-20230821-eae9ec17da

HeavyDB license: Free Edition

qwebug commented 5 months ago

This problem came up at HeavyDB Version: 7.1.0-20230821-eae9ec17da (Docker: https://hub.docker.com/layers/heavyai/heavyai-ee-cuda/v7.1.0/images/sha256-5af3ad3a00cbc5ce09c299b8b81cda96521a27373dbb1e59209c02358cfd9b1f?context=explore ) . And it has been fixed at HeavyDB Version: 8.0.2 (Docker: https://hub.docker.com/layers/heavyai/heavyai-ee-cuda/v8.0.2/images/sha256-e343a97e342db3ba4e0ca069d567b76826dc7f6f95d07ee2af611f218194d28b?context=explore), after my verification. Thanks to the developers for their contributions.

Carmelo006 commented 1 month ago

@qwebug HeavyDB v7.2.5 has fixed this issue, after my verification.