-- complain if script is sourced in psql, rather than via CREATE EXTENSION
\echo Use "CREATE EXTENSION hashtest" to load this file. \quit
-CREATE FUNCTION test_dynahash()
+CREATE FUNCTION chash_insert_test()
RETURNS void
-AS 'MODULE_PATHNAME', 'test_dynahash'
+AS 'MODULE_PATHNAME', 'chash_insert_test'
+LANGUAGE C;
+
+CREATE FUNCTION chash_search_test()
+RETURNS void
+AS 'MODULE_PATHNAME', 'chash_search_test'
LANGUAGE C;
-CREATE FUNCTION test_chash()
+CREATE FUNCTION chash_delete_test()
RETURNS void
-AS 'MODULE_PATHNAME', 'test_chash'
+AS 'MODULE_PATHNAME', 'chash_delete_test'
+LANGUAGE C;
+
+CREATE FUNCTION test_dynahash()
+RETURNS void
+AS 'MODULE_PATHNAME', 'test_dynahash'
LANGUAGE C;
PG_MODULE_MAGIC;
void _PG_init(void);
+Datum chash_insert_test(PG_FUNCTION_ARGS);
+Datum chash_search_test(PG_FUNCTION_ARGS);
+Datum chash_delete_test(PG_FUNCTION_ARGS);
Datum test_dynahash(PG_FUNCTION_ARGS);
-Datum test_chash(PG_FUNCTION_ARGS);
static void hashtest_shmem_startup(void);
+PG_FUNCTION_INFO_V1(chash_insert_test);
+PG_FUNCTION_INFO_V1(chash_search_test);
+PG_FUNCTION_INFO_V1(chash_delete_test);
PG_FUNCTION_INFO_V1(test_dynahash);
-PG_FUNCTION_INFO_V1(test_chash);
typedef struct
{
}
Datum
-test_chash(PG_FUNCTION_ARGS)
+chash_insert_test(PG_FUNCTION_ARGS)
{
uint32 i;
hentry e;
- instr_time t0,
- t1,
- t2,
- t3;
-
- INSTR_TIME_SET_CURRENT(t0);
for (i = 0; i < 1000000; ++i)
{
elog(LOG, "insert %u: worked twice", i);
}
- INSTR_TIME_SET_CURRENT(t1);
+ PG_RETURN_VOID();
+}
+
+Datum
+chash_search_test(PG_FUNCTION_ARGS)
+{
+ uint32 i;
+ hentry e;
for (i = 0; i < 1000000; ++i)
{
elog(LOG, "search %u: found %u", i, e.val);
}
- INSTR_TIME_SET_CURRENT(t2);
+ PG_RETURN_VOID();
+}
+
+Datum
+chash_delete_test(PG_FUNCTION_ARGS)
+{
+ uint32 i;
+ hentry e;
for (i = 0; i < 1000000; ++i)
{
elog(LOG, "delete %u: found twice", i);
}
- INSTR_TIME_SET_CURRENT(t3);
- INSTR_TIME_SUBTRACT(t3, t2);
- INSTR_TIME_SUBTRACT(t2, t1);
- INSTR_TIME_SUBTRACT(t1, t0);
-
- elog(LOG, "inserts: %lu us; searches: %lu us; deletes: %lu us",
- (unsigned long) INSTR_TIME_GET_MICROSEC(t1),
- (unsigned long) INSTR_TIME_GET_MICROSEC(t2),
- (unsigned long) INSTR_TIME_GET_MICROSEC(t3));
-
PG_RETURN_VOID();
}