From: | Dmitry Lazurkin <dilaz03(at)gmail(dot)com> |
---|---|
To: | "pgsql-general(at)postgresql(dot)org" <pgsql-general(at)postgresql(dot)org> |
Subject: | Implementation of gtrgm_out for gevel |
Date: | 2017-11-23 17:52:51 |
Message-ID: | 10364b81-1625-9511-9b33-e76b7048be50@gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
Hello.
I want use gevel (http://www.sai.msu.su/~megera/wiki/Gevel) for investigation of pg_trgm gist. But for gist_print i need implement gtrgm_out for pg_trgm gist node. And i have a problem here.
-----
My version:
PostgreSQL 9.6.6 on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 5.4.0-6ubuntu1~16.04.5) 5.4.0 20160609, 64-bit
-----
Function:
Datum
gtrgm_out(PG_FUNCTION_ARGS)
{
GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0); /* I think entry is pointer to bad memory */
char *result;
char buf[1024];
if (entry->leafkey) /* Why leafkey is always true and has strange value? */
{
/* This is from gtrgm_compress */
/* text *val = DatumGetTextPP(entry->key); <-- Segfault here */
/* result = strndup(VARDATA_ANY(val), VARSIZE_ANY_EXHDR(val)); */
sprintf(buf, "leafkey %c", entry->leafkey);
}
else
{
sprintf(buf, "leafkey %c", entry->leafkey);
}
result = pstrdup(buf);
PG_RETURN_CSTRING(result);
}
-----
Call gtrgm_out:
select * from gist_print('test1_trgm') as t(level int, valid bool, a gtrgm);
level | valid | a
-------+-------+--------------
1 | t | leafkey \x7F
2 | t | leafkey \x7F
...
2 | t | leafkey v
...
2 | t | leafkey \x7F
...
2 | t | leafkey v
2 | t | leafkey \x7F
...
Can anyone give me some advice?
Thanks.
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2017-11-23 18:58:14 | Re: Implementation of gtrgm_out for gevel |
Previous Message | Rakesh Kumar | 2017-11-23 13:35:25 | Re: [GENERAL] Date Time data types |