heterodb/pg-strom

Interval型同士の減算で interval out of range発生

Closed this issue · 2 comments

interval同士の減算を実行するとエラー発生。加算は問題なし

postgres=# SELECT id, iv2 - iv1 
  FROM rt_time
 WHERE id > 0;
ERROR:  xpu_timelib.cu:2842  interval out of range
HINT:  device at GPU-0, function at pgfn_interval_mi

EXPAIN結果

                                 QUERY PLAN                                 
----------------------------------------------------------------------------
 Custom Scan (GpuScan) on rt_time  (cost=100.00..142.31 rows=2000 width=20)
   GPU Projection: id, (iv2 - iv1)
   GPU Scan Quals: (id > 0) [rows: 2000 -> 2000]
(3 rows)

全体クエリ

DROP TABLE IF EXISTS rt_time;
CREATE TABLE rt_time (
  id   int,
  iv1    interval,
  iv2    interval
);
SELECT pg_strom.random_setseed(1000)
INSERT INTO rt_time (
  SELECT x
  ,pgstrom.random_timestamp(0.5) - pgstrom.random_timestamp(0.5)
  ,pgstrom.random_timestamp(0.5) - pgstrom.random_timestamp(0.5)
    FROM generate_series(1,2000) x);

set enable_seqscan=off;
set pg_strom.enabled=on;
EXPLAIN SELECT id, iv2 - iv1
  FROM rt_time
 WHERE id > 0;

cd57adc3f9dd498facfeb4b35944a6841558a323 で修正しました。

GPU側のinterval_mi()を実装した際、間違ってinterval_pl()の範囲チェックをそのままコピペしちゃったぽいですね。

解消確認しました。ご対応ありがとうございました。