We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
varchar型カラムのソートを試したところ、OpenCLコードのコンパイルエラーとなりました。
ERROR: PG-Strom: OpenCL execution error (build program failure) #ifndef PG_BYTEA_TYPE_DEFINED STROMCL_VARLENA_TYPE_TEMPLATE(bytea) #endif #ifndef PG_VARCHAR_TYPE_DEFINED STROMCL_VARLENA_TYPE_TEMPLATE(varchar) #endif #ifndef PG_INT4_TYPE_DEFINED STROMCL_SIMPLE_TYPE_TEMPLATE(int4,cl_int) #endif #ifndef PG_TEXT_TYPE_DEFINED STROMCL_VARLENA_TYPE_TEMPLATE(text) #endif #define KPARAM_0 pg_bytea_param(kparams,errcode,0) #define KPARAM_1 pg_bytea_param(kparams,errcode,1) static cl_int gpusort_comp(__private int *errcode, __global kern_column_store *kcs_x, __global kern_toastbuf *ktoast_x, __private cl_int x_index, __global kern_column_store *kcs_y, __global kern_toastbuf *ktoast_y, __private cl_int y_index) { pg_varchar_t keyval_x1; pg_varchar_t keyval_y1; pg_int4_t comp; keyval_x1 =pg_varchar_vref(kcs_x,ktoast_x,errcode,0,x_index); keyval_y1 =pg_varchar_vref(kcs_y,ktoast_y,errcode,0,y_index); if (!keyval_x1.isnull && !keyval_y1.isnull) { comp = pgfn_text_cmp(errcode, keyval_x1, keyval_y1); if (comp.value != 0) return comp.value; } else if (keyval_x1.isnull && !keyval_y1.isnull) return 1; else if (!keyval_x1.isnull && keyval_y1.isnull) return -1; return 0; } DETAIL: Compilation started 1:2352:35: error: passing 'pg_varchar_t' to parameter of incompatible type 'pg_text_t' 1:2307:52: note: passing argument to parameter 'arg1' here Compilation failed
SELECT * FROM varchar_test WHERE str < '!9' ORDER BY str;
Table "public.varchar_test" Column | Type | Modifiers --------+-----------------------+----------- id | integer | len | smallint | str | character varying(64) |
The text was updated successfully, but these errors were encountered:
PostgreSQLがtextやvarcharなど可変長データ型を同じデータフォーマットを持つ varlena型変数として扱っており、内部関数(テキスト比較など)もそれを前提として 作られている。
が、PG-Stromは個別にデータ型を定義したために OpenCL コンパイラは別々の 非互換なデータ型であると認識し、引数の型チェックで弾かれた。 最新版では、全ての varlena データ型は pg_varlena_t の別名であるとして修正。
Sorry, something went wrong.
最新版で再現確認を行ったところ、コンパイルエラーは発生しなくなりました。 修正されたものと判断します。
No branches or pull requests
varchar型カラムのソートを試したところ、OpenCLコードのコンパイルエラーとなりました。
The text was updated successfully, but these errors were encountered: