Re: making tsearch2 dictionaries

From: Teodor Sigaev <teodor(at)sigaev(dot)ru>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: Ben <bench(at)silentmedia(dot)com>, pgsql-general(at)postgresql(dot)org
Subject: Re: making tsearch2 dictionaries
Date: 2004-02-16 16:09:18
Message-ID: 4030EB2E.7080608@sigaev.ru
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Excuse me, but I was too brief.
I mean your lexize method of dictionary should return pointer to array with 3
elements:
first should points to "one" C-string, second - to "hundred" C-string and 3rd is
NULL.
Array and C-strings should be palloc'ed in short-lived context, because it's
lives during parse text only.

Tom Lane wrote:
> Ben <bench(at)silentmedia(dot)com> writes:
>
>>Okay, so I was actually able to answer this question on my own, in a
>>manner of speaking. It seems the way to do this is to merely return a
>>larger char** array, with one element for each word. But I was having
>>trouble with postgres crashing, because (I think) it tries to free each
>>element independently before using all of them. I had set each element
>>to a different null-terminated chunk of the same palloc'd memory
>>segment. Having never written C stored procs before, I take it that's
>>bad practice?
>
>
> Given Teodor's response, I think the issue is probably that you were
> palloc'ing in too short-lived a context. But whatever the problem is,
> you'll narrow it down a lot faster if you build with --enable-cassert.
> I wouldn't ever recommend trying to debug C functions without that.
>
> regards, tom lane
>
> ---------------------------(end of broadcast)---------------------------
> TIP 5: Have you checked our extensive FAQ?
>
> http://www.postgresql.org/docs/faqs/FAQ.html

--
Teodor Sigaev E-mail: teodor(at)sigaev(dot)ru

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Hiro 2004-02-16 16:17:20 create ONE database beyond between 2 server
Previous Message Bruce Momjian 2004-02-16 15:57:16 Re: B-Tree in PostgreSQL