~ubuntu-branches/ubuntu/trusty/postgresql-8.4/trusty

« back to all changes in this revision

Viewing changes to contrib/ltree/ltree.h

  • Committer: Bazaar Package Importer
  • Author(s): Martin Pitt
  • Date: 2009-07-11 16:59:35 UTC
  • mfrom: (5.1.1 karmic)
  • Revision ID: james.westby@ubuntu.com-20090711165935-jfwin6gfrxf0gfsi
Tags: 8.4.0-2
* debian/libpq-dev.install: Ship catalog/genbki.h. (Closes: #536139)
* debian/rules: Drop --enable-cassert for final release.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/* $PostgreSQL: pgsql/contrib/ltree/ltree.h,v 1.21 2008/06/30 18:30:48 teodor Exp $ */
 
1
/* $PostgreSQL: pgsql/contrib/ltree/ltree.h,v 1.22 2009/06/11 14:48:51 momjian Exp $ */
2
2
 
3
3
#ifndef __LTREE_H__
4
4
#define __LTREE_H__
11
11
{
12
12
        uint16          len;
13
13
        char            name[1];
14
 
}       ltree_level;
 
14
} ltree_level;
15
15
 
16
16
#define LEVEL_HDRSIZE   (offsetof(ltree_level,name))
17
17
#define LEVEL_NEXT(x)   ( (ltree_level*)( ((char*)(x)) + MAXALIGN(((ltree_level*)(x))->len + LEVEL_HDRSIZE) ) )
21
21
        int32           vl_len_;                /* varlena header (do not touch directly!) */
22
22
        uint16          numlevel;
23
23
        char            data[1];
24
 
}       ltree;
 
24
} ltree;
25
25
 
26
26
#define LTREE_HDRSIZE   MAXALIGN( offsetof(ltree, data) )
27
27
#define LTREE_FIRST(x)  ( (ltree_level*)( ((char*)(x))+LTREE_HDRSIZE ) )
35
35
        uint16          len;
36
36
        uint8           flag;
37
37
        char            name[1];
38
 
}       lquery_variant;
 
38
} lquery_variant;
39
39
 
40
40
#define LVAR_HDRSIZE   MAXALIGN(offsetof(lquery_variant, name))
41
41
#define LVAR_NEXT(x)    ( (lquery_variant*)( ((char*)(x)) + MAXALIGN(((lquery_variant*)(x))->len) + LVAR_HDRSIZE ) )
52
52
        uint16          low;
53
53
        uint16          high;
54
54
        char            variants[1];
55
 
}       lquery_level;
 
55
} lquery_level;
56
56
 
57
57
#define LQL_HDRSIZE MAXALIGN( offsetof(lquery_level,variants) )
58
58
#define LQL_NEXT(x) ( (lquery_level*)( ((char*)(x)) + MAXALIGN(((lquery_level*)(x))->totallen) ) )
73
73
        uint16          firstgood;
74
74
        uint16          flag;
75
75
        char            data[1];
76
 
}       lquery;
 
76
} lquery;
77
77
 
78
78
#define LQUERY_HDRSIZE   MAXALIGN( offsetof(lquery, data) )
79
79
#define LQUERY_FIRST(x)   ( (lquery_level*)( ((char*)(x))+LQUERY_HDRSIZE ) )
80
80
 
81
81
#define LQUERY_HASNOT           0x01
82
82
 
83
 
#define ISALNUM(x)      ( t_isalpha(x) || t_isdigit(x)  || ( pg_mblen(x) == 1 && t_iseq((x), '_') ) )
 
83
#define ISALNUM(x)      ( t_isalpha(x) || t_isdigit(x)  || ( pg_mblen(x) == 1 && t_iseq((x), '_') ) )
84
84
 
85
85
/* full text query */
86
86
 
97
97
        /* user-friendly value */
98
98
        uint8           length;
99
99
        uint16          distance;
100
 
}       ITEM;
 
100
} ITEM;
101
101
 
102
102
/*
103
103
 *Storage:
108
108
        int32           vl_len_;                /* varlena header (do not touch directly!) */
109
109
        int4            size;
110
110
        char            data[1];
111
 
}       ltxtquery;
 
111
} ltxtquery;
112
112
 
113
113
#define HDRSIZEQT               MAXALIGN(VARHDRSZ + sizeof(int4))
114
114
#define COMPUTESIZE(size,lenofoperand)  ( HDRSIZEQT + (size) * sizeof(ITEM) + (lenofoperand) )
153
153
/* Util function */
154
154
Datum           ltree_in(PG_FUNCTION_ARGS);
155
155
 
156
 
bool ltree_execute(ITEM * curitem, void *checkval,
157
 
                          bool calcnot, bool (*chkcond) (void *checkval, ITEM * val));
 
156
bool ltree_execute(ITEM *curitem, void *checkval,
 
157
                          bool calcnot, bool (*chkcond) (void *checkval, ITEM *val));
158
158
 
159
 
int                     ltree_compare(const ltree * a, const ltree * b);
160
 
bool            inner_isparent(const ltree * c, const ltree * p);
161
 
bool            compare_subnode(ltree_level * t, char *q, int len,
162
 
                                        int (*cmpptr) (const char *, const char *, size_t), bool anyend);
163
 
ltree      *lca_inner(ltree ** a, int len);
164
 
int             ltree_strncasecmp(const char *a, const char *b, size_t s);
 
159
int                     ltree_compare(const ltree *a, const ltree *b);
 
160
bool            inner_isparent(const ltree *c, const ltree *p);
 
161
bool compare_subnode(ltree_level *t, char *q, int len,
 
162
                        int (*cmpptr) (const char *, const char *, size_t), bool anyend);
 
163
ltree      *lca_inner(ltree **a, int len);
 
164
int                     ltree_strncasecmp(const char *a, const char *b, size_t s);
165
165
 
166
166
#define PG_GETARG_LTREE(x)      ((ltree*)DatumGetPointer(PG_DETOAST_DATUM(PG_GETARG_DATUM(x))))
167
167
#define PG_GETARG_LTREE_COPY(x) ((ltree*)DatumGetPointer(PG_DETOAST_DATUM_COPY(PG_GETARG_DATUM(x))))
207
207
        int32           vl_len_;                /* varlena header (do not touch directly!) */
208
208
        uint32          flag;
209
209
        char            data[1];
210
 
}       ltree_gist;
 
210
} ltree_gist;
211
211
 
212
212
#define LTG_ONENODE 0x01
213
213
#define LTG_ALLTRUE 0x02