From: Teodor Sigaev Date: Mon, 19 Sep 2016 12:02:04 +0000 (+0300) Subject: fix markup X-Git-Url: http://sigaev.ru/git/gitweb.cgi?p=smlar.git;a=commitdiff_plain;h=8d02df18c0bbfd6ccba94a9582499ec8746047e5;hp=5cb298d7226344342759d54fe32d72665315d372 fix markup --- diff --git a/smlar.c b/smlar.c index ef89e80..5cbe5c2 100644 --- a/smlar.c +++ b/smlar.c @@ -29,7 +29,7 @@ PG_MODULE_MAGIC; #endif static Oid -getDefaultOpclass(Oid amoid, Oid typid) +getDefaultOpclass(Oid amoid, Oid typid) { ScanKeyData skey; SysScanDesc scan; @@ -37,15 +37,15 @@ getDefaultOpclass(Oid amoid, Oid typid) Relation heapRel; Oid opclassOid = InvalidOid; - heapRel = heap_open(OperatorClassRelationId, AccessShareLock); + heapRel = heap_open(OperatorClassRelationId, AccessShareLock); ScanKeyInit(&skey, Anum_pg_opclass_opcmethod, BTEqualStrategyNumber, F_OIDEQ, ObjectIdGetDatum(amoid)); - scan = systable_beginscan(heapRel, - OpclassAmNameNspIndexId, true, + scan = systable_beginscan(heapRel, + OpclassAmNameNspIndexId, true, SNAPSHOT, 1, &skey); while (HeapTupleIsValid((tuple = systable_getnext(scan)))) @@ -67,7 +67,7 @@ getDefaultOpclass(Oid amoid, Oid typid) } static Oid -getAMProc(Oid amoid, Oid typid) +getAMProc(Oid amoid, Oid typid) { Oid opclassOid = getDefaultOpclass(amoid, typid); Oid procOid = InvalidOid; @@ -97,7 +97,7 @@ getAMProc(Oid amoid, Oid typid) for (i = 0; i < catlist->n_members; i++) { - HeapTuple tuple = &catlist->members[i]->tuple; + HeapTuple tuple = &catlist->members[i]->tuple; Form_pg_cast castForm = (Form_pg_cast)GETSTRUCT(tuple); if ( castForm->castfunc == InvalidOid && castForm->castcontext == COERCION_CODE_IMPLICIT ) @@ -111,7 +111,7 @@ getAMProc(Oid amoid, Oid typid) ReleaseSysCacheList(catlist); } - + if ( !OidIsValid(opclassOid) ) return InvalidOid; @@ -138,7 +138,7 @@ getAMProc(Oid amoid, Oid typid) #endif scan = systable_beginscan(heapRel, AccessMethodProcedureIndexId, true, - SNAPSHOT, + SNAPSHOT, #if PG_VERSION_NUM >= 90200 4, #else @@ -203,8 +203,8 @@ fillProcs(Oid typid) info->cmpFuncOid = getAMProc(BTREE_AM_OID, info->tupDesc->attrs[0]->atttypid); info->hashFuncOid = getAMProc(HASH_AM_OID, info->tupDesc->attrs[0]->atttypid); - } - else + } + else { info->tupDesc = NULL; @@ -254,7 +254,7 @@ cmpProcTypeInfo(const void *a, const void *b) Assert( av->typid != bv->typid ); - return ( av->typid > bv->typid ) ? 1 : -1; + return ( av->typid > bv->typid ) ? 1 : -1; } ProcTypeInfo @@ -264,7 +264,7 @@ findProcs(Oid typid) if ( nCacheProcs == 1 ) { - if ( cacheProcs[0]->typid == typid ) + if ( cacheProcs[0]->typid == typid ) { /*cacheProcs[0]->hashFuncInited = cacheProcs[0]->cmpFuncInited = false;*/ return cacheProcs[0]; @@ -273,7 +273,7 @@ findProcs(Oid typid) else if ( nCacheProcs > 1 ) { ProcTypeInfo *StopMiddle; - ProcTypeInfo *StopLow = cacheProcs, + ProcTypeInfo *StopLow = cacheProcs, *StopHigh = cacheProcs + nCacheProcs; while (StopLow < StopHigh) { @@ -295,7 +295,7 @@ findProcs(Oid typid) } info = fillProcs(typid); - if ( nCacheProcs == 0 ) + if ( nCacheProcs == 0 ) { cacheProcs = malloc(sizeof(ProcTypeInfo)); @@ -379,11 +379,11 @@ cmpArrayElem(const void *a, const void *b, void *arg) { ProcTypeInfo info = (ProcTypeInfo)arg; - if (info->tupDesc) + if (info->tupDesc) /* composite type */ return DatumGetInt32( FCall2( &info->cmpFunc, - deconstructCompositeType(info, *(Datum*)a, NULL), - deconstructCompositeType(info, *(Datum*)b, NULL) ) ); + deconstructCompositeType(info, *(Datum*)a, NULL), + deconstructCompositeType(info, *(Datum*)b, NULL) ) ); return DatumGetInt32( FCall2( &info->cmpFunc, *(Datum*)a, *(Datum*)b ) ); @@ -413,13 +413,13 @@ typedef struct cmpArrayElemData { static int cmpArrayElemArg(const void *a, const void *b, void *arg) { - cmpArrayElemData *data = (cmpArrayElemData*)arg; - int res; + cmpArrayElemData *data = (cmpArrayElemData*)arg; + int res; if (data->info->tupDesc) res = DatumGetInt32( FCall2( &data->info->cmpFunc, - deconstructCompositeType(data->info, *(Datum*)a, NULL), - deconstructCompositeType(data->info, *(Datum*)b, NULL) ) ); + deconstructCompositeType(data->info, *(Datum*)a, NULL), + deconstructCompositeType(data->info, *(Datum*)b, NULL) ) ); else res = DatumGetInt32( FCall2( &data->info->cmpFunc, *(Datum*)a, *(Datum*)b ) ); @@ -454,7 +454,7 @@ Array2SimpleArrayU(ProcTypeInfo info, ArrayType *a, void *cache) if ( s->nelems > 1 ) { cmpArrayElemData data; - int i; + int i; getFmgrInfoCmp(s->info); data.info = s->info; @@ -512,13 +512,13 @@ Array2SimpleArrayU(ProcTypeInfo info, ArrayType *a, void *cache) break; default: elog(ERROR,"Unknown TF method: %d", tfm); - } + } } else { s->df[i] = 0.0; /* unknown word */ } - } + } } } else if ( cache ) @@ -533,7 +533,7 @@ Array2SimpleArrayU(ProcTypeInfo info, ArrayType *a, void *cache) } } } - else if (s->nelems > 0 && cache) + else if (s->nelems > 0 && cache) { stat = fingArrayStat(cache, s->info->typid, s->elems[0], stat); if ( stat ) @@ -646,12 +646,12 @@ arraysml(PG_FUNCTION_ARGS) { ArrayType *a, *b; SimpleArray *sa, *sb; - - fcinfo->flinfo->fn_extra = SearchArrayCache( + + fcinfo->flinfo->fn_extra = SearchArrayCache( fcinfo->flinfo->fn_extra, fcinfo->flinfo->fn_mcxt, PG_GETARG_DATUM(0), &a, &sa, NULL); - fcinfo->flinfo->fn_extra = SearchArrayCache( + fcinfo->flinfo->fn_extra = SearchArrayCache( fcinfo->flinfo->fn_extra, fcinfo->flinfo->fn_mcxt, PG_GETARG_DATUM(1), &b, &sb, NULL); @@ -664,10 +664,10 @@ arraysml(PG_FUNCTION_ARGS) switch(getSmlType()) { - case ST_TFIDF: + case ST_TFIDF: PG_RETURN_FLOAT4( TFIDFSml(sa, sb) ); break; - case ST_COSINE: + case ST_COSINE: { int cnt; double power; @@ -678,7 +678,7 @@ arraysml(PG_FUNCTION_ARGS) PG_RETURN_FLOAT4( ((double)cnt) / sqrt( power ) ); } break; - case ST_OVERLAP: + case ST_OVERLAP: { float4 res = (float4)numOfIntersect(sa, sb); @@ -689,7 +689,7 @@ arraysml(PG_FUNCTION_ARGS) elog(ERROR,"Unsupported formula type of similarity"); } - PG_RETURN_FLOAT4(0.0); /* keep compiler quiet */ + PG_RETURN_FLOAT4(0.0); /* keep compiler quiet */ } PG_FUNCTION_INFO_V1(arraysmlw); @@ -700,20 +700,19 @@ arraysmlw(PG_FUNCTION_ARGS) ArrayType *a, *b; SimpleArray *sa, *sb; bool useIntersect = PG_GETARG_BOOL(2); - double numerator = 0.0; - double denominatorA = 0.0, + double numerator = 0.0; + double denominatorA = 0.0, denominatorB = 0.0, tmpA, tmpB; int cmp; ProcTypeInfo info; int ai = 0, bi = 0; - - fcinfo->flinfo->fn_extra = SearchArrayCache( + fcinfo->flinfo->fn_extra = SearchArrayCache( fcinfo->flinfo->fn_extra, fcinfo->flinfo->fn_mcxt, PG_GETARG_DATUM(0), &a, &sa, NULL); - fcinfo->flinfo->fn_extra = SearchArrayCache( + fcinfo->flinfo->fn_extra = SearchArrayCache( fcinfo->flinfo->fn_extra, fcinfo->flinfo->fn_mcxt, PG_GETARG_DATUM(1), &b, &sb, NULL); @@ -782,12 +781,12 @@ arraysml_op(PG_FUNCTION_ARGS) ArrayType *a, *b; SimpleArray *sa, *sb; double power = 0.0; - - fcinfo->flinfo->fn_extra = SearchArrayCache( + + fcinfo->flinfo->fn_extra = SearchArrayCache( fcinfo->flinfo->fn_extra, fcinfo->flinfo->fn_mcxt, PG_GETARG_DATUM(0), &a, &sa, NULL); - fcinfo->flinfo->fn_extra = SearchArrayCache( + fcinfo->flinfo->fn_extra = SearchArrayCache( fcinfo->flinfo->fn_extra, fcinfo->flinfo->fn_mcxt, PG_GETARG_DATUM(1), &b, &sb, NULL); @@ -800,10 +799,10 @@ arraysml_op(PG_FUNCTION_ARGS) switch(getSmlType()) { - case ST_TFIDF: + case ST_TFIDF: power = TFIDFSml(sa, sb); break; - case ST_COSINE: + case ST_COSINE: { int cnt; @@ -816,7 +815,7 @@ arraysml_op(PG_FUNCTION_ARGS) power = ((double)cnt) / power; } break; - case ST_OVERLAP: + case ST_OVERLAP: power = (double)numOfIntersect(sa, sb); break; default: @@ -845,13 +844,13 @@ arraysml_func(PG_FUNCTION_ARGS) bool isnull; void *plan; int stat; - text *formula = PG_GETARG_TEXT_P(2); - - fcinfo->flinfo->fn_extra = SearchArrayCache( + text *formula = PG_GETARG_TEXT_P(2); + + fcinfo->flinfo->fn_extra = SearchArrayCache( fcinfo->flinfo->fn_extra, fcinfo->flinfo->fn_mcxt, PG_GETARG_DATUM(0), &a, &sa, NULL); - fcinfo->flinfo->fn_extra = SearchArrayCache( + fcinfo->flinfo->fn_extra = SearchArrayCache( fcinfo->flinfo->fn_extra, fcinfo->flinfo->fn_mcxt, PG_GETARG_DATUM(1), &b, &sb, NULL); @@ -869,7 +868,6 @@ arraysml_func(PG_FUNCTION_ARGS) SPI_connect(); - if ( cachedPlan == NULL || cachedLen != VARSIZE(formula) - VARHDRSZ || memcmp( cachedFormula, VARDATA(formula), VARSIZE(formula) - VARHDRSZ ) != 0 ) { @@ -898,7 +896,7 @@ arraysml_func(PG_FUNCTION_ARGS) SPI_freeplan(plan); cachedLen = VARSIZE(formula) - VARHDRSZ; - memcpy( cachedFormula, VARDATA(formula), VARSIZE(formula) - VARHDRSZ ); + memcpy( cachedFormula, VARDATA(formula), VARSIZE(formula) - VARHDRSZ ); } plan = cachedPlan; @@ -952,14 +950,14 @@ inarray(PG_FUNCTION_ARGS) { ArrayType *a; SimpleArray *sa; - Datum query = PG_GETARG_DATUM(1); + Datum query = PG_GETARG_DATUM(1); Oid queryTypeOid; Datum *StopLow, *StopHigh, *StopMiddle; int cmp; - fcinfo->flinfo->fn_extra = SearchArrayCache( + fcinfo->flinfo->fn_extra = SearchArrayCache( fcinfo->flinfo->fn_extra, fcinfo->flinfo->fn_mcxt, PG_GETARG_DATUM(0), &a, &sa, NULL); @@ -976,7 +974,7 @@ inarray(PG_FUNCTION_ARGS) StopLow = sa->elems; StopHigh = sa->elems + sa->nelems; - while (StopLow < StopHigh) + while (StopLow < StopHigh) { StopMiddle = StopLow + ((StopHigh - StopLow) >> 1); cmp = cmpArrayElem(StopMiddle, &query, sa->info); diff --git a/smlar.h b/smlar.h index 82a1bcb..6cd5a27 100644 --- a/smlar.h +++ b/smlar.h @@ -58,7 +58,7 @@ typedef struct SimpleArray { Datum *elems; double *df; /* frequency in current doc */ uint32 *hash; - int nelems; + int nelems; ProcTypeInfo info; } SimpleArray; @@ -80,19 +80,19 @@ int getSmlType(void); * GiST */ -#define SmlarOverlapStrategy 1 -#define SmlarSimilarityStrategy 2 +#define SmlarOverlapStrategy 1 +#define SmlarSimilarityStrategy 2 struct SmlSign; struct SmlSign* Array2HashedArray(ProcTypeInfo info, ArrayType *a); /* * Cache subsystem */ -void* SearchArrayCache( void *cache, MemoryContext ctx, Datum a, ArrayType **da, SimpleArray **sa, struct SmlSign **ss ); +void* SearchArrayCache( void *cache, MemoryContext ctx, Datum a, ArrayType **da, SimpleArray **sa, struct SmlSign **ss ); typedef struct StatElem { - Datum datum; - double idf; /* log(d/df) */ + Datum datum; + double idf; /* log(d/df) */ } StatElem; typedef struct HashedElem { @@ -107,13 +107,13 @@ typedef struct SignedElem { } SignedElem; typedef struct StatCache { - StatElem *elems; - int nelems; - int64_t ndoc; + StatElem *elems; + int nelems; + int64_t ndoc; HashedElem *helems; - int nhelems; + int nhelems; SignedElem *selems; - ProcTypeInfo info; + ProcTypeInfo info; } StatCache; StatCache *initStatCache(MemoryContext ctx); diff --git a/smlar_cache.c b/smlar_cache.c index 2d45547..edd593d 100644 --- a/smlar_cache.c +++ b/smlar_cache.c @@ -29,7 +29,7 @@ typedef struct ArrayCache { StatCache *DocStat; } ArrayCache; -static void +static void moveFirst(ArrayCache *ac, ArrayCacheEntry *entry) { /* @@ -52,7 +52,7 @@ moveFirst(ArrayCache *ac, ArrayCacheEntry *entry) } /* - * Install into head + * Install into head */ Assert( ac->head != NULL ); @@ -64,7 +64,7 @@ moveFirst(ArrayCache *ac, ArrayCacheEntry *entry) ac->head = entry; } -#define DATUMSIZE(d) VARSIZE_ANY(DatumGetPointer(d)) +#define DATUMSIZE(d) VARSIZE_ANY(DatumGetPointer(d)) static int cmpDatum(Datum a, Datum b) { @@ -175,7 +175,7 @@ SearchArrayCache( void *cache, MemoryContext ctx, Datum a, ArrayType **da, Simpl ac->ctx = ctx; /* - * Fast check of resent used value + * Fast check of resent used value */ if ( ac->head && cmpDatum(ac->head->toastedArray, a) == 0 ) { @@ -198,10 +198,10 @@ SearchArrayCache( void *cache, MemoryContext ctx, Datum a, ArrayType **da, Simpl ArrayCacheEntry **StopMiddle; int cmp; - while (StopLow < StopHigh) { + while (StopLow < StopHigh) { StopMiddle = StopLow + ((StopHigh - StopLow) >> 1); entry = *StopMiddle; - cmp = cmpDatum(entry->toastedArray, a); + cmp = cmpDatum(entry->toastedArray, a); if ( cmp == 0 ) { @@ -217,7 +217,7 @@ SearchArrayCache( void *cache, MemoryContext ctx, Datum a, ArrayType **da, Simpl } while(0); /* - * Not found + * Not found */ if ( ac->nentries < NENTRIES ) @@ -234,7 +234,7 @@ SearchArrayCache( void *cache, MemoryContext ctx, Datum a, ArrayType **da, Simpl makeEntry(ac, ac->head, a); fetchData(ac, ac->head, da, sa, ss); - } + } else { cleanupData( ac->tail ); @@ -243,7 +243,7 @@ SearchArrayCache( void *cache, MemoryContext ctx, Datum a, ArrayType **da, Simpl fetchData(ac, ac->head, da, sa, ss); } - qsort(ac->entries, ac->nentries, sizeof(ArrayCacheEntry*), cmpEntry); + qsort(ac->entries, ac->nentries, sizeof(ArrayCacheEntry*), cmpEntry); return cache; } @@ -265,13 +265,13 @@ fingArrayStat(void *cache, Oid typoid, Datum query, StatElem *low) if ( typoid != ac->DocStat->info->typid ) elog(ERROR,"Types of stat table and actual arguments are different"); - return findStat(ac->DocStat, query, low); + return findStat(ac->DocStat, query, low); } StatCache * getStat(void *cache, size_t n) { - ArrayCache *ac; + ArrayCache *ac; if ( cache == NULL ) return NULL; diff --git a/smlar_gin.c b/smlar_gin.c index f43c9a5..ec095f6 100644 --- a/smlar_gin.c +++ b/smlar_gin.c @@ -13,7 +13,7 @@ Datum smlararrayextract(PG_FUNCTION_ARGS) { ArrayType *array; - int32 *nentries = (int32 *) PG_GETARG_POINTER(1); + int32 *nentries = (int32 *) PG_GETARG_POINTER(1); SimpleArray *sa; /* @@ -30,7 +30,7 @@ smlararrayextract(PG_FUNCTION_ARGS) if (sa->nelems == 0 && PG_NARGS() == 3) { - switch (PG_GETARG_UINT16(2)) /* StrategyNumber */ + switch (PG_GETARG_UINT16(2)) /* StrategyNumber */ { case SmlarOverlapStrategy: case SmlarSimilarityStrategy: @@ -60,13 +60,13 @@ Datum smlararrayconsistent(PG_FUNCTION_ARGS); Datum smlararrayconsistent(PG_FUNCTION_ARGS) { - bool *check = (bool *) PG_GETARG_POINTER(0); - StrategyNumber strategy = PG_GETARG_UINT16(1); + bool *check = (bool *) PG_GETARG_POINTER(0); + StrategyNumber strategy = PG_GETARG_UINT16(1); SimpleArray *sa; bool res = false; int i, cnt = 0; - bool *recheck = (bool *) PG_GETARG_POINTER(5); + bool *recheck = (bool *) PG_GETARG_POINTER(5); *recheck = true; @@ -93,9 +93,9 @@ smlararrayconsistent(PG_FUNCTION_ARGS) switch(getSmlType()) { - case ST_TFIDF: + case ST_TFIDF: { - double weight = 0.0, /* exact weight of union */ + double weight = 0.0, /* exact weight of union */ saSum = 0.0, /* exact length of query */ siSum = 0.0; /* lower limit of length of indexed value */ @@ -122,7 +122,7 @@ smlararrayconsistent(PG_FUNCTION_ARGS) res = true; } break; - case ST_COSINE: + case ST_COSINE: { double power; @@ -132,7 +132,7 @@ smlararrayconsistent(PG_FUNCTION_ARGS) res = true; } break; - case ST_OVERLAP: + case ST_OVERLAP: if (cnt >= GetSmlarLimit()) res = true; break; diff --git a/smlar_gist.c b/smlar_gist.c index e064b32..382b932 100644 --- a/smlar_gist.c +++ b/smlar_gist.c @@ -34,17 +34,17 @@ typedef char *BITVECP; #define HASHVAL(val) (((unsigned int)(val)) % SIGLENBIT) #define HASH(sign, val) SETBIT((sign), HASHVAL(val)) -#define ARRKEY 0x01 -#define SIGNKEY 0x02 -#define ALLISTRUE 0x04 +#define ARRKEY 0x01 +#define SIGNKEY 0x02 +#define ALLISTRUE 0x04 -#define ISARRKEY(x) ( ((SmlSign*)x)->flag & ARRKEY ) -#define ISSIGNKEY(x) ( ((SmlSign*)x)->flag & SIGNKEY ) -#define ISALLTRUE(x) ( ((SmlSign*)x)->flag & ALLISTRUE ) +#define ISARRKEY(x) ( ((SmlSign*)x)->flag & ARRKEY ) +#define ISSIGNKEY(x) ( ((SmlSign*)x)->flag & SIGNKEY ) +#define ISALLTRUE(x) ( ((SmlSign*)x)->flag & ALLISTRUE ) -#define CALCGTSIZE(flag, len) ( SMLSIGNHDRSZ + ( ( (flag) & ARRKEY ) ? ((len)*sizeof(uint32)) : (((flag) & ALLISTRUE) ? 0 : SIGLEN) ) ) -#define GETSIGN(x) ( (BITVECP)( (char*)x+SMLSIGNHDRSZ ) ) -#define GETARR(x) ( (uint32*)( (char*)x+SMLSIGNHDRSZ ) ) +#define CALCGTSIZE(flag, len) ( SMLSIGNHDRSZ + ( ( (flag) & ARRKEY ) ? ((len)*sizeof(uint32)) : (((flag) & ALLISTRUE) ? 0 : SIGLEN) ) ) +#define GETSIGN(x) ( (BITVECP)( (char*)x+SMLSIGNHDRSZ ) ) +#define GETARR(x) ( (uint32*)( (char*)x+SMLSIGNHDRSZ ) ) #define GETENTRY(vec,pos) ((SmlSign *) DatumGetPointer((vec)->vector[(pos)].key)) @@ -52,7 +52,7 @@ typedef char *BITVECP; * Fake IO */ PG_FUNCTION_INFO_V1(gsmlsign_in); -Datum gsmlsign_in(PG_FUNCTION_ARGS); +Datum gsmlsign_in(PG_FUNCTION_ARGS); Datum gsmlsign_in(PG_FUNCTION_ARGS) { @@ -61,7 +61,7 @@ gsmlsign_in(PG_FUNCTION_ARGS) } PG_FUNCTION_INFO_V1(gsmlsign_out); -Datum gsmlsign_out(PG_FUNCTION_ARGS); +Datum gsmlsign_out(PG_FUNCTION_ARGS); Datum gsmlsign_out(PG_FUNCTION_ARGS) { @@ -75,7 +75,7 @@ gsmlsign_out(PG_FUNCTION_ARGS) /* Number of one-bits in an unsigned byte */ static const uint8 number_of_ones[256] = { - 0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4, + 0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4, 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, @@ -96,9 +96,9 @@ static const uint8 number_of_ones[256] = { static int compareint(const void *va, const void *vb) { - uint32 a = *((uint32 *) va); - uint32 b = *((uint32 *) vb); - + uint32 a = *((uint32 *) va); + uint32 b = *((uint32 *) vb); + if (a == b) return 0; return (a > b) ? 1 : -1; @@ -111,9 +111,9 @@ compareint(const void *va, const void *vb) static int uniqueint(uint32 *a, int32 l, int32 *max) { - uint32 *ptr, - *res; - int32 cnt = 0; + uint32 *ptr, + *res; + int32 cnt = 0; *max = 1; @@ -165,7 +165,7 @@ Array2HashedArray(ProcTypeInfo info, ArrayType *a) ptr = GETARR(sign); for(i=0;inelems;i++) ptr[i] = DatumGetUInt32( FunctionCall1( &s->info->hashFunc, s->elems[i] ) ); - + /* * there is a collision of hash-function; len is always equal or less than * s->nelems @@ -180,9 +180,9 @@ Array2HashedArray(ProcTypeInfo info, ArrayType *a) static int HashedElemCmp(const void *va, const void *vb) { - uint32 a = ((HashedElem *) va)->hash; - uint32 b = ((HashedElem *) vb)->hash; - + uint32 a = ((HashedElem *) va)->hash; + uint32 b = ((HashedElem *) vb)->hash; + if (a == b) { double ma = ((HashedElem *) va)->idfMin; @@ -200,8 +200,8 @@ HashedElemCmp(const void *va, const void *vb) static int uniqueHashedElem(HashedElem *a, int32 l) { - HashedElem *ptr, - *res; + HashedElem *ptr, + *res; if (l <= 1) return l; @@ -240,7 +240,7 @@ getHashedCache(void *cache) for(i=0;inelems;i++) { uint32 hash = DatumGetUInt32( FunctionCall1( &stat->info->hashFunc, stat->elems[i].datum ) ); - int index = HASHVAL(hash); + int index = HASHVAL(hash); stat->helems[i].hash = hash; stat->helems[i].idfMin = stat->helems[i].idfMax = stat->elems[i].idf; @@ -252,7 +252,7 @@ getHashedCache(void *cache) stat->selems[index].idfMax = stat->elems[i].idf; } - stat->nhelems = uniqueHashedElem( stat->helems, stat->nelems); + stat->nhelems = uniqueHashedElem( stat->helems, stat->nelems); } return stat; @@ -309,7 +309,7 @@ hasHashedElem(SmlSign *a, uint32 h) while (StopLow < StopHigh) { StopMiddle = StopLow + ((StopHigh - StopLow) >> 1); - + if ( *StopMiddle == h ) return true; else if ( *StopMiddle < h ) @@ -328,7 +328,7 @@ makesign(BITVECP sign, SmlSign *a) uint32 *ptr = GETARR(a); MemSet((void *) sign, 0, sizeof(BITVEC)); - SETBIT(sign, SIGLENBIT); /* set last unused bit */ + SETBIT(sign, SIGLENBIT); /* set last unused bit */ for (i = 0; i < a->size; i++) HASH(sign, ptr[i]); @@ -362,7 +362,7 @@ gsmlsign_compress(PG_FUNCTION_ARGS) sign = Array2HashedArray(NULL, a); if ( VARSIZE(sign) > TOAST_INDEX_TARGET ) - { /* make signature due to its big size */ + { /* make signature due to its big size */ SmlSign *tmpsign; int len; @@ -373,7 +373,7 @@ gsmlsign_compress(PG_FUNCTION_ARGS) makesign(GETSIGN(tmpsign), sign); tmpsign->size = sizebitvec(GETSIGN(tmpsign)); - tmpsign->maxrepeat = sign->maxrepeat; + tmpsign->maxrepeat = sign->maxrepeat; sign = tmpsign; } @@ -391,7 +391,7 @@ gsmlsign_compress(PG_FUNCTION_ARGS) if ( sign->size == SIGLENBIT ) { - int32 len = CALCGTSIZE(SIGNKEY | ALLISTRUE, 0); + int32 len = CALCGTSIZE(SIGNKEY | ALLISTRUE, 0); int32 maxrepeat = sign->maxrepeat; sign = (SmlSign *) palloc(len); @@ -407,7 +407,7 @@ gsmlsign_compress(PG_FUNCTION_ARGS) entry->offset, FALSE); } } - + PG_RETURN_POINTER(retval); } @@ -416,8 +416,8 @@ Datum gsmlsign_decompress(PG_FUNCTION_ARGS); Datum gsmlsign_decompress(PG_FUNCTION_ARGS) { - GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0); - SmlSign *key = (SmlSign*)DatumGetPointer(PG_DETOAST_DATUM(entry->key)); + GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0); + SmlSign *key = (SmlSign*)DatumGetPointer(PG_DETOAST_DATUM(entry->key)); if (key != (SmlSign *) DatumGetPointer(entry->key)) { @@ -443,7 +443,7 @@ unionkey(BITVECP sbase, SmlSign *add) if (ISSIGNKEY(add)) { - BITVECP sadd = GETSIGN(add); + BITVECP sadd = GETSIGN(add); if (ISALLTRUE(add)) return true; @@ -453,7 +453,7 @@ unionkey(BITVECP sbase, SmlSign *add) } else { - uint32 *ptr = GETARR(add); + uint32 *ptr = GETARR(add); for (i = 0; i < add->size; i++) HASH(sbase, ptr[i]); @@ -468,8 +468,8 @@ Datum gsmlsign_union(PG_FUNCTION_ARGS) { GistEntryVector *entryvec = (GistEntryVector *) PG_GETARG_POINTER(0); - int *size = (int *) PG_GETARG_POINTER(1); - BITVEC base; + int *size = (int *) PG_GETARG_POINTER(1); + BITVEC base; int32 i, len, maxrepeat = 1; @@ -496,13 +496,13 @@ gsmlsign_union(PG_FUNCTION_ARGS) result->flag = flag; result->maxrepeat = maxrepeat; - if (!ISALLTRUE(result)) + if (!ISALLTRUE(result)) { memcpy((void *) GETSIGN(result), (void *) base, sizeof(BITVEC)); result->size = sizebitvec(GETSIGN(result)); } else - result->size = SIGLENBIT; + result->size = SIGLENBIT; PG_RETURN_POINTER(result); } @@ -579,9 +579,9 @@ gsmlsign_same(PG_FUNCTION_ARGS) static int hemdistsign(BITVECP a, BITVECP b) { - int i, - diff, - dist = 0; + int i, + diff, + dist = 0; LOOPBYTE { @@ -590,7 +590,7 @@ hemdistsign(BITVECP a, BITVECP b) } return dist; } - + static int hemdist(SmlSign *a, SmlSign *b) { @@ -612,18 +612,18 @@ Datum gsmlsign_penalty(PG_FUNCTION_ARGS); Datum gsmlsign_penalty(PG_FUNCTION_ARGS) { - GISTENTRY *origentry = (GISTENTRY *) PG_GETARG_POINTER(0); /* always ISSIGNKEY */ - GISTENTRY *newentry = (GISTENTRY *) PG_GETARG_POINTER(1); - float *penalty = (float *) PG_GETARG_POINTER(2); - SmlSign *origval = (SmlSign *) DatumGetPointer(origentry->key); - SmlSign *newval = (SmlSign *) DatumGetPointer(newentry->key); - BITVECP orig = GETSIGN(origval); + GISTENTRY *origentry = (GISTENTRY *) PG_GETARG_POINTER(0); /* always ISSIGNKEY */ + GISTENTRY *newentry = (GISTENTRY *) PG_GETARG_POINTER(1); + float *penalty = (float *) PG_GETARG_POINTER(2); + SmlSign *origval = (SmlSign *) DatumGetPointer(origentry->key); + SmlSign *newval = (SmlSign *) DatumGetPointer(newentry->key); + BITVECP orig = GETSIGN(origval); *penalty = 0.0; if (ISARRKEY(newval)) { - BITVEC sign; + BITVEC sign; makesign(sign, newval); @@ -644,22 +644,22 @@ gsmlsign_penalty(PG_FUNCTION_ARGS) typedef struct { - bool allistrue; - int32 size; - BITVEC sign; + bool allistrue; + int32 size; + BITVEC sign; } CACHESIGN; static void fillcache(CACHESIGN *item, SmlSign *key) { - item->allistrue = false; + item->allistrue = false; item->size = key->size; - if (ISARRKEY(key)) + if (ISARRKEY(key)) { makesign(item->sign, key); - item->size = sizebitvec( item->sign ); - } + item->size = sizebitvec( item->sign ); + } else if (ISALLTRUE(key)) item->allistrue = true; else @@ -671,7 +671,7 @@ fillcache(CACHESIGN *item, SmlSign *key) typedef struct { OffsetNumber pos; - int32 cost; + int32 cost; } SPLITCOST; static int @@ -711,22 +711,22 @@ gsmlsign_picksplit(PG_FUNCTION_ARGS) GIST_SPLITVEC *v = (GIST_SPLITVEC *) PG_GETARG_POINTER(1); OffsetNumber k, j; - SmlSign *datum_l, + SmlSign *datum_l, *datum_r; - BITVECP union_l, + BITVECP union_l, union_r; - int32 size_alpha, + int32 size_alpha, size_beta; - int32 size_waste, + int32 size_waste, waste = -1; - int32 nbytes; + int32 nbytes; OffsetNumber seed_1 = 0, seed_2 = 0; OffsetNumber *left, *right; OffsetNumber maxoff; - BITVECP ptr; - int i; + BITVECP ptr; + int i; CACHESIGN *cache; SPLITCOST *costvector; @@ -738,7 +738,7 @@ gsmlsign_picksplit(PG_FUNCTION_ARGS) cache = (CACHESIGN *) palloc(sizeof(CACHESIGN) * (maxoff + 2)); fillcache(&cache[FirstOffsetNumber], GETENTRY(entryvec, FirstOffsetNumber)); - for (k = FirstOffsetNumber; k < maxoff; k = OffsetNumberNext(k)) + for (k = FirstOffsetNumber; k < maxoff; k = OffsetNumberNext(k)) { for (j = OffsetNumberNext(k); j <= maxoff; j = OffsetNumberNext(j)) { @@ -772,7 +772,7 @@ gsmlsign_picksplit(PG_FUNCTION_ARGS) datum_l = (SmlSign *) palloc(CALCGTSIZE(SIGNKEY | ALLISTRUE, 0)); SET_VARSIZE(datum_l, CALCGTSIZE(SIGNKEY | ALLISTRUE, 0)); datum_l->flag = SIGNKEY | ALLISTRUE; - datum_l->size = SIGLENBIT; + datum_l->size = SIGLENBIT; } else { @@ -932,8 +932,8 @@ Datum gsmlsign_consistent(PG_FUNCTION_ARGS) { GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0); - StrategyNumber strategy = (StrategyNumber) PG_GETARG_UINT16(2); - bool *recheck = (bool *) PG_GETARG_POINTER(4); + StrategyNumber strategy = (StrategyNumber) PG_GETARG_UINT16(2); + bool *recheck = (bool *) PG_GETARG_POINTER(4); ArrayType *a; SmlSign *key = (SmlSign*)DatumGetPointer(entry->key); int res = false; @@ -959,8 +959,8 @@ gsmlsign_consistent(PG_FUNCTION_ARGS) } else if (ISARRKEY(key)) { - uint32 *kptr = GETARR(key), - *qptr = GETARR(query); + uint32 *kptr = GETARR(key), + *qptr = GETARR(query); while( kptr - GETARR(key) < key->size && qptr - GETARR(query) < query->size ) { @@ -1019,8 +1019,8 @@ gsmlsign_consistent(PG_FUNCTION_ARGS) } else if (ISARRKEY(key)) { - uint32 *kptr = GETARR(key), - *qptr = GETARR(query); + uint32 *kptr = GETARR(key), + *qptr = GETARR(query); Assert( GIST_LEAF(entry) ); @@ -1079,7 +1079,7 @@ gsmlsign_consistent(PG_FUNCTION_ARGS) if ( ((double)Min(key->size, s->nelems)) / power >= GetSmlarLimit() ) { - int cnt = 0; + int cnt = 0; while( kptr - GETARR(key) < key->size && qptr - GETARR(query) < query->size ) { @@ -1094,7 +1094,7 @@ gsmlsign_consistent(PG_FUNCTION_ARGS) qptr++; } } - + if ( ((double)cnt) / power >= GetSmlarLimit() ) res = true; } @@ -1122,7 +1122,7 @@ gsmlsign_consistent(PG_FUNCTION_ARGS) sumQ = 0.0, sumK = 0.0; double maxKTF = getIdfMaxLimit(key); - + Assert( s->df ); if ( stat->info != s->info ) elog(ERROR,"Statistic and actual argument have different type"); @@ -1157,13 +1157,13 @@ gsmlsign_consistent(PG_FUNCTION_ARGS) break; case ST_COSINE: { - double power; + double power; power = sqrt( ((double)(key->size)) * ((double)(s->nelems)) ); for(i=0; inelems; i++) count += GETBIT(sign, HASHVAL(s->hash[i])); - + if ( ((double)count) / power >= GetSmlarLimit() ) res = true; } @@ -1183,7 +1183,7 @@ gsmlsign_consistent(PG_FUNCTION_ARGS) sumQ = 0.0, minK = -1.0; double maxKTF = getIdfMaxLimit(key); - + Assert( s->df ); if ( stat->info != s->info ) elog(ERROR,"Statistic and actual argument have different type"); @@ -1209,7 +1209,7 @@ gsmlsign_consistent(PG_FUNCTION_ARGS) { for(i=0; inelems; i++) count += GETBIT(sign, HASHVAL(s->hash[i])); - + if ( s->nelems == count || sqrt(((double)count) / ((double)(s->nelems))) >= GetSmlarLimit() ) res = true; } diff --git a/smlar_guc.c b/smlar_guc.c index d1cae32..8ff0ad3 100644 --- a/smlar_guc.c +++ b/smlar_guc.c @@ -39,7 +39,7 @@ SmlarLogAssign(bool newval, void *extra) static int smlar_smltype = ST_COSINE; static const struct config_enum_entry SmlarTypeOptions[] = { - {"cosine", ST_COSINE, false}, + {"cosine", ST_COSINE, false}, {"tfidf", ST_TFIDF, false}, {"overlap", ST_OVERLAP, false}, {NULL, 0, false} @@ -47,7 +47,7 @@ static const struct config_enum_entry SmlarTypeOptions[] = { static int smlar_tf_method = TF_N; static const struct config_enum_entry SmlarTFOptions[] = { - {"n", TF_N, false}, + {"n", TF_N, false}, {"log", TF_LOG, false}, {"const", TF_CONST, false}, {NULL, 0, false} @@ -199,12 +199,12 @@ GetSmlarUsePersistent(void) } PG_FUNCTION_INFO_V1(set_smlar_limit); -Datum set_smlar_limit(PG_FUNCTION_ARGS); +Datum set_smlar_limit(PG_FUNCTION_ARGS); Datum set_smlar_limit(PG_FUNCTION_ARGS) { - float4 nlimit = PG_GETARG_FLOAT4(0); - char buf[32]; + float4 nlimit = PG_GETARG_FLOAT4(0); + char buf[32]; /* init smlar guc */ initSmlarGUC(); @@ -220,7 +220,7 @@ set_smlar_limit(PG_FUNCTION_ARGS) } PG_FUNCTION_INFO_V1(show_smlar_limit); -Datum show_smlar_limit(PG_FUNCTION_ARGS); +Datum show_smlar_limit(PG_FUNCTION_ARGS); Datum show_smlar_limit(PG_FUNCTION_ARGS) { diff --git a/smlar_stat.c b/smlar_stat.c index 1007de8..9a563aa 100644 --- a/smlar_stat.c +++ b/smlar_stat.c @@ -41,7 +41,7 @@ initStatCache(MemoryContext ctx) if (PersistentDocStat && GetSmlarUsePersistent()) return PersistentDocStat; else { - int stat; + int stat; char buf[1024]; const char *tbl = GetSmlarTable(); StatCache *cache = NULL; @@ -49,7 +49,7 @@ initStatCache(MemoryContext ctx) if ( tbl == NULL || *tbl == '\0' ) elog(ERROR,"smlar.stattable is not defined"); - sprintf(buf,"SELECT * FROM \"%s\" ORDER BY 1;", tbl); + sprintf(buf,"SELECT * FROM \"%s\" ORDER BY 1;", tbl); SPI_connect(); stat = SPI_execute(buf, true, 0); @@ -62,7 +62,7 @@ initStatCache(MemoryContext ctx) } else { - int i; + int i; double totaldocs = 0.0; Oid ndocType = SPI_gettypeid(SPI_tuptable->tupdesc, 2); @@ -81,7 +81,7 @@ initStatCache(MemoryContext ctx) for(i=0; ivals[i], SPI_tuptable->tupdesc, 1, &isnullvalue); + Datum datum = SPI_getbinval(SPI_tuptable->vals[i], SPI_tuptable->tupdesc, 1, &isnullvalue); int64 ndoc; if (ndocType == INT4OID) @@ -115,7 +115,7 @@ initStatCache(MemoryContext ctx) else { size_t size = datumGetSize(datum, false, cache->info->typlen); - + cache->elems[i].datum = PointerGetDatum(cacheAlloc(ctx, size)); memcpy(DatumGetPointer(cache->elems[i].datum), DatumGetPointer(datum), size); } @@ -127,7 +127,7 @@ initStatCache(MemoryContext ctx) if ( totaldocs <= 0) elog(ERROR,"Total number of document is unknown"); cache->nelems = SPI_processed - 1; - + for(i=0;inelems;i++) { if ( totaldocs < cache->elems[i].idf )