Мой вопрос похож на эту ссылку . У меня есть таблица с миллионами строк, которую я должен поместить в один массив, отсортировать ее и получить минимальное и максимальное значение и вернуть результат в виде текста.
например. Имя таблицы: Образец, Имя столбца: id
Идентификатор столбца содержит миллионы записей, а тип данных может быть целым числом, float et c.,
Я должен ВОЗВРАТИТЬ результат как min -max (максимальное значение разделителя минимального значения, например 1-> 5)
Любая помощь приветствуется. Заранее спасибо.
#ifdef PG_MODULE_MAGIC
PG_MODULE_MAGIC;
#endif
/* Add a prototype marked PGDLLEXPORT */
PGDLLEXPORT Datum make_array(PG_FUNCTION_ARGS);
PG_FUNCTION_INFO_V1(make_array);
Datum
make_array(PG_FUNCTION_ARGS)
{
ArrayType* result;
ArrayType* result1;
Oid element_type = get_fn_expr_argtype(fcinfo->flinfo, 0);
Datum element;
bool isnull;
int16 typlen;
bool typbyval;
char typalign;
int ndims;
int dims[MAXDIM];
int lbs[MAXDIM];
if (!OidIsValid(element_type))
elog(ERROR, "could not determine data type of input");
/* get the provided element, being careful in case it's NULL */
isnull = PG_ARGISNULL(0);
if (isnull)
element = (Datum)0;
else
element = PG_GETARG_DATUM(0);
/* we have one dimension */
ndims = 1;
/* and one element */
dims[0] = 1;
/* and lower bound is 1 */
lbs[0] = 1;
/* get required info about the element type */
get_typlenbyvalalign(element_type, &typlen, &typbyval, &typalign);
/* now build the array */
result = construct_md_array(&element, &isnull, ndims, dims, lbs,
element_type, typlen, typbyval, typalign);
PG_RETURN_ARRAYTYPE_P(result);
}
Результат после компиляции этого кода будет следующим:
введите описание изображения здесь
Я новичок ie в создании Postgres C расширений.