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 по дате отправления: