diff --git a/src/hnswbuild.c b/src/hnswbuild.c index 727eec3..8bd0b4a 100644 --- a/src/hnswbuild.c +++ b/src/hnswbuild.c @@ -192,7 +192,9 @@ CreateGraphPages(HnswBuildState * buildstate) /* Initial size check */ if (etupSize > HNSW_TUPLE_ALLOC_SIZE) - elog(ERROR, "index tuple too large"); + ereport(ERROR, + (errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED), + errmsg("index tuple too large"))); HnswSetElementTuple(base, etup, element); @@ -696,17 +698,25 @@ InitBuildState(HnswBuildState * buildstate, Relation heap, Relation index, Index /* Disallow varbit since require fixed dimensions */ if (TupleDescAttr(index->rd_att, 0)->atttypid == VARBITOID) - elog(ERROR, "type not supported for hnsw index"); + ereport(ERROR, + (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), + errmsg("type not supported for hnsw index"))); /* Require column to have dimensions to be indexed */ if (buildstate->dimensions < 0) - elog(ERROR, "column does not have dimensions"); + ereport(ERROR, + (errcode(ERRCODE_INVALID_PARAMETER_VALUE), + errmsg("column does not have dimensions"))); if (buildstate->dimensions > buildstate->typeInfo->maxDimensions) - elog(ERROR, "column cannot have more than %d dimensions for hnsw index", buildstate->typeInfo->maxDimensions); + ereport(ERROR, + (errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED), + errmsg("column cannot have more than %d dimensions for hnsw index", buildstate->typeInfo->maxDimensions))); if (buildstate->efConstruction < 2 * buildstate->m) - elog(ERROR, "ef_construction must be greater than or equal to 2 * m"); + ereport(ERROR, + (errcode(ERRCODE_INVALID_PARAMETER_VALUE), + errmsg("ef_construction must be greater than or equal to 2 * m"))); buildstate->reltuples = 0; buildstate->indtuples = 0; diff --git a/src/hnswutils.c b/src/hnswutils.c index 446a8a1..53e3096 100644 --- a/src/hnswutils.c +++ b/src/hnswutils.c @@ -1369,7 +1369,9 @@ SparsevecCheckValue(Pointer v) SparseVector *vec = (SparseVector *) v; if (vec->nnz > HNSW_MAX_NNZ) - elog(ERROR, "sparsevec cannot have more than %d non-zero elements for hnsw index", HNSW_MAX_NNZ); + ereport(ERROR, + (errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED), + errmsg("sparsevec cannot have more than %d non-zero elements for hnsw index", HNSW_MAX_NNZ))); } /* diff --git a/src/ivfbuild.c b/src/ivfbuild.c index 3c52278..5333588 100644 --- a/src/ivfbuild.c +++ b/src/ivfbuild.c @@ -335,14 +335,20 @@ InitBuildState(IvfflatBuildState * buildstate, Relation heap, Relation index, In /* Disallow varbit since require fixed dimensions */ if (TupleDescAttr(index->rd_att, 0)->atttypid == VARBITOID) - elog(ERROR, "type not supported for ivfflat index"); + ereport(ERROR, + (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), + errmsg("type not supported for ivfflat index"))); /* Require column to have dimensions to be indexed */ if (buildstate->dimensions < 0) - elog(ERROR, "column does not have dimensions"); + ereport(ERROR, + (errcode(ERRCODE_INVALID_PARAMETER_VALUE), + errmsg("column does not have dimensions"))); if (buildstate->dimensions > buildstate->typeInfo->maxDimensions) - elog(ERROR, "column cannot have more than %d dimensions for ivfflat index", buildstate->typeInfo->maxDimensions); + ereport(ERROR, + (errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED), + errmsg("column cannot have more than %d dimensions for ivfflat index", buildstate->typeInfo->maxDimensions))); buildstate->reltuples = 0; buildstate->indtuples = 0; @@ -355,7 +361,9 @@ InitBuildState(IvfflatBuildState * buildstate, Relation heap, Relation index, In /* Require more than one dimension for spherical k-means */ if (buildstate->kmeansnormprocinfo != NULL && buildstate->dimensions == 1) - elog(ERROR, "dimensions must be greater than one for this opclass"); + ereport(ERROR, + (errcode(ERRCODE_INVALID_PARAMETER_VALUE), + errmsg("dimensions must be greater than one for this opclass"))); /* Create tuple description for sorting */ buildstate->tupdesc = CreateTemplateTupleDesc(3);