/
githubmirror
/
postgres
Обзор
Документация
Войти
/
githubmirror
/
postgres
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
src/test/modules/test_cplusplusext/test_cplusplusext.cpp
72 строки
2 KB
Peter Eisentraut
Change copyObject() to use typeof_unqual
13 мар 2026, 09:06
13 мар 2026, 09:06
59292f7
Код
Авторство
О чём код?
/*-------------------------------------------------------------------------- * * test_cplusplusext.cpp * Test that PostgreSQL headers compile with a C++ compiler. * * This file is compiled with a C++ compiler to verify that PostgreSQL * headers remain compatible with C++ extensions. * * Copyright (c) 2025-2026, PostgreSQL Global Development Group * * IDENTIFICATION * src/test/modules/test_cplusplusext/test_cplusplusext.cpp * * ------------------------------------------------------------------------- */ extern "C" { #include "postgres.h" #include "fmgr.h" #include "nodes/pg_list.h" #include "nodes/primnodes.h" PG_MODULE_MAGIC; PG_FUNCTION_INFO_V1(test_cplusplus_add); } StaticAssertDecl(sizeof(int32) == 4, "int32 should be 4 bytes"); /* * Simple function that returns the sum of two integers. This verifies that * C++ extension modules can be loaded and called correctly at runtime. */ extern "C" Datum test_cplusplus_add(PG_FUNCTION_ARGS) { int32 a = PG_GETARG_INT32(0); int32 b = PG_GETARG_INT32(1); RangeTblRef *node = makeNode(RangeTblRef); const RangeTblRef *nodec = node; RangeTblRef *copy = copyObject(nodec); List *list = list_make1(node); foreach_ptr(RangeTblRef, rtr, list) { (void) rtr; } foreach_node(RangeTblRef, rtr, list) { (void) rtr; } StaticAssertStmt(sizeof(int32) == 4, "int32 should be 4 bytes"); (void) StaticAssertExpr(sizeof(int64) == 8, "int64 should be 8 bytes"); list_free(list); pfree(node); pfree(copy); switch (a) { case 1: elog(DEBUG1, "1"); pg_fallthrough; case 2: elog(DEBUG1, "2"); break; } PG_RETURN_INT32(a + b); }