Datum gmol_compress(PG_FUNCTION_ARGS) { GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0); GISTENTRY *retval = entry; if (entry->leafkey) { CROMol m = constructROMol(DatumGetMolP(entry->key)); retval = (GISTENTRY *) palloc(sizeof(GISTENTRY)); gistentryinit(*retval, PointerGetDatum(makeMolSignature(m)), entry->rel, entry->page, entry->offset, false); freeCROMol(m); } else if ( !ISALLTRUE(DatumGetPointer(entry->key)) ) { retval = compressAllTrue(entry); } PG_RETURN_POINTER(retval); }
Datum gsfp_compress(PG_FUNCTION_ARGS) { GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0); GISTENTRY *retval = entry; if (entry->leafkey) { CSfp fp = constructCSfp(DatumGetSfpP(entry->key)); retval = (GISTENTRY *) palloc(sizeof(GISTENTRY)); gistentryinit(*retval, PointerGetDatum(makeSfpSignature(fp, NUMBITS)), entry->rel, entry->page, entry->offset, false); freeCSfp(fp); } else if ( !ISALLTRUE(DatumGetPointer(entry->key)) ) { retval = compressAllTrue(entry); } PG_RETURN_POINTER(retval); }
Datum greaction_compress(PG_FUNCTION_ARGS) { GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0); GISTENTRY *retval = entry; if (entry->leafkey) { CChemicalReaction rxn = constructChemReact(DatumGetMolP(entry->key)); retval = (GISTENTRY *) palloc(sizeof(GISTENTRY)); gistentryinit(*retval, PointerGetDatum(makeReactionSign(rxn)), entry->rel, entry->page, entry->offset, false); freeChemReaction(rxn); } else if ( !ISALLTRUE(DatumGetPointer(entry->key)) ) { retval = compressAllTrue(entry); } PG_RETURN_POINTER(retval); }
Datum gsfp_compress(PG_FUNCTION_ARGS) { GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0); GISTENTRY *retval = entry; if (entry->leafkey) { MolSparseFingerPrint fp = constructMolSparseFingerPrint(DatumGetSparseFingerPrintP(entry->key)); retval = (GISTENTRY *) palloc(sizeof(GISTENTRY)); gistentryinit(*retval, PointerGetDatum(makeSignatureSparseFingerPrint(fp, NUMBITS)), entry->rel, entry->page, entry->offset, FALSE); freeMolSparseFingerPrint(fp); } else if ( !ISALLTRUE(DatumGetPointer(entry->key)) ) { retval = compressAllTrue(entry); } PG_RETURN_POINTER(retval); }