Re: contrib/ltree patches

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


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
>

--
Bruce Momjian | http://candle.pha.pa.us
pgman(at)candle(dot)pha(dot)pa(dot)us | (610) 359-1001
+ If your life is a hard drive, | 13 Roberts Road
+ Christ can be your backup. | Newtown Square, Pennsylvania 19073

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Bruce Momjian 2002-12-05 06:09:27 Re: Alter domain
Previous Message Lamar Owen 2002-12-05 05:35:02 7.3 RPMS.