Re: contrib/ltree patches

Поиск
Список
Период
Сортировка
От Teodor Sigaev
Тема Re: contrib/ltree patches
Дата
Msg-id 3DEF1690.2090403@stack.net
обсуждение исходный текст
Ответ на Re: contrib/ltree patches  (Bruce Momjian <pgman@candle.pha.pa.us>)
Список 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@stack.net




В списке pgsql-hackers по дате отправления:

Предыдущее
От: "Dave Page"
Дата:
Сообщение: Re: [GENERAL] PostgreSQL Global Development Group
Следующее
От: Tomas Berndtsson
Дата:
Сообщение: Re: big text field -> message type 0x44