データ型

PG-Stromは以下のデータ型をGPUで利用する事ができます。

標準の数値データ型

SQLデータ型 内部データ形式 データ長 備考
smallint cl_short 2 bytes
integer cl_int 4 bytes
bigint cl_long 8 bytes
real cl_float 4 bytes
float cl_double 8 bytes
numeric cl_ulong 可変長 64bitの内部形式にマップ

Note

GPUがnumeric型のデータを処理する際、実装上の理由からこれを64bitの内部表現に変換して処理します。 これら内部表現への/からの変換は透過的に行われますが、例えば、桁数の大きなnumeric型のデータは表現する事ができないため、PG-StromはCPU側でのフォールバック処理を試みます。したがって、桁数の大きなnumeric型のデータをGPUに与えると却って実行速度が低下してしまう事になります。 これを避けるには、GUCパラメータpg_strom.enable_numeric_typeを使用してnumericデータ型を含む演算式をGPUで実行しないように設定します。

標準の日付時刻型

SQLデータ型 内部データ形式 データ長 備考
date DateADT 4 bytes
time TimeADT 8 bytes
timetz TimeTzADT 12 bytes
timestamp Timestamp 8 bytes
timestamptz TimestampTz 8 bytes
interval Interval 16 bytes time interval

標準の可変長データ型

SQLデータ型 内部データ形式 データ長 備考
bpchar varlena * 可変長
varchar varlena * 可変長
bytea varlena * 可変長
text varlena * 可変長

標準の雑多なデータ型

SQLデータ型 内部データ形式 データ長 備考
boolean cl_bool 1 byte
money cl_long 8 bytes
uuid pg_uuid 16 bytes
macaddr macaddr 6 bytes
inet inet_struct 7 bytes or 19 bytes
cidr inet_struct 7 bytes or 19 bytes

標準の範囲型

SQLデータ型 内部データ形式 データ長 備考
int4range __int4range 14 bytes
int8range __int8range 22 bytes
tsrange __tsrange 22 bytes
tstzrange __tstzrange 22 bytes
daterange __daterange 14 bytes

PG-Stromが追加で提供するデータ型

SQLデータ型 内部データ形式 データ長 備考
float2 half_t 2 bytes 半精度浮動小数点数
reggstore cl_uint 4 bytes gstore_fdwのregclass型。PL/CUDA関数呼出しで特別な扱い。