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

Commit5b5c83f

Browse files
committed
Oracle like currval behaviour.
1 parent465047d commit5b5c83f

File tree

1 file changed

+7
-21
lines changed

1 file changed

+7
-21
lines changed

‎src/backend/commands/sequence.c

Lines changed: 7 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -204,6 +204,7 @@ nextval (struct varlena * seqin)
204204

205205
/* open and WIntentLock sequence */
206206
elm=init_sequence ("nextval",seqname);
207+
pfree (seqname);
207208

208209
if (elm->last!=elm->cached )/* some numbers were cached */
209210
{
@@ -237,7 +238,7 @@ nextval (struct varlena * seqin)
237238
break;/* stop caching */
238239
if (seq->is_cycled!='t' )
239240
elog (WARN,"%s.nextval: got MAXVALUE (%d)",
240-
seqname,maxv);
241+
elm->name,maxv);
241242
next=minv;
242243
}
243244
else
@@ -252,7 +253,7 @@ nextval (struct varlena * seqin)
252253
break;/* stop caching */
253254
if (seq->is_cycled!='t' )
254255
elog (WARN,"%s.nextval: got MINVALUE (%d)",
255-
seqname,minv);
256+
elm->name,minv);
256257
next=maxv;
257258
}
258259
else
@@ -287,34 +288,19 @@ currval (struct varlena * seqin)
287288
{
288289
char*seqname=textout(seqin);
289290
SeqTableelm;
290-
Bufferbuf;
291-
SequenceTupleFormseq;
292-
ItemPointerDataiptr;
293291
int4result;
294292

295293
/* open and WIntentLock sequence */
296294
elm=init_sequence ("currval",seqname);
295+
pfree (seqname);
297296

298-
if (elm->last!=elm->cached )/*some numberswerecached */
297+
if (elm->increment==0 )/*nextval/read_infowerenot called */
299298
{
300-
return (elm->last);/* return last returned by nextval */
299+
elog (WARN,"%s.currval is not yet defined in this session",elm->name);
301300
}
302301

303-
seq=read_info ("currval",elm,&buf);
304-
305-
if (seq->is_called!='t' )
306-
{
307-
elog (WARN,"%s.currval: yet undefined (%s.nextval never called)",
308-
seqname,seqname);
309-
}
310-
result=seq->last_value;
302+
result=elm->last;
311303

312-
if (ReleaseBuffer (buf)==STATUS_ERROR )
313-
elog (WARN,"%s.currval: ReleaseBuffer failed",seqname);
314-
315-
ItemPointerSet(&iptr,0,FirstOffsetNumber);
316-
RelationUnsetSingleWLockPage (elm->rel,&iptr);
317-
318304
return (result);
319305

320306
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp