Commit e50f52a0 authored by Bruce Momjian's avatar Bruce Momjian

pgindent run.

parent c91ceec2
...@@ -299,11 +299,12 @@ gts_compress(PG_FUNCTION_ARGS) ...@@ -299,11 +299,12 @@ gts_compress(PG_FUNCTION_ARGS)
if (entry->leafkey) if (entry->leafkey)
{ {
TSKEY *r = (TSKEY *) palloc(sizeof(TSKEY)); TSKEY *r = (TSKEY *) palloc(sizeof(TSKEY));
retval = palloc(sizeof(GISTENTRY)); retval = palloc(sizeof(GISTENTRY));
r->lower = r->upper = *(Timestamp *) (entry->key); r->lower = r->upper = *(Timestamp *) (entry->key);
gistentryinit(*retval, PointerGetDatum(r), gistentryinit(*retval, PointerGetDatum(r),
entry->rel, entry->page, entry->rel, entry->page,
entry->offset, sizeof(TSKEY), FALSE); entry->offset, sizeof(TSKEY), FALSE);
} }
else else
retval = entry; retval = entry;
...@@ -398,8 +399,8 @@ gts_penalty(PG_FUNCTION_ARGS) ...@@ -398,8 +399,8 @@ gts_penalty(PG_FUNCTION_ARGS)
intr = DatumGetIntervalP(DirectFunctionCall2( intr = DatumGetIntervalP(DirectFunctionCall2(
timestamp_mi, timestamp_mi,
TimestampGetDatumFast(newentry->upper), TimestampGetDatumFast(newentry->upper),
TimestampGetDatumFast(origentry->upper))); TimestampGetDatumFast(origentry->upper)));
/* see interval_larger */ /* see interval_larger */
*result = Max(intr->time + intr->month * (30.0 * 86400), 0); *result = Max(intr->time + intr->month * (30.0 * 86400), 0);
...@@ -407,8 +408,8 @@ gts_penalty(PG_FUNCTION_ARGS) ...@@ -407,8 +408,8 @@ gts_penalty(PG_FUNCTION_ARGS)
intr = DatumGetIntervalP(DirectFunctionCall2( intr = DatumGetIntervalP(DirectFunctionCall2(
timestamp_mi, timestamp_mi,
TimestampGetDatumFast(origentry->lower), TimestampGetDatumFast(origentry->lower),
TimestampGetDatumFast(newentry->lower))); TimestampGetDatumFast(newentry->lower)));
/* see interval_larger */ /* see interval_larger */
*result += Max(intr->time + intr->month * (30.0 * 86400), 0); *result += Max(intr->time + intr->month * (30.0 * 86400), 0);
...@@ -473,8 +474,8 @@ tskey_cmp(const void *a, const void *b) ...@@ -473,8 +474,8 @@ tskey_cmp(const void *a, const void *b)
return DatumGetInt32( return DatumGetInt32(
DirectFunctionCall2( DirectFunctionCall2(
timestamp_cmp, timestamp_cmp,
TimestampGetDatumFast(((TSKEY *) (((RIX *) a)->r))->lower), TimestampGetDatumFast(((TSKEY *) (((RIX *) a)->r))->lower),
TimestampGetDatumFast(((TSKEY *) (((RIX *) b)->r))->lower) TimestampGetDatumFast(((TSKEY *) (((RIX *) b)->r))->lower)
) )
); );
} }
......
This diff is collapsed.
...@@ -309,7 +309,7 @@ do_create(PGconn *conn, char *table, dbhead * dbh) ...@@ -309,7 +309,7 @@ do_create(PGconn *conn, char *table, dbhead * dbh)
{ {
strcat(query, " varchar"); strcat(query, " varchar");
snprintf(t, 20, "(%d)", snprintf(t, 20, "(%d)",
dbh->db_fields[i].db_flen); dbh->db_fields[i].db_flen);
strcat(query, t); strcat(query, t);
} }
else else
...@@ -468,8 +468,8 @@ do_inserts(PGconn *conn, char *table, dbhead * dbh) ...@@ -468,8 +468,8 @@ do_inserts(PGconn *conn, char *table, dbhead * dbh)
if ((strlen(foo) == 8) && isinteger(foo)) if ((strlen(foo) == 8) && isinteger(foo))
{ {
snprintf(pgdate, 11, "%c%c%c%c-%c%c-%c%c", snprintf(pgdate, 11, "%c%c%c%c-%c%c-%c%c",
foo[0], foo[1], foo[2], foo[3], foo[0], foo[1], foo[2], foo[3],
foo[4], foo[5], foo[6], foo[7]); foo[4], foo[5], foo[6], foo[7]);
strcat(query, pgdate); strcat(query, pgdate);
} }
else else
......
This diff is collapsed.
...@@ -74,6 +74,6 @@ extern Datum dblink_build_sql_delete(PG_FUNCTION_ARGS); ...@@ -74,6 +74,6 @@ extern Datum dblink_build_sql_delete(PG_FUNCTION_ARGS);
extern Datum dblink_build_sql_update(PG_FUNCTION_ARGS); extern Datum dblink_build_sql_update(PG_FUNCTION_ARGS);
extern Datum dblink_current_query(PG_FUNCTION_ARGS); extern Datum dblink_current_query(PG_FUNCTION_ARGS);
extern char *debug_query_string; extern char *debug_query_string;
#endif /* DBLINK_H */ #endif /* DBLINK_H */
This diff is collapsed.
...@@ -37,7 +37,7 @@ psnprintf(size_t len, const char *fmt,...) ...@@ -37,7 +37,7 @@ psnprintf(size_t len, const char *fmt,...)
PG_FUNCTION_INFO_V1(database_size); PG_FUNCTION_INFO_V1(database_size);
Datum database_size(PG_FUNCTION_ARGS); Datum database_size(PG_FUNCTION_ARGS);
Datum Datum
database_size(PG_FUNCTION_ARGS) database_size(PG_FUNCTION_ARGS)
...@@ -97,7 +97,7 @@ database_size(PG_FUNCTION_ARGS) ...@@ -97,7 +97,7 @@ database_size(PG_FUNCTION_ARGS)
PG_FUNCTION_INFO_V1(relation_size); PG_FUNCTION_INFO_V1(relation_size);
Datum relation_size(PG_FUNCTION_ARGS); Datum relation_size(PG_FUNCTION_ARGS);
Datum Datum
relation_size(PG_FUNCTION_ARGS) relation_size(PG_FUNCTION_ARGS)
...@@ -111,7 +111,7 @@ relation_size(PG_FUNCTION_ARGS) ...@@ -111,7 +111,7 @@ relation_size(PG_FUNCTION_ARGS)
unsigned int segcount; unsigned int segcount;
relrv = makeRangeVarFromNameList(textToQualifiedNameList(relname, relrv = makeRangeVarFromNameList(textToQualifiedNameList(relname,
"relation_size")); "relation_size"));
relation = heap_openrv(relrv, AccessShareLock); relation = heap_openrv(relrv, AccessShareLock);
relnode = relation->rd_rel->relfilenode; relnode = relation->rd_rel->relfilenode;
......
...@@ -73,7 +73,7 @@ main(int argc, char **argv) ...@@ -73,7 +73,7 @@ main(int argc, char **argv)
SELECT count(*)::int4 \ SELECT count(*)::int4 \
FROM \"%s\" t1, \"%s\" t2 \ FROM \"%s\" t1, \"%s\" t2 \
WHERE t1.\"%s\" = t2.oid ", WHERE t1.\"%s\" = t2.oid ",
relname, relname2, attname); relname, relname2, attname);
else else
sprintf(query, 4000, "\ sprintf(query, 4000, "\
DECLARE c_matches BINARY CURSOR FOR \ DECLARE c_matches BINARY CURSOR FOR \
......
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
* This file is the property of the Digital Music Network (DMN). * This file is the property of the Digital Music Network (DMN).
* It is being made available to users of the PostgreSQL system * It is being made available to users of the PostgreSQL system
* under the BSD license. * under the BSD license.
* *
* NOTE: This module requires sizeof(void *) to be the same as sizeof(int) * NOTE: This module requires sizeof(void *) to be the same as sizeof(int)
*/ */
#include "postgres.h" #include "postgres.h"
...@@ -45,31 +45,31 @@ ...@@ -45,31 +45,31 @@
typedef struct typedef struct
{ {
ArrayType a; ArrayType a;
int items; int items;
int lower; int lower;
int4 array[1]; int4 array[1];
}PGARRAY; } PGARRAY;
/* This is used to keep track of our position during enumeration */ /* This is used to keep track of our position during enumeration */
typedef struct callContext typedef struct callContext
{ {
PGARRAY *p; PGARRAY *p;
int num; int num;
int flags; int flags;
}CTX; } CTX;
#define TOASTED 1 #define TOASTED 1
#define START_NUM 8 #define START_NUM 8
#define PGARRAY_SIZE(n) (sizeof(PGARRAY) + ((n-1)*sizeof(int4))) #define PGARRAY_SIZE(n) (sizeof(PGARRAY) + ((n-1)*sizeof(int4)))
static PGARRAY * GetPGArray(int4 state, int fAdd); static PGARRAY *GetPGArray(int4 state, int fAdd);
static PGARRAY *ShrinkPGArray(PGARRAY *p); static PGARRAY *ShrinkPGArray(PGARRAY * p);
Datum int_agg_state(PG_FUNCTION_ARGS); Datum int_agg_state(PG_FUNCTION_ARGS);
Datum int_agg_final_count(PG_FUNCTION_ARGS); Datum int_agg_final_count(PG_FUNCTION_ARGS);
Datum int_agg_final_array(PG_FUNCTION_ARGS); Datum int_agg_final_array(PG_FUNCTION_ARGS);
Datum int_enum(PG_FUNCTION_ARGS); Datum int_enum(PG_FUNCTION_ARGS);
PG_FUNCTION_INFO_V1(int_agg_state); PG_FUNCTION_INFO_V1(int_agg_state);
PG_FUNCTION_INFO_V1(int_agg_final_count); PG_FUNCTION_INFO_V1(int_agg_final_count);
...@@ -80,20 +80,21 @@ PG_FUNCTION_INFO_V1(int_enum); ...@@ -80,20 +80,21 @@ PG_FUNCTION_INFO_V1(int_enum);
* Manage the aggregation state of the array * Manage the aggregation state of the array
* You need to specify the correct memory context, or it will vanish! * You need to specify the correct memory context, or it will vanish!
*/ */
static PGARRAY * GetPGArray(int4 state, int fAdd) static PGARRAY *
GetPGArray(int4 state, int fAdd)
{ {
PGARRAY *p = (PGARRAY *) state; PGARRAY *p = (PGARRAY *) state;
if(!state) if (!state)
{ {
/* New array */ /* New array */
int cb = PGARRAY_SIZE(START_NUM); int cb = PGARRAY_SIZE(START_NUM);
p = (PGARRAY *) MemoryContextAlloc(TopTransactionContext, cb); p = (PGARRAY *) MemoryContextAlloc(TopTransactionContext, cb);
if(!p) if (!p)
{ {
elog(ERROR,"Integer aggregator, cant allocate TopTransactionContext memory"); elog(ERROR, "Integer aggregator, cant allocate TopTransactionContext memory");
return 0; return 0;
} }
...@@ -104,22 +105,22 @@ static PGARRAY * GetPGArray(int4 state, int fAdd) ...@@ -104,22 +105,22 @@ static PGARRAY * GetPGArray(int4 state, int fAdd)
p->a.elemtype = INT4OID; p->a.elemtype = INT4OID;
#endif #endif
p->items = 0; p->items = 0;
p->lower= START_NUM; p->lower = START_NUM;
} }
else if(fAdd) else if (fAdd)
{ /* Ensure array has space */ { /* Ensure array has space */
if(p->items >= p->lower) if (p->items >= p->lower)
{ {
PGARRAY *pn; PGARRAY *pn;
int n = p->lower + p->lower; int n = p->lower + p->lower;
int cbNew = PGARRAY_SIZE(n); int cbNew = PGARRAY_SIZE(n);
pn = (PGARRAY *) repalloc(p, cbNew); pn = (PGARRAY *) repalloc(p, cbNew);
if(!pn) if (!pn)
{ /* Realloc failed! Reallocate new block. */ { /* Realloc failed! Reallocate new block. */
pn = (PGARRAY *) MemoryContextAlloc(TopTransactionContext, cbNew); pn = (PGARRAY *) MemoryContextAlloc(TopTransactionContext, cbNew);
if(!pn) if (!pn)
{ {
elog(ERROR, "Integer aggregator, REALLY REALLY can't alloc memory"); elog(ERROR, "Integer aggregator, REALLY REALLY can't alloc memory");
return (PGARRAY *) NULL; return (PGARRAY *) NULL;
...@@ -136,24 +137,29 @@ static PGARRAY * GetPGArray(int4 state, int fAdd) ...@@ -136,24 +137,29 @@ static PGARRAY * GetPGArray(int4 state, int fAdd)
} }
/* Shrinks the array to its actual size and moves it into the standard /* Shrinks the array to its actual size and moves it into the standard
* memory allocation context, frees working memory */ * memory allocation context, frees working memory */
static PGARRAY *ShrinkPGArray(PGARRAY *p) static PGARRAY *
ShrinkPGArray(PGARRAY * p)
{ {
PGARRAY *pnew=NULL; PGARRAY *pnew = NULL;
if(p)
if (p)
{ {
/* get target size */ /* get target size */
int cb = PGARRAY_SIZE(p->items); int cb = PGARRAY_SIZE(p->items);
/* use current transaction context */ /* use current transaction context */
pnew = palloc(cb); pnew = palloc(cb);
if(pnew) if (pnew)
{ {
/* Fix up the fields in the new structure, so Postgres understands */ /*
* Fix up the fields in the new structure, so Postgres
* understands
*/
memcpy(pnew, p, cb); memcpy(pnew, p, cb);
pnew->a.size = cb; pnew->a.size = cb;
pnew->a.ndim=1; pnew->a.ndim = 1;
pnew->a.flags = 0; pnew->a.flags = 0;
#ifndef PG_7_2 #ifndef PG_7_2
pnew->a.elemtype = INT4OID; pnew->a.elemtype = INT4OID;
...@@ -161,79 +167,72 @@ static PGARRAY *ShrinkPGArray(PGARRAY *p) ...@@ -161,79 +167,72 @@ static PGARRAY *ShrinkPGArray(PGARRAY *p)
pnew->lower = 0; pnew->lower = 0;
} }
else else
{
elog(ERROR, "Integer aggregator, can't allocate memory"); elog(ERROR, "Integer aggregator, can't allocate memory");
}
pfree(p); pfree(p);
} }
return pnew; return pnew;
} }
/* Called for each iteration during an aggregate function */ /* Called for each iteration during an aggregate function */
Datum int_agg_state(PG_FUNCTION_ARGS) Datum
int_agg_state(PG_FUNCTION_ARGS)
{ {
int4 state = PG_GETARG_INT32(0); int4 state = PG_GETARG_INT32(0);
int4 value = PG_GETARG_INT32(1); int4 value = PG_GETARG_INT32(1);
PGARRAY *p = GetPGArray(state, 1); PGARRAY *p = GetPGArray(state, 1);
if(!p)
{ if (!p)
elog(ERROR,"No aggregate storage"); elog(ERROR, "No aggregate storage");
} else if (p->items >= p->lower)
else if(p->items >= p->lower) elog(ERROR, "aggregate storage too small");
{
elog(ERROR,"aggregate storage too small");
}
else else
{ p->array[p->items++] = value;
p->array[p->items++]= value;
}
PG_RETURN_INT32(p); PG_RETURN_INT32(p);
} }
/* This is the final function used for the integer aggregator. It returns all the integers /* This is the final function used for the integer aggregator. It returns all the integers
* collected as a one dimentional integer array */ * collected as a one dimentional integer array */
Datum int_agg_final_array(PG_FUNCTION_ARGS) Datum
int_agg_final_array(PG_FUNCTION_ARGS)
{ {
PGARRAY *pnew = ShrinkPGArray(GetPGArray(PG_GETARG_INT32(0),0)); PGARRAY *pnew = ShrinkPGArray(GetPGArray(PG_GETARG_INT32(0), 0));
if(pnew)
{ if (pnew)
PG_RETURN_POINTER(pnew); PG_RETURN_POINTER(pnew);
}
else else
{
PG_RETURN_NULL(); PG_RETURN_NULL();
}
} }
/* This function accepts an array, and returns one item for each entry in the array */ /* This function accepts an array, and returns one item for each entry in the array */
Datum int_enum(PG_FUNCTION_ARGS) Datum
int_enum(PG_FUNCTION_ARGS)
{ {
PGARRAY *p = (PGARRAY *) PG_GETARG_POINTER(0); PGARRAY *p = (PGARRAY *) PG_GETARG_POINTER(0);
CTX *pc; CTX *pc;
ReturnSetInfo *rsi = (ReturnSetInfo *)fcinfo->resultinfo; ReturnSetInfo *rsi = (ReturnSetInfo *) fcinfo->resultinfo;
if (!rsi || !IsA(rsi, ReturnSetInfo)) if (!rsi || !IsA(rsi, ReturnSetInfo))
elog(ERROR, "No ReturnSetInfo sent! function must be declared returning a 'setof' integer"); elog(ERROR, "No ReturnSetInfo sent! function must be declared returning a 'setof' integer");
if(!p) if (!p)
{ {
elog(WARNING, "No data sent"); elog(WARNING, "No data sent");
PG_RETURN_NULL(); PG_RETURN_NULL();
} }
if(!fcinfo->context) if (!fcinfo->context)
{ {
/* Allocate a working context */ /* Allocate a working context */
pc = (CTX *) palloc(sizeof(CTX)); pc = (CTX *) palloc(sizeof(CTX));
/* Don't copy atribute if you don't need too */ /* Don't copy atribute if you don't need too */
if(VARATT_IS_EXTENDED(p) ) if (VARATT_IS_EXTENDED(p))
{ {
/* Toasted!!! */ /* Toasted!!! */
pc->p = (PGARRAY *) PG_DETOAST_DATUM_COPY(p); pc->p = (PGARRAY *) PG_DETOAST_DATUM_COPY(p);
pc->flags = TOASTED; pc->flags = TOASTED;
if(!pc->p) if (!pc->p)
{ {
elog(ERROR, "Error in toaster!!! no detoasting"); elog(ERROR, "Error in toaster!!! no detoasting");
PG_RETURN_NULL(); PG_RETURN_NULL();
...@@ -246,25 +245,26 @@ Datum int_enum(PG_FUNCTION_ARGS) ...@@ -246,25 +245,26 @@ Datum int_enum(PG_FUNCTION_ARGS)
pc->flags = 0; pc->flags = 0;
} }
fcinfo->context = (Node *) pc; fcinfo->context = (Node *) pc;
pc->num=0; pc->num = 0;
} }
else /* use an existing one */ else
{ /* use an existing one */
pc = (CTX *) fcinfo->context; pc = (CTX *) fcinfo->context;
}
/* Are we done yet? */ /* Are we done yet? */
if(pc->num >= pc->p->items) if (pc->num >= pc->p->items)
{ {
/* We are done */ /* We are done */
if(pc->flags & TOASTED) if (pc->flags & TOASTED)
pfree(pc->p); pfree(pc->p);
pfree(fcinfo->context); pfree(fcinfo->context);
fcinfo->context = NULL; fcinfo->context = NULL;
rsi->isDone = ExprEndResult ; rsi->isDone = ExprEndResult;
} }
else /* nope, return the next value */ else
/* nope, return the next value */
{ {
int val = pc->p->array[pc->num++]; int val = pc->p->array[pc->num++];
rsi->isDone = ExprMultipleResult; rsi->isDone = ExprMultipleResult;
PG_RETURN_INT32(val); PG_RETURN_INT32(val);
} }
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
...@@ -105,6 +105,6 @@ ltree_crc32_sz(char *buf, int size) ...@@ -105,6 +105,6 @@ ltree_crc32_sz(char *buf, int size)
len = 0; len = 0;
nr = size; nr = size;
for (len += nr, p = buf; nr--; ++p) for (len += nr, p = buf; nr--; ++p)
_CRC32_(crc, TOLOWER((unsigned int)*p)); _CRC32_(crc, TOLOWER((unsigned int) *p));
return ~crc; return ~crc;
} }
/* /*
* op function for ltree and lquery * op function for ltree and lquery
* Teodor Sigaev <teodor@stack.net> * Teodor Sigaev <teodor@stack.net>
*/ */
...@@ -9,27 +9,29 @@ ...@@ -9,27 +9,29 @@
PG_FUNCTION_INFO_V1(ltq_regex); PG_FUNCTION_INFO_V1(ltq_regex);
PG_FUNCTION_INFO_V1(ltq_rregex); PG_FUNCTION_INFO_V1(ltq_rregex);
typedef struct { typedef struct
lquery_level *q; {
int nq; lquery_level *q;
ltree_level *t; int nq;
int nt; ltree_level *t;
int posq; int nt;
int post; int posq;
} FieldNot; int post;
} FieldNot;
static char * static char *
getlexem(char *start, char *end, int *len) { getlexem(char *start, char *end, int *len)
char *ptr; {
char *ptr;
while( start<end && *start == '_' )
while (start < end && *start == '_')
start++; start++;
ptr = start; ptr = start;
if ( ptr == end ) if (ptr == end)
return NULL; return NULL;
while( ptr < end && *ptr != '_') while (ptr < end && *ptr != '_')
ptr++; ptr++;
*len = ptr - start; *len = ptr - start;
...@@ -37,31 +39,36 @@ getlexem(char *start, char *end, int *len) { ...@@ -37,31 +39,36 @@ getlexem(char *start, char *end, int *len) {
} }
bool bool
compare_subnode( ltree_level *t, char *qn, int len, int (*cmpptr)(const char *,const char *,size_t), bool anyend ) { compare_subnode(ltree_level * t, char *qn, int len, int (*cmpptr) (const char *, const char *, size_t), bool anyend)
char *endt = t->name + t->len; {
char *endq = qn + len; char *endt = t->name + t->len;
char *tn; char *endq = qn + len;
int lent,lenq; char *tn;
bool isok; int lent,
lenq;
while( (qn=getlexem(qn,endq,&lenq)) != NULL ) { bool isok;
tn=t->name;
while ((qn = getlexem(qn, endq, &lenq)) != NULL)
{
tn = t->name;
isok = false; isok = false;
while( (tn=getlexem(tn,endt,&lent)) != NULL ) { while ((tn = getlexem(tn, endt, &lent)) != NULL)
if ( {
if (
( (
lent == lenq || lent == lenq ||
( lent > lenq && anyend ) (lent > lenq && anyend)
) && ) &&
(*cmpptr)(qn,tn,lenq) == 0 ) { (*cmpptr) (qn, tn, lenq) == 0)
{
isok = true;
isok = true;
break; break;
} }
tn += lent; tn += lent;
} }
if ( !isok ) if (!isok)
return false; return false;
qn += lenq; qn += lenq;
} }
...@@ -70,27 +77,32 @@ compare_subnode( ltree_level *t, char *qn, int len, int (*cmpptr)(const char *,c ...@@ -70,27 +77,32 @@ compare_subnode( ltree_level *t, char *qn, int len, int (*cmpptr)(const char *,c
} }
static bool static bool
checkLevel( lquery_level *curq, ltree_level *curt ) { checkLevel(lquery_level * curq, ltree_level * curt)
int (*cmpptr)(const char *,const char *,size_t); {
int (*cmpptr) (const char *, const char *, size_t);
lquery_variant *curvar = LQL_FIRST(curq); lquery_variant *curvar = LQL_FIRST(curq);
int i; int i;
for(i=0;i<curq->numvar;i++) {
cmpptr = ( curvar->flag & LVAR_INCASE ) ? strncasecmp : strncmp;
if ( curvar->flag & LVAR_SUBLEXEM ) { for (i = 0; i < curq->numvar; i++)
if ( compare_subnode(curt, curvar->name, curvar->len, cmpptr, (curvar->flag & LVAR_ANYEND) ) ) {
cmpptr = (curvar->flag & LVAR_INCASE) ? strncasecmp : strncmp;
if (curvar->flag & LVAR_SUBLEXEM)
{
if (compare_subnode(curt, curvar->name, curvar->len, cmpptr, (curvar->flag & LVAR_ANYEND)))
return true; return true;
} else if ( }
( else if (
curvar->len == curt->len || (
( curt->len > curvar->len && (curvar->flag & LVAR_ANYEND) ) curvar->len == curt->len ||
) && (curt->len > curvar->len && (curvar->flag & LVAR_ANYEND))
(*cmpptr)( curvar->name, curt->name, curvar->len) == 0 ) { ) &&
(*cmpptr) (curvar->name, curt->name, curvar->len) == 0)
{
return true; return true;
} }
curvar = LVAR_NEXT(curvar); curvar = LVAR_NEXT(curvar);
} }
return false; return false;
} }
...@@ -102,78 +114,97 @@ printFieldNot(FieldNot *fn ) { ...@@ -102,78 +114,97 @@ printFieldNot(FieldNot *fn ) {
elog(NOTICE,"posQ:%d lenQ:%d posT:%d lenT:%d", fn->posq,fn->nq,fn->post,fn->nt); elog(NOTICE,"posQ:%d lenQ:%d posT:%d lenT:%d", fn->posq,fn->nq,fn->post,fn->nt);
fn++; fn++;
} }
} }
*/ */
static bool static bool
checkCond( lquery_level *curq, int query_numlevel, ltree_level *curt, int tree_numlevel, FieldNot *ptr ) { checkCond(lquery_level * curq, int query_numlevel, ltree_level * curt, int tree_numlevel, FieldNot * ptr)
uint32 low_pos=0,high_pos=0,cur_tpos=0; {
int tlen = tree_numlevel, qlen = query_numlevel; uint32 low_pos = 0,
int isok; high_pos = 0,
lquery_level *prevq=NULL; cur_tpos = 0;
ltree_level *prevt=NULL; int tlen = tree_numlevel,
qlen = query_numlevel;
while( tlen >0 && qlen>0 ) { int isok;
if ( curq->numvar ) { lquery_level *prevq = NULL;
ltree_level *prevt = NULL;
while (tlen > 0 && qlen > 0)
{
if (curq->numvar)
{
prevt = curt; prevt = curt;
while ( cur_tpos < low_pos ) { while (cur_tpos < low_pos)
{
curt = LEVEL_NEXT(curt); curt = LEVEL_NEXT(curt);
tlen--; tlen--;
cur_tpos++; cur_tpos++;
if ( tlen==0 ) if (tlen == 0)
return false; return false;
if ( ptr && ptr->q ) if (ptr && ptr->q)
ptr->nt++; ptr->nt++;
} }
if ( ptr && curq->flag & LQL_NOT ) { if (ptr && curq->flag & LQL_NOT)
if ( !(prevq && prevq->numvar == 0) ) {
if (!(prevq && prevq->numvar == 0))
prevq = curq; prevq = curq;
if ( ptr->q == NULL ) { if (ptr->q == NULL)
{
ptr->t = prevt; ptr->t = prevt;
ptr->q = prevq; ptr->q = prevq;
ptr->nt=1; ptr->nt = 1;
ptr->nq=1 + ( (prevq==curq) ? 0 : 1 ); ptr->nq = 1 + ((prevq == curq) ? 0 : 1);
ptr->posq = query_numlevel - qlen - ( (prevq==curq) ? 0 : 1 ); ptr->posq = query_numlevel - qlen - ((prevq == curq) ? 0 : 1);
ptr->post = cur_tpos; ptr->post = cur_tpos;
} else { }
else
{
ptr->nt++; ptr->nt++;
ptr->nq++; ptr->nq++;
} }
if ( qlen == 1 && ptr->q->numvar==0 ) if (qlen == 1 && ptr->q->numvar == 0)
ptr->nt = tree_numlevel - ptr->post; ptr->nt = tree_numlevel - ptr->post;
curt = LEVEL_NEXT(curt); curt = LEVEL_NEXT(curt);
tlen--; tlen--;
cur_tpos++; cur_tpos++;
if ( high_pos < cur_tpos ) if (high_pos < cur_tpos)
high_pos++; high_pos++;
} else { }
else
{
isok = false; isok = false;
while( cur_tpos <= high_pos && tlen > 0 && !isok) { while (cur_tpos <= high_pos && tlen > 0 && !isok)
{
isok = checkLevel(curq, curt); isok = checkLevel(curq, curt);
curt = LEVEL_NEXT(curt); curt = LEVEL_NEXT(curt);
tlen--; tlen--;
cur_tpos++; cur_tpos++;
if ( !isok && ptr ) if (!isok && ptr)
ptr->nt++; ptr->nt++;
} }
if ( !isok ) if (!isok)
return false; return false;
if (ptr && ptr->q) { if (ptr && ptr->q)
if ( checkCond(ptr->q,ptr->nq,ptr->t,ptr->nt,NULL) ) {
if (checkCond(ptr->q, ptr->nq, ptr->t, ptr->nt, NULL))
return false; return false;
ptr->q = NULL; ptr->q = NULL;
} }
low_pos=cur_tpos; high_pos=cur_tpos; low_pos = cur_tpos;
high_pos = cur_tpos;
} }
} else { }
else
{
low_pos = cur_tpos + curq->low; low_pos = cur_tpos + curq->low;
high_pos = cur_tpos + curq->high; high_pos = cur_tpos + curq->high;
if ( ptr && ptr->q ) { if (ptr && ptr->q)
{
ptr->nq++; ptr->nq++;
if ( qlen==1 ) if (qlen == 1)
ptr->nt = tree_numlevel - ptr->post; ptr->nt = tree_numlevel - ptr->post;
} }
} }
...@@ -181,16 +212,20 @@ checkCond( lquery_level *curq, int query_numlevel, ltree_level *curt, int tree_n ...@@ -181,16 +212,20 @@ checkCond( lquery_level *curq, int query_numlevel, ltree_level *curt, int tree_n
prevq = curq; prevq = curq;
curq = LQL_NEXT(curq); curq = LQL_NEXT(curq);
qlen--; qlen--;
} }
if ( low_pos > tree_numlevel || tree_numlevel > high_pos ) if (low_pos > tree_numlevel || tree_numlevel > high_pos)
return false; return false;
while( qlen>0 ) { while (qlen > 0)
if ( curq->numvar ) { {
if ( ! (curq->flag & LQL_NOT) ) if (curq->numvar)
{
if (!(curq->flag & LQL_NOT))
return false; return false;
} else { }
else
{
low_pos = cur_tpos + curq->low; low_pos = cur_tpos + curq->low;
high_pos = cur_tpos + curq->high; high_pos = cur_tpos + curq->high;
} }
...@@ -199,42 +234,47 @@ checkCond( lquery_level *curq, int query_numlevel, ltree_level *curt, int tree_n ...@@ -199,42 +234,47 @@ checkCond( lquery_level *curq, int query_numlevel, ltree_level *curt, int tree_n
qlen--; qlen--;
} }
if ( low_pos > tree_numlevel || tree_numlevel > high_pos ) if (low_pos > tree_numlevel || tree_numlevel > high_pos)
return false; return false;
if ( ptr && ptr->q && checkCond(ptr->q,ptr->nq,ptr->t,ptr->nt,NULL) ) if (ptr && ptr->q && checkCond(ptr->q, ptr->nq, ptr->t, ptr->nt, NULL))
return false; return false;
return true; return true;
} }
Datum Datum
ltq_regex(PG_FUNCTION_ARGS) { ltq_regex(PG_FUNCTION_ARGS)
ltree *tree = PG_GETARG_LTREE(0); {
lquery *query = PG_GETARG_LQUERY(1); ltree *tree = PG_GETARG_LTREE(0);
bool res= false; lquery *query = PG_GETARG_LQUERY(1);
bool res = false;
if ( query->flag & LQUERY_HASNOT ) { if (query->flag & LQUERY_HASNOT)
{
FieldNot fn; FieldNot fn;
fn.q=NULL; fn.q = NULL;
res = checkCond( LQUERY_FIRST(query), query->numlevel, res = checkCond(LQUERY_FIRST(query), query->numlevel,
LTREE_FIRST(tree), tree->numlevel, &fn ); LTREE_FIRST(tree), tree->numlevel, &fn);
} else { }
res = checkCond( LQUERY_FIRST(query), query->numlevel, else
LTREE_FIRST(tree), tree->numlevel, NULL ); {
res = checkCond(LQUERY_FIRST(query), query->numlevel,
LTREE_FIRST(tree), tree->numlevel, NULL);
} }
PG_FREE_IF_COPY(tree,0); PG_FREE_IF_COPY(tree, 0);
PG_FREE_IF_COPY(query,1); PG_FREE_IF_COPY(query, 1);
PG_RETURN_BOOL(res); PG_RETURN_BOOL(res);
} }
Datum Datum
ltq_rregex(PG_FUNCTION_ARGS) { ltq_rregex(PG_FUNCTION_ARGS)
PG_RETURN_DATUM( DirectFunctionCall2( ltq_regex, {
PG_GETARG_DATUM(1), PG_RETURN_DATUM(DirectFunctionCall2(ltq_regex,
PG_GETARG_DATUM(0) PG_GETARG_DATUM(1),
) ); PG_GETARG_DATUM(0)
));
} }
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
/* /*
* txtquery operations with ltree * txtquery operations with ltree
* Teodor Sigaev <teodor@stack.net> * Teodor Sigaev <teodor@stack.net>
*/ */
...@@ -12,20 +12,26 @@ PG_FUNCTION_INFO_V1(ltxtq_rexec); ...@@ -12,20 +12,26 @@ PG_FUNCTION_INFO_V1(ltxtq_rexec);
/* /*
* check for boolean condition * check for boolean condition
*/ */
bool bool
ltree_execute(ITEM * curitem, void *checkval, bool calcnot, bool (*chkcond) (void *checkval, ITEM * val)) { ltree_execute(ITEM * curitem, void *checkval, bool calcnot, bool (*chkcond) (void *checkval, ITEM * val))
{
if (curitem->type == VAL) if (curitem->type == VAL)
return (*chkcond) (checkval, curitem); return (*chkcond) (checkval, curitem);
else if (curitem->val == (int4) '!') { else if (curitem->val == (int4) '!')
{
return (calcnot) ? return (calcnot) ?
((ltree_execute(curitem + 1, checkval, calcnot, chkcond)) ? false : true) ((ltree_execute(curitem + 1, checkval, calcnot, chkcond)) ? false : true)
: true; : true;
} else if (curitem->val == (int4) '&') { }
if (ltree_execute(curitem + curitem->left, checkval, calcnot, chkcond)) else if (curitem->val == (int4) '&')
{
if (ltree_execute(curitem + curitem->left, checkval, calcnot, chkcond))
return ltree_execute(curitem + 1, checkval, calcnot, chkcond); return ltree_execute(curitem + 1, checkval, calcnot, chkcond);
else else
return false; return false;
} else { /* |-operator */ }
else
{ /* |-operator */
if (ltree_execute(curitem + curitem->left, checkval, calcnot, chkcond)) if (ltree_execute(curitem + curitem->left, checkval, calcnot, chkcond))
return true; return true;
else else
...@@ -34,54 +40,60 @@ ltree_execute(ITEM * curitem, void *checkval, bool calcnot, bool (*chkcond) (voi ...@@ -34,54 +40,60 @@ ltree_execute(ITEM * curitem, void *checkval, bool calcnot, bool (*chkcond) (voi
return false; return false;
} }
typedef struct { typedef struct
ltree *node; {
char *operand; ltree *node;
} CHKVAL; char *operand;
} CHKVAL;
static bool static bool
checkcondition_str(void* checkval, ITEM * val) { checkcondition_str(void *checkval, ITEM * val)
ltree_level *level = LTREE_FIRST( ((CHKVAL*)checkval)->node ); {
int tlen = ((CHKVAL*)checkval)->node->numlevel; ltree_level *level = LTREE_FIRST(((CHKVAL *) checkval)->node);
char *op = ((CHKVAL*)checkval)->operand + val->distance; int tlen = ((CHKVAL *) checkval)->node->numlevel;
int (*cmpptr)(const char *,const char *,size_t); char *op = ((CHKVAL *) checkval)->operand + val->distance;
int (*cmpptr) (const char *, const char *, size_t);
cmpptr = ( val->flag & LVAR_INCASE ) ? strncasecmp : strncmp; cmpptr = (val->flag & LVAR_INCASE) ? strncasecmp : strncmp;
while( tlen > 0 ) { while (tlen > 0)
if ( val->flag & LVAR_SUBLEXEM ) { {
if ( compare_subnode(level, op, val->length, cmpptr, (val->flag & LVAR_ANYEND) ) ) if (val->flag & LVAR_SUBLEXEM)
{
if (compare_subnode(level, op, val->length, cmpptr, (val->flag & LVAR_ANYEND)))
return true; return true;
} else if ( }
( else if (
val->length == level->len || (
( level->len > val->length && (val->flag & LVAR_ANYEND) ) val->length == level->len ||
) && (level->len > val->length && (val->flag & LVAR_ANYEND))
(*cmpptr)( op, level->name, val->length) == 0 ) ) &&
(*cmpptr) (op, level->name, val->length) == 0)
return true; return true;
tlen--; tlen--;
level = LEVEL_NEXT(level); level = LEVEL_NEXT(level);
} }
return false; return false;
} }
Datum Datum
ltxtq_exec(PG_FUNCTION_ARGS) { ltxtq_exec(PG_FUNCTION_ARGS)
ltree *val = PG_GETARG_LTREE(0); {
ltree *val = PG_GETARG_LTREE(0);
ltxtquery *query = PG_GETARG_LTXTQUERY(1); ltxtquery *query = PG_GETARG_LTXTQUERY(1);
CHKVAL chkval; CHKVAL chkval;
bool result; bool result;
chkval.node = val; chkval.node = val;
chkval.operand = GETOPERAND(query); chkval.operand = GETOPERAND(query);
result = ltree_execute( result = ltree_execute(
GETQUERY(query), GETQUERY(query),
&chkval, &chkval,
true, true,
checkcondition_str checkcondition_str
); );
PG_FREE_IF_COPY(val, 0); PG_FREE_IF_COPY(val, 0);
PG_FREE_IF_COPY(query, 1); PG_FREE_IF_COPY(query, 1);
...@@ -89,11 +101,10 @@ ltxtq_exec(PG_FUNCTION_ARGS) { ...@@ -89,11 +101,10 @@ ltxtq_exec(PG_FUNCTION_ARGS) {
} }
Datum Datum
ltxtq_rexec(PG_FUNCTION_ARGS) { ltxtq_rexec(PG_FUNCTION_ARGS)
PG_RETURN_DATUM( DirectFunctionCall2( ltxtq_exec, {
PG_GETARG_DATUM(1), PG_RETURN_DATUM(DirectFunctionCall2(ltxtq_exec,
PG_GETARG_DATUM(0) PG_GETARG_DATUM(1),
) ); PG_GETARG_DATUM(0)
));
} }
...@@ -263,7 +263,7 @@ msqlListTables(int a) ...@@ -263,7 +263,7 @@ msqlListTables(int a)
char tbuf[BUFSIZ]; char tbuf[BUFSIZ];
snprintf(tbuf, BUFSIZ, snprintf(tbuf, BUFSIZ,
"select relname from pg_class where relkind='r' and relowner=%d", "select relname from pg_class where relkind='r' and relowner=%d",
getuid()); getuid());
if (msqlQuery(a, tbuf) > 0) if (msqlQuery(a, tbuf) > 0)
{ {
...@@ -287,7 +287,7 @@ msqlListIndex(int a, char *b, char *c) ...@@ -287,7 +287,7 @@ msqlListIndex(int a, char *b, char *c)
char tbuf[BUFSIZ]; char tbuf[BUFSIZ];
snprintf(tbuf, BUFSIZ, snprintf(tbuf, BUFSIZ,
"select relname from pg_class where relkind='i' and relowner=%d", "select relname from pg_class where relkind='i' and relowner=%d",
getuid()); getuid());
if (msqlQuery(a, tbuf) > 0) if (msqlQuery(a, tbuf) > 0)
{ {
......
/* ------------------------------------------------------------------------- /* -------------------------------------------------------------------------
* pg_dumplo * pg_dumplo
* *
* $Header: /cvsroot/pgsql/contrib/pg_dumplo/Attic/lo_export.c,v 1.9 2002/08/15 02:58:29 momjian Exp $ * $Header: /cvsroot/pgsql/contrib/pg_dumplo/Attic/lo_export.c,v 1.10 2002/09/04 20:31:06 momjian Exp $
* *
* Karel Zak 1999-2000 * Karel Zak 1999-2000
* ------------------------------------------------------------------------- * -------------------------------------------------------------------------
...@@ -142,7 +142,7 @@ pglo_export(LODumpMaster * pgLO) ...@@ -142,7 +142,7 @@ pglo_export(LODumpMaster * pgLO)
{ {
snprintf(path, BUFSIZ, "%s/%s/%s", pgLO->space, pgLO->db, snprintf(path, BUFSIZ, "%s/%s/%s", pgLO->space, pgLO->db,
ll->lo_table); ll->lo_table);
if (mkdir(path, DIR_UMASK) == -1) if (mkdir(path, DIR_UMASK) == -1)
{ {
...@@ -154,7 +154,7 @@ pglo_export(LODumpMaster * pgLO) ...@@ -154,7 +154,7 @@ pglo_export(LODumpMaster * pgLO)
} }
snprintf(path, BUFSIZ, "%s/%s/%s/%s", pgLO->space, pgLO->db, snprintf(path, BUFSIZ, "%s/%s/%s/%s", pgLO->space, pgLO->db,
ll->lo_table, ll->lo_attr); ll->lo_table, ll->lo_attr);
if (mkdir(path, DIR_UMASK) == -1) if (mkdir(path, DIR_UMASK) == -1)
{ {
...@@ -187,7 +187,7 @@ pglo_export(LODumpMaster * pgLO) ...@@ -187,7 +187,7 @@ pglo_export(LODumpMaster * pgLO)
} }
snprintf(path, BUFSIZ, "%s/%s/%s/%s/%s", pgLO->space, snprintf(path, BUFSIZ, "%s/%s/%s/%s/%s", pgLO->space,
pgLO->db, ll->lo_table, ll->lo_attr, val); pgLO->db, ll->lo_table, ll->lo_attr, val);
if (lo_export(pgLO->conn, lo, path) < 0) if (lo_export(pgLO->conn, lo, path) < 0)
fprintf(stderr, "%s: lo_export failed:\n%s", progname, fprintf(stderr, "%s: lo_export failed:\n%s", progname,
......
/* ------------------------------------------------------------------------- /* -------------------------------------------------------------------------
* pg_dumplo * pg_dumplo
* *
* $Header: /cvsroot/pgsql/contrib/pg_dumplo/Attic/lo_import.c,v 1.7 2002/08/15 02:58:29 momjian Exp $ * $Header: /cvsroot/pgsql/contrib/pg_dumplo/Attic/lo_import.c,v 1.8 2002/09/04 20:31:06 momjian Exp $
* *
* Karel Zak 1999-2000 * Karel Zak 1999-2000
* ------------------------------------------------------------------------- * -------------------------------------------------------------------------
...@@ -82,7 +82,7 @@ pglo_import(LODumpMaster * pgLO) ...@@ -82,7 +82,7 @@ pglo_import(LODumpMaster * pgLO)
* UPDATE oid in tab * UPDATE oid in tab
*/ */
snprintf(Qbuff, QUERY_BUFSIZ, snprintf(Qbuff, QUERY_BUFSIZ,
"UPDATE \"%s\" SET \"%s\"=%u WHERE \"%s\"=%u", "UPDATE \"%s\" SET \"%s\"=%u WHERE \"%s\"=%u",
loa.lo_table, loa.lo_attr, new_oid, loa.lo_attr, loa.lo_oid); loa.lo_table, loa.lo_attr, new_oid, loa.lo_attr, loa.lo_oid);
/* fprintf(stderr, Qbuff); */ /* fprintf(stderr, Qbuff); */
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
...@@ -270,7 +270,7 @@ timetravel(PG_FUNCTION_ARGS) ...@@ -270,7 +270,7 @@ timetravel(PG_FUNCTION_ARGS)
for (i = 1; i <= natts; i++) for (i = 1; i <= natts; i++)
{ {
snprintf(sql + strlen(sql), sizeof(sql) - strlen(sql), "$%d%s", snprintf(sql + strlen(sql), sizeof(sql) - strlen(sql), "$%d%s",
i, (i < natts) ? ", " : ")"); i, (i < natts) ? ", " : ")");
ctypes[i - 1] = SPI_gettypeid(tupdesc, i); ctypes[i - 1] = SPI_gettypeid(tupdesc, i);
} }
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
...@@ -114,7 +114,7 @@ initmorph(void) ...@@ -114,7 +114,7 @@ initmorph(void)
needinit[i] = false; needinit[i] = false;
PGLC_current(&lc); PGLC_current(&lc);
if ( lc.lc_ctype ) if (lc.lc_ctype)
for (i = 1; i < lengthof(dicts); i++) for (i = 1; i < lengthof(dicts); i++)
if (strcmp(dicts[i].localename, lc.lc_ctype) == 0) if (strcmp(dicts[i].localename, lc.lc_ctype) == 0)
{ {
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment