Added SPARSEVEC_MAX_NNZ

This commit is contained in:
Andrew Kane
2024-04-03 21:05:35 -07:00
parent 35d0fe88b9
commit fc1aeee62c
2 changed files with 11 additions and 0 deletions

View File

@@ -70,6 +70,11 @@ CheckNnz(int nnz, int dim)
(errcode(ERRCODE_DATA_EXCEPTION),
errmsg("sparsevec must have at least one element")));
if (nnz > SPARSEVEC_MAX_NNZ)
ereport(ERROR,
(errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED),
errmsg("sparsevec cannot have more than %d non-zero elements", SPARSEVEC_MAX_NNZ)));
if (nnz > dim)
ereport(ERROR,
(errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED),
@@ -190,6 +195,11 @@ sparsevec_in(PG_FUNCTION_ARGS)
pt++;
}
if (maxNnz > SPARSEVEC_MAX_NNZ)
ereport(ERROR,
(errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED),
errmsg("sparsevec cannot have more than %d non-zero elements", SPARSEVEC_MAX_NNZ)));
indices = palloc(maxNnz * sizeof(int32));
values = palloc(maxNnz * sizeof(float));

View File

@@ -2,6 +2,7 @@
#define SPARSEVEC_H
#define SPARSEVEC_MAX_DIM 100000
#define SPARSEVEC_MAX_NNZ 16000
/* Ensure values are aligned */
#define SPARSEVEC_SIZE(_nnz) (offsetof(SparseVector, indices) + MAXALIGN((_nnz) * sizeof(int32)) + (_nnz * sizeof(float)))