Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit7f12995

Browse files
committed
Detoast query in g_intbig_consistent and copy query in g_int_consistent
1 parentef524d1 commit7f12995

File tree

2 files changed

+15
-10
lines changed

2 files changed

+15
-10
lines changed

‎contrib/intarray/_int_gist.c

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -32,17 +32,19 @@ Datum
3232
g_int_consistent(PG_FUNCTION_ARGS)
3333
{
3434
GISTENTRY*entry= (GISTENTRY*)PG_GETARG_POINTER(0);
35-
ArrayType*query= (ArrayType*)PG_GETARG_POINTER(1);
35+
ArrayType*query= (ArrayType*)PG_DETOAST_DATUM_COPY(PG_GETARG_POINTER(1));
3636
StrategyNumberstrategy= (StrategyNumber)PG_GETARG_UINT16(2);
3737
boolretval;
3838

39-
if (strategy==BooleanSearchStrategy)
40-
PG_RETURN_BOOL(execconsistent((QUERYTYPE*)query,
39+
if (strategy==BooleanSearchStrategy) {
40+
retval=execconsistent((QUERYTYPE*)query,
4141
(ArrayType*)DatumGetPointer(entry->key),
42-
GIST_LEAF(entry)));
42+
GIST_LEAF(entry));
43+
44+
pfree(query );
45+
PG_RETURN_BOOL(retval);
46+
}
4347

44-
/* XXX are we sure it's safe to scribble on the query object here? */
45-
/* XXX what about toasted input? */
4648
/* sort query for fast search, key is already sorted */
4749
CHECKARRVALID(query);
4850
if (ARRISVOID(query))
@@ -82,6 +84,7 @@ g_int_consistent(PG_FUNCTION_ARGS)
8284
default:
8385
retval= FALSE;
8486
}
87+
pfree(query );
8588
PG_RETURN_BOOL(retval);
8689
}
8790

‎contrib/intarray/_intbig_gist.c

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -497,7 +497,7 @@ Datum
497497
g_intbig_consistent(PG_FUNCTION_ARGS)
498498
{
499499
GISTENTRY*entry= (GISTENTRY*)PG_GETARG_POINTER(0);
500-
ArrayType*query= (ArrayType*)PG_GETARG_POINTER(1);
500+
ArrayType*query= (ArrayType*)PG_DETOAST_DATUM(PG_GETARG_POINTER(1));
501501
StrategyNumberstrategy= (StrategyNumber)PG_GETARG_UINT16(2);
502502
boolretval;
503503

@@ -506,12 +506,13 @@ g_intbig_consistent(PG_FUNCTION_ARGS)
506506

507507
if (strategy==BooleanSearchStrategy)
508508
{
509-
PG_RETURN_BOOL(signconsistent((QUERYTYPE*)query,
509+
retval=signconsistent((QUERYTYPE*)query,
510510
GETSIGN(DatumGetPointer(entry->key)),
511-
false));
511+
false);
512+
PG_FREE_IF_COPY(query,1 );
513+
returnretval;
512514
}
513515

514-
/* XXX what about toasted input? */
515516
CHECKARRVALID(query);
516517
if (ARRISVOID(query))
517518
return FALSE;
@@ -597,5 +598,6 @@ g_intbig_consistent(PG_FUNCTION_ARGS)
597598
default:
598599
retval= FALSE;
599600
}
601+
PG_FREE_IF_COPY(query,1 );
600602
PG_RETURN_BOOL(retval);
601603
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp