Re: contrib/ltree patches

From: Teodor Sigaev <teodor(at)stack(dot)net>
To: Bruce Momjian <pgman(at)candle(dot)pha(dot)pa(dot)us>
Cc: Dan Langille <dan(at)langille(dot)org>, pgsql-hackers(at)postgresql(dot)org, oleg(at)sai(dot)msu(dot)su
Subject: Re: contrib/ltree patches
Date: 2002-12-05 09:04:16
Message-ID: 3DEF1690.2090403@stack.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Don't do it! It's a wrong patch. Dan will prepare correct patch (with other
changes).

Bruce Momjian wrote:
> Dan, is this ready to be applied to CVS?
>
> ---------------------------------------------------------------------------
>
> Dan Langille wrote:
>
>>I have been looking at contrib/ltree in the PostgreSQL repository. I've
>>modified the code to allow / as a node delimiter instead of . which is the
>>default.
>>
>>Below are the patches to make this change. I have also moved the
>>delimiter to a DEFINE so that other customizations are easily done. This
>>is a work in progress.
>>
>>My thanks to DarbyD for assistance.
>>
>>cheers
>>
>>
>>--- ltree.h.orig Tue Nov 26 18:57:58 2002
>>+++ ltree.h Tue Nov 26 20:16:40 2002
>>@@ -6,6 +6,8 @@
>> #include "utils/palloc.h"
>> #include "utils/builtins.h"
>>
>>+#define NODE_DELIMITER '/'
>>+
>> typedef struct
>> {
>> uint8 len;
>>@@ -88,7 +90,7 @@
>> #ifndef abs
>> #define abs(a) ((a) < (0) ? -(a) : (a))
>> #endif
>>-#define ISALNUM(x) ( isalnum((unsigned int)(x)) || (x) == '_' )
>>+#define ISALNUM(x) ( isalnum((unsigned int)(x)) || (x) == '_' || (x) == NODE_DELIMITER )
>>
>> /* full text query */
>>
>>--- ltree_io.c Tue Nov 26 20:23:45 2002
>>+++ ltree_io.c.orig Tue Nov 26 18:57:26 2002
>>@@ -48,7 +48,7 @@
>> ptr = buf;
>> while (*ptr)
>> {
>>- if (*ptr == NODE_DELIMITER)
>>+ if (*ptr == '.')
>> num++;
>> ptr++;
>> }
>>@@ -69,7 +69,7 @@
>> }
>> else if (state == LTPRS_WAITDELIM)
>> {
>>- if (*ptr == NODE_DELIMITER)
>>+ if (*ptr == '.')
>> {
>> lptr->len = ptr - lptr->start;
>> if (lptr->len > 255)
>>@@ -131,7 +131,7 @@
>> {
>> if (i != 0)
>> {
>>- *ptr = NODE_DELIMITER;
>>+ *ptr = '.';
>> ptr++;
>> }
>> memcpy(ptr, curlevel->name, curlevel->len);
>>@@ -181,7 +181,7 @@
>> ptr = buf;
>> while (*ptr)
>> {
>>- if (*ptr == NODE_DELIMITER)
>>+ if (*ptr == '.')
>> num++;
>> else if (*ptr == '|')
>> numOR++;
>>@@ -265,7 +265,7 @@
>> lptr->len, (int) (lptr->start - buf));
>> state = LQPRS_WAITVAR;
>> }
>>- else if (*ptr == NODE_DELIMITER)
>>+ else if (*ptr == '.')
>> {
>> lptr->len = ptr - lptr->start -
>> ((lptr->flag & LVAR_SUBLEXEM) ? 1 : 0) -
>>@@ -289,7 +289,7 @@
>> {
>> if (*ptr == '{')
>> state = LQPRS_WAITFNUM;
>>- else if (*ptr == NODE_DELIMITER)
>>+ else if (*ptr == '.')
>> {
>> curqlevel->low = 0;
>> curqlevel->high = 0xffff;
>>@@ -347,7 +347,7 @@
>> }
>> else if (state == LQPRS_WAITEND)
>> {
>>- if (*ptr == NODE_DELIMITER)
>>+ if (*ptr == '.')
>> {
>> state = LQPRS_WAITLEVEL;
>> curqlevel = NEXTLEV(curqlevel);
>>@@ -471,7 +471,7 @@
>> {
>> if (i != 0)
>> {
>>- *ptr = NODE_DELIMITER;
>>+ *ptr = '.';
>> ptr++;
>> }
>> if (curqlevel->numvar)
>>
>>
>>---------------------------(end of broadcast)---------------------------
>>TIP 4: Don't 'kill -9' the postmaster
>>
>
>

--
Teodor Sigaev
teodor(at)stack(dot)net

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Kris Jurka 2002-12-05 09:49:59 GEQO Triggers Server Crash
Previous Message Dave Page 2002-12-05 08:28:29 Re: [GENERAL] PostgreSQL Global Development Group