Thanks to visit codestin.com
Credit goes to www.scribd.com

0% found this document useful (0 votes)
18 views1 page

Postgres Pipelining

The document appears to contain a mixture of code and data, possibly related to a programming or database context. It includes various commands and parameters that suggest functionality related to data processing or querying. The overall structure is complex and may require specific knowledge to interpret fully.

Uploaded by

bonnymunga611
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
18 views1 page

Postgres Pipelining

The document appears to contain a mixture of code and data, possibly related to a programming or database context. It includes various commands and parameters that suggest functionality related to data processing or querying. The overall structure is complex and may require specific knowledge to interpret fully.

Uploaded by

bonnymunga611
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 1

C$@4 D<$B+ >$EA;$=F >$GB@4A+=+($A #$@@BA(+& >4?4;$%4'6 7B%%$'+ >$A=+4 H$B'!=GG$BA+ 74='G*!I$'JJJ !

9:1;(<&1)3-"(=>==?(!)415"-678(9@(A-*-%4-,B

D)&0C-/1%1#)/!→!!)415"-678(9@
74='G*!+*4!F$GB@4A+=+($A!I$'JJJ !
7B%%$'+4F!k4'6($A6f!+0""-/1!b9@c!V!9E
>4?4;$%@4A+!k4'6($A6f!,-$-*

!"#$#%&'()*'+),-./)
&0)1K 2( 345(6)0%!"#%*'7(8,9,3,:'7050; <.=) K>)?6

!"#$#%&'()*'+),-./)
LMJNJ-J!O6(A)!5(%4;(A4!P$F4
LMJNJ1J!QBAG+($A6!D66$G(=+4F!E(+*!5(%4;(A4!P$F4
LMJNJLJ!R*4A!+$!O64!5(%4;(A4!P$F4

;(<%S!%(%4;(A4!@$F4!=;;$E6!=%%;(G=+($A6!+$!64AF!=!SB4'&!E(+*$B+!*=?(A)!+$!'4=F!+*4!'46B;+!$I!+*4!%'4?($B6;&!64A+!SB4'&J!3=T(A)!=F?=A+=)4!$I!+*4!%(%4;(A4!@$F4U!=!G;(4A+!E(;;!E=(+!;466!I$'!+*4!64'?4'U!6(AG4!@B;+(%;4!SB4'(46V'46B;+6!G=A!<4!64A+V'4G4(?4F!(A!=!6(A);4
A4+E$'T!+'=A6=G+($AJ

R*(;4!%(%4;(A4!@$F4!%'$?(F46!=!6()A(WG=A+!%4'I$'@=AG4!<$$6+U!E'(+(A)!G;(4A+6!B6(A)!+*4!%(%4;(A4!@$F4!(6!@$'4!G$@%;4X!<4G=B64!(+!(A?$;?46!@=A=)(A)!=!SB4B4!$I!%4AF(A)!SB4'(46!=AF!WAF(A)!E*(G*!'46B;+!G$''46%$AF6!+$!E*(G*!SB4'&!(A!+*4!SB4B4J

5(%4;(A4!@$F4!=;6$!)4A4'=;;&!G$A6B@46!@$'4!@4@$'&!$A!<$+*!+*4!G;(4A+!=AF!64'?4'U!+*$B)*!G='4IB;!=AF!=))'466(?4!@=A=)4@4A+!$I!+*4!64AFV'4G4(?4!SB4B4!G=A!@(+()=+4!+*(6J!3*(6!=%%;(46!E*4+*4'!$'!A$+!+*4!G$AA4G+($A!(6!(A!<;$GT(A)!$'!A$A0<;$GT(A)!@$F4J

R*(;4!+*4!%(%4;(A4!D5Y!E=6!(A+'$FBG4F!(A!5$6+)'4789!-MU!(+!(6!=!G;(4A+06(F4!I4=+B'4!E*(G*!F$46AZ+!'4SB('4!6%4G(=;!64'?4'!6B%%$'+!=AF!E$'T6!$A!=A&!64'?4'!+*=+!6B%%$'+6!+*4!?L!4X+4AF4F!SB4'&!%'$+$G$;J

LMJNJ-JKO6(A)!5(%4;(A4!P$F4

3$!(66B4!%(%4;(A46U!+*4!=%%;(G=+($A!@B6+!6E(+G*!+*4!G$AA4G+($A!(A+$!%(%4;(A4!@$F4U!E*(G*!(6!F$A4!E(+*!PQenterPipelineModeJ!PQpipelineStatus!G=A!<4!B64F!+$!+46+!E*4+*4'!%(%4;(A4!@$F4!(6!=G+(?4J!YA!%(%4;(A4!@$F4U!$A;&!5@;+A40.+.B@,.()056'.+@!+*=+
B+(;([4!+*4!4X+4AF4F!SB4'&!%'$+$G$;!='4!%4'@(++4FU!G$@@=AF!6+'(A)6!G$A+=(A(A)!@B;+(%;4!789!G$@@=AF6!='4!F(6=;;$E4FU!=AF!6$!(6!COPYJ!O6(A)!6&AG*'$A$B6!G$@@=AF!4X4GB+($A!IBAG+($A6!6BG*!=6!PQfnU!PQexecU!PQexecParamsU!PQprepareU!PQexecPreparedU
PQdescribePreparedU!PQdescribePortalU!(6!=A!4''$'!G$AF(+($AJ!PQsendQuery!(6!=;6$!F(6=;;$E4FU!<4G=B64!(+!B646!+*4!6(@%;4!SB4'&!%'$+$G$;J!\AG4!=;;!F(6%=+G*4F!G$@@=AF6!*=?4!*=F!+*4('!'46B;+6!%'$G4664FU!=AF!+*4!4AF!%(%4;(A4!'46B;+!*=6!<44A!G$A6B@4FU
+*4!=%%;(G=+($A!@=&!'4+B'A!+$!A$A0%(%4;(A4F!@$F4!E(+*!PQexitPipelineModeJ

]$+4
Y+!(6!<46+!+$!B64!%(%4;(A4!@$F4!E(+*!;(<%S!(A!+.+C7*.AD'+E,=./)J!YI!B64F!(A!<;$GT(A)!@$F4!(+!(6
%$66(<;4!I$'!=!G;(4A+V64'?4'!F4=F;$GT!+$!$GGB'J!!"#$

!"#$#%#%#&'(()*+,-.)/0*/(

DI+4'!4A+4'(A)!%(%4;(A4!@$F4U!+*4!=%%;(G=+($A!F(6%=+G*46!'4SB46+6!B6(A)!PQsendQueryParams!$'!(+6!%'4%='4F0SB4'&!6(<;(A)!PQsendQueryPreparedJ!3*464!'4SB46+6!='4!SB4B4F!$A!+*4!G;(4A+06(F4!BA+(;!^B6*4F!+$!+*4!64'?4'_!+*(6!$GGB'6!E*4A!PQpipelineSync!(6
B64F!+$!46+=<;(6*!=!6&AG*'$A([=+($A!%$(A+!(A!+*4!%(%4;(A4U!$'!E*4A!PQflush!(6!G=;;4FJ!3*4!IBAG+($A6!PQsendPrepareU!PQsendDescribePreparedU!=AF!PQsendDescribePortal!=;6$!E$'T!(A!%(%4;(A4!@$F4J!`46B;+!%'$G466(A)!(6!F46G'(<4F!<4;$EJ

3*4!64'?4'!4X4GB+46!6+=+4@4A+6U!=AF!'4+B'A6!'46B;+6U!(A!+*4!$'F4'!+*4!G;(4A+!64AF6!+*4@J!3*4!64'?4'!E(;;!<4)(A!4X4GB+(A)!+*4!G$@@=AF6!(A!+*4!%(%4;(A4!(@@4F(=+4;&U!A$+!E=(+(A)!I$'!+*4!4AF!$I!+*4!%(%4;(A4J!]$+4!+*=+!'46B;+6!='4!<Ba4'4F!$A!+*4!64'?4'!6(F4_!+*4
64'?4'!^B6*46!+*=+!<Ba4'!E*4A!=!6&AG*'$A([=+($A!%$(A+!(6!46+=<;(6*4F!E(+*!PQpipelineSyncU!$'!E*4A!PQsendFlushRequest!(6!G=;;4FJ!YI!=A&!6+=+4@4A+!4AG$BA+4'6!=A!4''$'U!+*4!64'?4'!=<$'+6!+*4!GB''4A+!+'=A6=G+($A!=AF!F$46!A$+!4X4GB+4!=A&!6B<64SB4A+
G$@@=AF!(A!+*4!SB4B4!BA+(;!+*4!A4X+!6&AG*'$A([=+($A!%$(A+_!=!PGRES_PIPELINE_ABORTED!'46B;+!(6!%'$FBG4F!I$'!4=G*!6BG*!G$@@=AFJ!b3*(6!'4@=(A6!+'B4!4?4A!(I!+*4!G$@@=AF6!(A!+*4!%(%4;(A4!E$B;F!'$;;<=GT!+*4!+'=A6=G+($AJc!8B4'&!%'$G466(A)!'46B@46!=I+4'!+*4
6&AG*'$A([=+($A!%$(A+J

Y+Z6!WA4!I$'!$A4!$%4'=+($A!+$!F4%4AF!$A!+*4!'46B;+6!$I!=!%'($'!$A4_!I$'!4X=@%;4U!$A4!SB4'&!@=&!F4WA4!=!+=<;4!+*=+!+*4!A4X+!SB4'&!(A!+*4!6=@4!%(%4;(A4!B646J!7(@(;=';&U!=A!=%%;(G=+($A!@=&!G'4=+4!=!A=@4F!%'4%='4F!6+=+4@4A+!=AF!4X4GB+4!(+!E(+*!;=+4'!6+=+4@4A+6!(A
+*4!6=@4!%(%4;(A4J

!"#$#%#1#&2034/((*+,-5/()67(

3$!%'$G466!+*4!'46B;+!$I!$A4!SB4'&!(A!=!%(%4;(A4U!+*4!=%%;(G=+($A!G=;;6!PQgetResult!'4%4=+4F;&!=AF!*=AF;46!4=G*!'46B;+!BA+(;!PQgetResult!'4+B'A6!AB;;J!3*4!'46B;+!I'$@!+*4!A4X+!SB4'&!(A!+*4!%(%4;(A4!@=&!+*4A!<4!'4+'(4?4F!B6(A)!PQgetResult!=)=(A!=AF!+*4!G&G;4
'4%4=+4FJ!3*4!=%%;(G=+($A!*=AF;46!(AF(?(FB=;!6+=+4@4A+!'46B;+6!=6!A$'@=;J!R*4A!+*4!'46B;+6!$I!=;;!+*4!SB4'(46!(A!+*4!%(%4;(A4!*=?4!<44A!'4+B'A4FU!PQgetResult!'4+B'A6!=!'46B;+!G$A+=(A(A)!+*4!6+=+B6!?=;B4!PGRES_PIPELINE_SYNC

3*4!G;(4A+!@=&!G*$$64!+$!F4I4'!'46B;+!%'$G466(A)!BA+(;!+*4!G$@%;4+4!%(%4;(A4!*=6!<44A!64A+U!$'!(A+4';4=?4!+*=+!E(+*!64AF(A)!IB'+*4'!SB4'(46!(A!+*4!%(%4;(A4_!644!F)A6'.+%!"#$#G#"J

3$!4A+4'!6(A);40'$E!@$F4U!G=;;!PQsetSingleRowMode!<4I$'4!'4+'(4?(A)!'46B;+6!E(+*!PQgetResultJ!3*(6!@$F4!64;4G+($A!(6!4a4G+(?4!$A;&!I$'!+*4!SB4'&!GB''4A+;&!<4(A)!%'$G4664FJ!Q$'!@$'4!(AI$'@=+($A!$A!+*4!B64!$I!PQsetSingleRowModeU!'4I4'!+$!F)A6'.+%!"#HJ

PQgetResult!<4*=?46!+*4!6=@4!=6!I$'!A$'@=;!=6&AG*'$A$B6!%'$G466(A)!4XG4%+!+*=+!(+!@=&!G$A+=(A!+*4!A4E!PGresult!+&%46!PGRES_PIPELINE_SYNC!=AF!PGRES_PIPELINE_ABORTEDJ!PGRES_PIPELINE_SYNC!(6!'4%$'+4F!4X=G+;&!$AG4!I$'!4=G*
PQpipelineSync!=+!+*4!G$''46%$AF(A)!%$(A+!(A!+*4!%(%4;(A4J!PGRES_PIPELINE_ABORTED!(6!4@(++4F!(A!%;=G4!$I!=!A$'@=;!SB4'&!'46B;+!I$'!+*4!W'6+!4''$'!=AF!=;;!6B<64SB4A+!'46B;+6!BA+(;!+*4!A4X+!PGRES_PIPELINE_SYNC_!644!F)A6'.+%!"#$#G#!J

PQisBusyU!PQconsumeInputU!4+G!$%4'=+4!=6!A$'@=;!E*4A!%'$G466(A)!%(%4;(A4!'46B;+6J!YA!%='+(GB;='U!=!G=;;!+$!PQisBusy!(A!+*4!@(FF;4!$I!=!%(%4;(A4!'4+B'A6!2!(I!+*4!'46B;+6!I$'!=;;!+*4!SB4'(46!(66B4F!6$!I='!*=?4!<44A!G$A6B@4FJ

;(<%S!F$46!A$+!%'$?(F4!=A&!(AI$'@=+($A!+$!+*4!=%%;(G=+($A!=<$B+!+*4!SB4'&!GB''4A+;&!<4(A)!%'$G4664F!b4XG4%+!+*=+!PQgetResult!'4+B'A6!AB;;!+$!(AF(G=+4!+*=+!E4!6+='+!'4+B'A(A)!+*4!'46B;+6!$I!A4X+!SB4'&cJ!3*4!=%%;(G=+($A!@B6+!T44%!+'=GT!$I!+*4!$'F4'!(A!E*(G*!(+
64A+!SB4'(46U!+$!=66$G(=+4!+*4@!E(+*!+*4('!G$''46%$AF(A)!'46B;+6J!D%%;(G=+($A6!E(;;!+&%(G=;;&!B64!=!6+=+4!@=G*(A4!$'!=!QYQ\!SB4B4!I$'!+*(6J

!"#$#%#!#&80030-9:+;6*+,

Q'$@!+*4!G;(4A+Z6!%4'6%4G+(?4U!=I+4'!PQresultStatus!'4+B'A6!PGRES_FATAL_ERRORU!+*4!%(%4;(A4!(6!^=))4F!=6!=<$'+4FJ!PQresultStatus!E(;;!'4%$'+!=!PGRES_PIPELINE_ABORTED!'46B;+!I$'!4=G*!'4@=(A(A)!SB4B4F!$%4'=+($A!(A!=A!=<$'+4F!%(%4;(A4J!3*4!'46B;+!I$'
PQpipelineSync!(6!'4%$'+4F!=6!PGRES_PIPELINE_SYNC!+$!6()A=;!+*4!4AF!$I!+*4!=<$'+4F!%(%4;(A4!=AF!'46B@%+($A!$I!A$'@=;!'46B;+!%'$G466(A)J

3*4!G;(4A+!@B6+!%'$G466!'46B;+6!E(+*!PQgetResult!FB'(A)!4''$'!'4G$?4'&J

YI!+*4!%(%4;(A4!B64F!=A!(@%;(G(+!+'=A6=G+($AU!+*4A!$%4'=+($A6!+*=+!*=?4!=;'4=F&!4X4GB+4F!='4!'$;;4F!<=GT!=AF!$%4'=+($A6!+*=+!E4'4!SB4B4F!+$!I$;;$E!+*4!I=(;4F!$%4'=+($A!='4!6T(%%4F!4A+('4;&J!3*4!6=@4!<4*=?($'!*$;F6!(I!+*4!%(%4;(A4!6+='+6!=AF!G$@@(+6!=!6(A);4
4X%;(G(+!+'=A6=G+($A!b(J4J!+*4!W'6+!6+=+4@4A+!(6!BEGIN!=AF!+*4!;=6+!(6!COMMITc!4XG4%+!+*=+!+*4!6466($A!'4@=(A6!(A!=A!=<$'+4F!+'=A6=G+($A!6+=+4!=+!+*4!4AF!$I!+*4!%(%4;(A4J!YI!=!%(%4;(A4!G$A+=(A6!@B;+(%;4!4X%;(G(+!+'=A6=G+($A6U!=;;!+'=A6=G+($A6!+*=+!G$@@(++4F!%'($'!+$!+*4
4''$'!'4@=(A!G$@@(++4FU!+*4!GB''4A+;&!(A0%'$)'466!+'=A6=G+($A!(6!=<$'+4FU!=AF!=;;!6B<64SB4A+!$%4'=+($A6!='4!6T(%%4F!G$@%;4+4;&U!(AG;BF(A)!6B<64SB4A+!+'=A6=G+($A6J!YI!=!%(%4;(A4!6&AG*'$A([=+($A!%$(A+!$GGB'6!E(+*!=A!4X%;(G(+!+'=A6=G+($A!<;$GT!(A!=<$'+4F!6+=+4U!+*4
A4X+!%(%4;(A4!E(;;!<4G$@4!=<$'+4F!(@@4F(=+4;&!BA;466!+*4!A4X+!G$@@=AF!%B+6!+*4!+'=A6=G+($A!(A!A$'@=;!@$F4!E(+*!ROLLBACKJ

]$+4
3*4!G;(4A+!@B6+!A$+!=66B@4!+*=+!E$'T!(6!G$@@(++4F!E*4A!(+!64AF6!=!COMMIT!d!$A;&!E*4A
+*4!G$''46%$AF(A)!'46B;+!(6!'4G4(?4F!+$!G$AW'@!+*4!G$@@(+!(6!G$@%;4+4J!e4G=B64!4''$'6
=''(?4!=6&AG*'$A$B6;&U!+*4!=%%;(G=+($A!A44F6!+$!<4!=<;4!+$!'46+='+!I'$@!+*4!;=6+!'4G4(?4F
G$@@(++4F!G*=A)4!=AF!'464AF!E$'T!F$A4!=I+4'!+*=+!%$(A+!(I!6$@4+*(A)!)$46!E'$A)J

!"#$#%#"#&'+7/06/:<*+,-5/()67-2034/((*+,-=+;-.)/0>-?*(@:74A

3$!=?$(F!F4=F;$GT6!$A!;=')4!%(%4;(A46!+*4!G;(4A+!6*$B;F!<4!6+'BG+B'4F!='$BAF!=!A$A0<;$GT(A)!4?4A+!;$$%!B6(A)!$%4'=+(A)!6&6+4@!I=G(;(+(46!6BG*!=6!selectU!pollU!WaitForMultipleObjectExU!4+GJ

3*4!G;(4A+!=%%;(G=+($A!6*$B;F!)4A4'=;;&!@=(A+=(A!=!SB4B4!$I!E$'T!'4@=(A(A)!+$!<4!F(6%=+G*4F!=AF!=!SB4B4!$I!E$'T!+*=+!*=6!<44A!F(6%=+G*4F!<B+!A$+!&4+!*=F!(+6!'46B;+6!%'$G4664FJ!R*4A!+*4!6$GT4+!(6!E'(+=<;4!(+!6*$B;F!F(6%=+G*!@$'4!E$'TJ!R*4A!+*4!6$GT4+!(6
'4=F=<;4!(+!6*$B;F!'4=F!'46B;+6!=AF!%'$G466!+*4@U!@=+G*(A)!+*4@!B%!+$!+*4!A4X+!4A+'&!(A!(+6!G$''46%$AF(A)!'46B;+6!SB4B4J!e=64F!$A!=?=(;=<;4!@4@$'&U!'46B;+6!I'$@!+*4!6$GT4+!6*$B;F!<4!'4=F!I'4SB4A+;&f!+*4'4Z6!A$!A44F!+$!E=(+!BA+(;!+*4!%(%4;(A4!4AF!+$!'4=F!+*4
'46B;+6J!5(%4;(A46!6*$B;F!<4!6G$%4F!+$!;$)(G=;!BA(+6!$I!E$'TU!B6B=;;&!b<B+!A$+!A4G466='(;&c!$A4!+'=A6=G+($A!%4'!%(%4;(A4J!3*4'4Z6!A$!A44F!+$!4X(+!%(%4;(A4!@$F4!=AF!'404A+4'!(+!<4+E44A!%(%4;(A46U!$'!+$!E=(+!I$'!$A4!%(%4;(A4!+$!WA(6*!<4I$'4!64AF(A)!+*4!A4X+J

DA!4X=@%;4!B6(A)!select()!=AF!=!6(@%;4!6+=+4!@=G*(A4!+$!+'=GT!64A+!=AF!'4G4(?4F!E$'T!(6!(A!src/test/modules/libpq_pipeline/libpq_pipeline.c!(A!+*4!5$6+)'4789!6$B'G4!F(6+'(<B+($AJ

LMJNJ1JKQBAG+($A6!D66$G(=+4F!E(+*!5(%4;(A4!P$F4

PQpipelineStatus

`4+B'A6!+*4!GB''4A+!%(%4;(A4!@$F4!6+=+B6!$I!+*4!;(<%S!G$AA4G+($AJ

PGpipelineStatus PQpipelineStatus(const PGconn *conn);

PQpipelineStatus!G=A!'4+B'A!$A4!$I!+*4!I$;;$E(A)!?=;B46f

PQ_PIPELINE_ON

3*4!;(<%S!G$AA4G+($A!(6!(A!%(%4;(A4!@$F4J

PQ_PIPELINE_OFF

3*4!;(<%S!G$AA4G+($A!(6!A$+!(A!%(%4;(A4!@$F4J

PQ_PIPELINE_ABORTED

3*4!;(<%S!G$AA4G+($A!(6!(A!%(%4;(A4!@$F4!=AF!=A!4''$'!$GGB''4F!E*(;4!%'$G466(A)!+*4!GB''4A+!%(%4;(A4J!3*4!=<$'+4F!^=)!(6!G;4='4F!E*4A!PQgetResult!'4+B'A6!=!'46B;+!$I!+&%4!PGRES_PIPELINE_SYNCJ

PQenterPipelineMode

#=B646!=!G$AA4G+($A!+$!4A+4'!%(%4;(A4!@$F4!(I!(+!(6!GB''4A+;&!(F;4!$'!=;'4=F&!(A!%(%4;(A4!@$F4J

int PQenterPipelineMode(PGconn *conn);

`4+B'A6!-!I$'!6BGG466J!`4+B'A6!2!=AF!*=6!A$!4a4G+!(I!+*4!G$AA4G+($A!(6!A$+!GB''4A+;&!(F;4U!(J4JU!(+!*=6!=!'46B;+!'4=F&U!$'!(+!(6!E=(+(A)!I$'!@$'4!(A%B+!I'$@!+*4!64'?4'U!4+GJ!3*(6!IBAG+($A!F$46!A$+!=G+B=;;&!64AF!=A&+*(A)!+$!+*4!64'?4'U!(+!gB6+!G*=A)46!+*4!;(<%S
G$AA4G+($A!6+=+4J

PQexitPipelineMode

#=B646!=!G$AA4G+($A!+$!4X(+!%(%4;(A4!@$F4!(I!(+!(6!GB''4A+;&!(A!%(%4;(A4!@$F4!E(+*!=A!4@%+&!SB4B4!=AF!A$!%4AF(A)!'46B;+6J

int PQexitPipelineMode(PGconn *conn);

`4+B'A6!-!I$'!6BGG466J!`4+B'A6!-!=AF!+=T46!A$!=G+($A!(I!A$+!(A!%(%4;(A4!@$F4J!YI!+*4!GB''4A+!6+=+4@4A+!(6AZ+!WA(6*4F!%'$G466(A)U!$'!PQgetResult!*=6!A$+!<44A!G=;;4F!+$!G$;;4G+!'46B;+6!I'$@!=;;!%'4?($B6;&!64A+!SB4'&U!'4+B'A6!2!b(A!E*(G*!G=64U!B64
PQerrorMessage!+$!)4+!@$'4!(AI$'@=+($A!=<$B+!+*4!I=(;B'4cJ

PQpipelineSync

P='T6!=!6&AG*'$A([=+($A!%$(A+!(A!=!%(%4;(A4!<&!64AF(A)!=!@;+A,=)@@5E)!=AF!^B6*(A)!+*4!64AF!<Ba4'J!3*(6!64'?46!=6!+*4!F4;(@(+4'!$I!=A!(@%;(G(+!+'=A6=G+($A!=AF!=A!4''$'!'4G$?4'&!%$(A+_!644!F)A6'.+%!"#$#G#!J

int PQpipelineSync(PGconn *conn);

`4+B'A6!-!I$'!6BGG466J!`4+B'A6!2!(I!+*4!G$AA4G+($A!(6!A$+!(A!%(%4;(A4!@$F4!$'!64AF(A)!=!@;+A,=)@@5E)!I=(;4FJ

PQsendFlushRequest

74AF6!=!'4SB46+!I$'!+*4!64'?4'!+$!^B6*!(+6!$B+%B+!<Ba4'J

int PQsendFlushRequest(PGconn *conn);

`4+B'A6!-!I$'!6BGG466J!`4+B'A6!2!$A!=A&!I=(;B'4J

3*4!64'?4'!^B6*46!(+6!$B+%B+!<Ba4'!=B+$@=+(G=;;&!=6!=!'46B;+!$I!PQpipelineSync!<4(A)!G=;;4FU!$'!$A!=A&!'4SB46+!E*4A!A$+!(A!%(%4;(A4!@$F4_!+*(6!IBAG+($A!(6!B64IB;!+$!G=B64!+*4!64'?4'!+$!^B6*!(+6!$B+%B+!<Ba4'!(A!%(%4;(A4!@$F4!E(+*$B+!46+=<;(6*(A)!=
6&AG*'$A([=+($A!%$(A+J!]$+4!+*=+!+*4!'4SB46+!(6!A$+!(+64;I!^B6*4F!+$!+*4!64'?4'!=B+$@=+(G=;;&_!B64!PQflush!(I!A4G466='&J

LMJNJLJKR*4A!+$!O64!5(%4;(A4!P$F4

PBG*!;(T4!=6&AG*'$A$B6!SB4'&!@$F4U!+*4'4!(6!A$!@4=A(A)IB;!%4'I$'@=AG4!$?4'*4=F!E*4A!B6(A)!%(%4;(A4!@$F4J!Y+!(AG'4=646!G;(4A+!=%%;(G=+($A!G$@%;4X(+&U!=AF!4X+'=!G=B+($A!(6!'4SB('4F!+$!%'4?4A+!G;(4A+V64'?4'!F4=F;$GT6U!<B+!%(%4;(A4!@$F4!G=A!$a4'!G$A6(F4'=<;4
%4'I$'@=AG4!(@%'$?4@4A+6U!(A!4XG*=A)4!I$'!(AG'4=64F!@4@$'&!B6=)4!I'$@!;4=?(A)!6+=+4!='$BAF!;$A)4'J

5(%4;(A4!@$F4!(6!@$6+!B64IB;!E*4A!+*4!64'?4'!(6!F(6+=A+U!(J4JU!A4+E$'T!;=+4AG&!bh%(A)!+(@4ic!(6!*()*U!=AF!=;6$!E*4A!@=A&!6@=;;!$%4'=+($A6!='4!<4(A)!%4'I$'@4F!(A!'=%(F!6BGG466($AJ!3*4'4!(6!B6B=;;&!;466!<4A4W+!(A!B6(A)!%(%4;(A4F!G$@@=AF6!E*4A!4=G*!SB4'&!+=T46
@=A&!@B;+(%;46!$I!+*4!G;(4A+V64'?4'!'$BAF0+'(%!+(@4!+$!4X4GB+4J!D!-2206+=+4@4A+!$%4'=+($A!'BA!$A!=!64'?4'!L22!@6!'$BAF0+'(%0+(@4!=E=&!E$B;F!+=T4!L2!64G$AF6!(A!A4+E$'T!;=+4AG&!=;$A4!E(+*$B+!%(%4;(A(A)_!E(+*!%(%4;(A(A)!(+!@=&!6%4AF!=6!;(++;4!=6!2JL!6!E=(+(A)!I$'
'46B;+6!I'$@!+*4!64'?4'J

O64!%(%4;(A4F!G$@@=AF6!E*4A!&$B'!=%%;(G=+($A!F$46!;$+6!$I!6@=;;!INSERTU!UPDATE!=AF!DELETE!$%4'=+($A6!+*=+!G=AZ+!4=6(;&!<4!+'=A6I$'@4F!(A+$!$%4'=+($A6!$A!64+6U!$'!(A+$!=!COPY!$%4'=+($AJ

5(%4;(A4!@$F4!(6!A$+!B64IB;!E*4A!(AI$'@=+($A!I'$@!$A4!$%4'=+($A!(6!'4SB('4F!<&!+*4!G;(4A+!+$!%'$FBG4!+*4!A4X+!$%4'=+($AJ!YA!6BG*!G=646U!+*4!G;(4A+!E$B;F!*=?4!+$!(A+'$FBG4!=!6&AG*'$A([=+($A!%$(A+!=AF!E=(+!I$'!=!IB;;!G;(4A+V64'?4'!'$BAF0+'(%!+$!)4+!+*4!'46B;+6!(+
A44F6J!C$E4?4'U!(+Z6!$I+4A!%$66(<;4!+$!=FgB6+!+*4!G;(4A+!F46()A!+$!4XG*=A)4!+*4!'4SB('4F!(AI$'@=+($A!64'?4'06(F4J!`4=F0@$F(I&0E'(+4!G&G;46!='4!46%4G(=;;&!)$$F!G=AF(F=+46_!I$'!4X=@%;4f

BEGIN;
SELECT x FROM mytable WHERE id = 42 FOR UPDATE;
-- result: x=2
-- client adds 1 to x:
UPDATE mytable SET x = 3 WHERE id = 42;
COMMIT;

G$B;F!<4!@BG*!@$'4!4jG(4A+;&!F$A4!E(+*f

UPDATE mytable SET x = x + 1 WHERE id = 42;

5(%4;(A(A)!(6!;466!B64IB;U!=AF!@$'4!G$@%;4XU!E*4A!=!6(A);4!%(%4;(A4!G$A+=(A6!@B;+(%;4!+'=A6=G+($A6!b644!F)A6'.+%!"#$#G#!cJ

!"#$
!3*4!G;(4A+!E(;;!<;$GT!+'&(A)!+$!64AF!SB4'(46!+$!+*4!64'?4'U!<B+!+*4!64'?4'!E(;;!<;$GT!+'&(A)!+$!64AF!'46B;+6!+$!+*4!G;(4A+!I'$@!SB4'(46!(+!*=6!=;'4=F&!%'$G4664FJ!3*(6!$A;&!$GGB'6!E*4A!+*4!G;(4A+!64AF6!4A$B)*!SB4'(46!+$!W;;!<$+*!(+6!$B+%B+!<Ba4'!=AF!+*4!64'?4'Z6
'4G4(?4!<Ba4'!<4I$'4!(+!6E(+G*46!+$!%'$G466(A)!(A%B+!I'$@!+*4!64'?4'U!<B+!(+Z6!*='F!+$!%'4F(G+!4X=G+;&!E*4A!+*=+!E(;;!*=%%4AJ

&0)1K 2( K>)?6
LMJMJKD6&AG*'$A$B6!#$@@=AF!5'$G466(A)K <.=) KLMJ/JK`4+'(4?(A)!8B4'&!`46B;+6!`$E0<&0`$E

!"#$%&'()**+(&%),
-
YI!&$B!644!=A&+*(A)!(A!+*4!F$GB@4A+=+($A!+*=+!(6!A$+!G$''4G+U!F$46!A$+!@=+G*!&$B'!4X%4'(4AG4!E(+*!+*4!%='+(GB;='!I4=+B'4!$'!'4SB('46!IB'+*4'!G;='(WG=+($AU!%;4=64!B64!1;#4(.)"C!+$!'4%$'+!=!F$GB@4A+=+($A!(66B4J

!"#$%&'(!)*#&'!"!+),-().(+)/,0&1!"!23)01(!)415"-678!"!+)/1%&1
#$%&'()*+!,!-../01211!3*4!5$6+)'4789!:;$<=;!>4?4;$%@4A+!:'$B%

You might also like