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

Commit86d7802

Browse files
committed
Whack btree_gist code around until it has some small hope of building
on non-gcc compilers.
1 parentbf9d9bd commit86d7802

File tree

3 files changed

+41
-41
lines changed

3 files changed

+41
-41
lines changed

‎contrib/btree_gist/btree_text.c

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -65,13 +65,15 @@ static bytea *
6565
gbt_text_xfrm (bytea*leaf )
6666
{
6767
bytea*out=leaf;
68-
6968
int32ilen=VARSIZE (leaf)-VARHDRSZ;
7069
int32olen ;
71-
charsin[ilen+1];
72-
char*sou=NULL;
73-
memcpy ( (void*)&sin[0], (void*)VARDATA(leaf) ,ilen );
70+
char*sin;
71+
char*sou;
72+
73+
sin=palloc(ilen+1);
74+
memcpy (sin, (void*)VARDATA(leaf) ,ilen );
7475
sin[ilen]='\0';
76+
7577
olen=strxfrm (NULL,&sin[0],0 )+1;
7678
sou=palloc (olen );
7779
olen=strxfrm (sou ,&sin[0] ,olen );
@@ -80,7 +82,9 @@ gbt_text_xfrm ( bytea * leaf )
8082
out->vl_len=olen+1;
8183
memcpy( (void*)VARDATA(out),sou,olen-VARHDRSZ );
8284
((char*)out)[olen]='\0';
85+
8386
pfree(sou);
87+
pfree(sin);
8488

8589
returnout;
8690
}

‎contrib/btree_gist/btree_utils_num.c

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -200,19 +200,16 @@ gbt_num_consistent(
200200
}
201201

202202

203-
204-
205203
GIST_SPLITVEC*
206-
gbt_num_picksplit(constGistEntryVector*entryvec,GIST_SPLITVEC*v,constgbtree_ninfo*tinfo )
204+
gbt_num_picksplit(constGistEntryVector*entryvec,GIST_SPLITVEC*v,
205+
constgbtree_ninfo*tinfo )
207206
{
207+
OffsetNumberi,
208+
maxoff=entryvec->n-1;
209+
Nsrt*arr;
210+
intnbytes;
208211

209-
OffsetNumberi ,
210-
211-
maxoff=entryvec->n-1;
212-
213-
Nsrtarr[maxoff+1] ;
214-
intnbytes ;
215-
212+
arr= (Nsrt*)palloc((maxoff+1)*sizeof(Nsrt));
216213
nbytes= (maxoff+2)*sizeof(OffsetNumber);
217214
v->spl_left= (OffsetNumber*)palloc(nbytes);
218215
v->spl_right= (OffsetNumber*)palloc(nbytes);
@@ -248,7 +245,7 @@ gbt_num_picksplit( const GistEntryVector *entryvec, GIST_SPLITVEC *v, const gbtr
248245
}
249246
}
250247

251-
returnv;
248+
pfree(arr);
252249

250+
returnv;
253251
}
254-

‎contrib/btree_gist/btree_utils_var.c

Lines changed: 24 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -416,36 +416,35 @@ gbt_var_penalty ( float * res , const GISTENTRY * o , const GISTENTRY * n, const
416416
}
417417

418418

419-
staticint32gbt_vsrt_cmp (constVsrt*a ,constVsrt*b ,constgbtree_vinfo*tinfo )
420-
{
421-
GBT_VARKEY_Rar=gbt_var_key_readable (a->t );
422-
GBT_VARKEY_Rbr=gbt_var_key_readable (b->t );
423-
return (*tinfo->f_cmp) (ar.lower,br.lower );
424-
}
419+
/*
420+
* Fortunately, this sort comparsion routine needn't be reentrant...
421+
*/
422+
staticconstgbtree_vinfo*gbt_vsrt_cmp_tinfo;
425423

424+
staticint
425+
gbt_vsrt_cmp(constvoid*a,constvoid*b)
426+
{
427+
GBT_VARKEY_Rar=gbt_var_key_readable ( ((constVsrt*)a)->t );
428+
GBT_VARKEY_Rbr=gbt_var_key_readable ( ((constVsrt*)b)->t );
426429

430+
return (*gbt_vsrt_cmp_tinfo->f_cmp) (ar.lower,br.lower );
431+
}
427432

428433
externGIST_SPLITVEC*
429434
gbt_var_picksplit(constGistEntryVector*entryvec,GIST_SPLITVEC*v,constgbtree_vinfo*tinfo )
430435
{
431-
432-
OffsetNumberi ,
433-
maxoff=entryvec->n-1;
434-
435-
Vsrtarr[maxoff+1] ;
436+
OffsetNumberi,
437+
maxoff=entryvec->n-1;
438+
Vsrt*arr;
436439
intpfrcntr=0 ,
437440
svcntr=0 ,
438441
nbytes ;
439442
char*tst ,
440443
*cur ;
441-
442444
char**pfr=NULL ;
443445
GBT_VARKEY**sv=NULL;
444446

445-
staticintcmp (constvoid*a,constvoid*b ){
446-
returngbt_vsrt_cmp ((Vsrt*)a , (Vsrt*)b ,tinfo );
447-
}
448-
447+
arr= (Vsrt*)palloc((maxoff+1)*sizeof(Vsrt));
449448
nbytes= (maxoff+2)*sizeof(OffsetNumber);
450449
v->spl_left= (OffsetNumber*)palloc(nbytes);
451450
v->spl_right= (OffsetNumber*)palloc(nbytes);
@@ -482,8 +481,11 @@ gbt_var_picksplit( const GistEntryVector *entryvec, GIST_SPLITVEC *v, const gbtr
482481
}
483482

484483
/* sort */
485-
qsort ( (void*)&arr[FirstOffsetNumber],maxoff-FirstOffsetNumber+1,sizeof(Vsrt),cmp );
486-
484+
gbt_vsrt_cmp_tinfo=tinfo;
485+
qsort((void*)&arr[FirstOffsetNumber],
486+
maxoff-FirstOffsetNumber+1,
487+
sizeof(Vsrt),
488+
gbt_vsrt_cmp);
487489

488490
/* We do simply create two parts */
489491

@@ -545,18 +547,15 @@ gbt_var_picksplit( const GistEntryVector *entryvec, GIST_SPLITVEC *v, const gbtr
545547

546548
}
547549

548-
returnv;
550+
pfree(arr);
549551

552+
returnv;
550553
}
551554

552555

553-
554-
555-
556556
/*
557-
** The GiST consistent method
558-
*/
559-
557+
* The GiST consistent method
558+
*/
560559
externbool
561560
gbt_var_consistent(
562561
GBT_VARKEY_R*key,

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp