/
vshmidt
/
pgvector
Обзор
Документация
Войти
/
vshmidt
/
pgvector
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
src/sparsevec.h
40 строк
1 KB
Andrew Kane
Removed unneeded headers [skip ci]
26 апр 2024, 03:52
26 апр 2024, 03:52
6247b30
Код
Авторство
О чём код?
#ifndef SPARSEVEC_H #define SPARSEVEC_H #define SPARSEVEC_MAX_DIM 1000000000 #define SPARSEVEC_MAX_NNZ 16000 #define DatumGetSparseVector(x) ((SparseVector *) PG_DETOAST_DATUM(x)) #define PG_GETARG_SPARSEVEC_P(x) DatumGetSparseVector(PG_GETARG_DATUM(x)) #define PG_RETURN_SPARSEVEC_P(x) PG_RETURN_POINTER(x) /* * Indices use 0-based numbering for the on-disk (and binary) format (consistent with C) * and are always sorted. Values come after indices. */ typedef struct SparseVector { int32 vl_len_; /* varlena header (do not touch directly!) */ int32 dim; /* number of dimensions */ int32 nnz; /* number of non-zero elements */ int32 unused; /* reserved for future use, always zero */ int32 indices[FLEXIBLE_ARRAY_MEMBER]; } SparseVector; /* Use functions instead of macros to avoid double evaluation */ static inline Size SPARSEVEC_SIZE(int nnz) { return offsetof(SparseVector, indices) + (nnz * sizeof(int32)) + (nnz * sizeof(float)); } static inline float * SPARSEVEC_VALUES(SparseVector * x) { return (float *) (((char *) x) + offsetof(SparseVector, indices) + (x->nnz * sizeof(int32))); } SparseVector *InitSparseVector(int dim, int nnz); #endif