window.err 168 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837
  1. Registering pre-existing tables
  2. int4_tbl
  3. INT4_TBL
  4. tenk1
  5. tenk2
  6. <sql-statement>
  7. --
  8. -- WINDOW FUNCTIONS
  9. --
  10. CREATE TEMPORARY TABLE empsalary (
  11. depname varchar,
  12. empno bigint,
  13. salary int,
  14. enroll_date date
  15. );
  16. </sql-statement>
  17. <sql-statement>
  18. INSERT INTO empsalary VALUES
  19. ('develop', 10, 5200, '2007-08-01'),
  20. ('sales', 1, 5000, '2006-10-01'),
  21. ('personnel', 5, 3500, '2007-12-10'),
  22. ('sales', 4, 4800, '2007-08-08'),
  23. ('personnel', 2, 3900, '2006-12-23'),
  24. ('develop', 7, 4200, '2008-01-01'),
  25. ('develop', 9, 4500, '2008-01-01'),
  26. ('sales', 3, 4800, '2007-08-01'),
  27. ('develop', 8, 6000, '2006-10-01'),
  28. ('develop', 11, 5200, '2007-08-15');
  29. </sql-statement>
  30. <sql-statement>
  31. SELECT depname, empno, salary, sum(salary) OVER (PARTITION BY depname) FROM empsalary ORDER BY depname, salary;
  32. </sql-statement>
  33. <sql-statement>
  34. SELECT depname, empno, salary, rank() OVER (PARTITION BY depname ORDER BY salary) FROM empsalary;
  35. </sql-statement>
  36. <sql-statement>
  37. -- with GROUP BY
  38. SELECT four, ten, SUM(SUM(four)) OVER (PARTITION BY four), AVG(ten) FROM tenk1
  39. GROUP BY four, ten ORDER BY four, ten;
  40. </sql-statement>
  41. <sql-statement>
  42. SELECT depname, empno, salary, sum(salary) OVER w FROM empsalary WINDOW w AS (PARTITION BY depname);
  43. </sql-statement>
  44. <sql-statement>
  45. SELECT depname, empno, salary, rank() OVER w FROM empsalary WINDOW w AS (PARTITION BY depname ORDER BY salary) ORDER BY rank() OVER w;
  46. </sql-statement>
  47. -stdin-:<main>: Error: Parse Sql
  48. -stdin-:<main>:1:121: Error: Over is not allowed in: ORDER BY
  49. SELECT depname, empno, salary, rank() OVER w FROM empsalary WINDOW w AS (PARTITION BY depname ORDER BY salary) ORDER BY rank() OVER w;
  50. ^
  51. <sql-statement>
  52. -- empty window specification
  53. SELECT COUNT(*) OVER () FROM tenk1 WHERE unique2 < 10;
  54. </sql-statement>
  55. <sql-statement>
  56. SELECT COUNT(*) OVER w FROM tenk1 WHERE unique2 < 10 WINDOW w AS ();
  57. </sql-statement>
  58. <sql-statement>
  59. -- no window operation
  60. SELECT four FROM tenk1 WHERE FALSE WINDOW w AS (PARTITION BY ten);
  61. </sql-statement>
  62. <sql-statement>
  63. -- cumulative aggregate
  64. SELECT sum(four) OVER (PARTITION BY ten ORDER BY unique2) AS sum_1, ten, four FROM tenk1 WHERE unique2 < 10;
  65. </sql-statement>
  66. <sql-statement>
  67. SELECT row_number() OVER (ORDER BY unique2) FROM tenk1 WHERE unique2 < 10;
  68. </sql-statement>
  69. <sql-statement>
  70. SELECT rank() OVER (PARTITION BY four ORDER BY ten) AS rank_1, ten, four FROM tenk1 WHERE unique2 < 10;
  71. </sql-statement>
  72. <sql-statement>
  73. SELECT dense_rank() OVER (PARTITION BY four ORDER BY ten), ten, four FROM tenk1 WHERE unique2 < 10;
  74. </sql-statement>
  75. <sql-statement>
  76. SELECT percent_rank() OVER (PARTITION BY four ORDER BY ten), ten, four FROM tenk1 WHERE unique2 < 10;
  77. </sql-statement>
  78. -stdin-:<main>: Error: Type annotation
  79. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem, At function: PgResultItem
  80. SELECT percent_rank() OVER (PARTITION BY four ORDER BY ten), ten, four FROM tenk1 WHERE unique2 < 10;
  81. ^
  82. -stdin-:<main>:1:8: Error: At function: PgWindowCall
  83. SELECT percent_rank() OVER (PARTITION BY four ORDER BY ten), ten, four FROM tenk1 WHERE unique2 < 10;
  84. ^
  85. -stdin-:<main>:1:8: Error: Unsupported function: percent_rank
  86. SELECT percent_rank() OVER (PARTITION BY four ORDER BY ten), ten, four FROM tenk1 WHERE unique2 < 10;
  87. ^
  88. <sql-statement>
  89. SELECT cume_dist() OVER (PARTITION BY four ORDER BY ten), ten, four FROM tenk1 WHERE unique2 < 10;
  90. </sql-statement>
  91. -stdin-:<main>: Error: Type annotation
  92. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem, At function: PgResultItem
  93. SELECT cume_dist() OVER (PARTITION BY four ORDER BY ten), ten, four FROM tenk1 WHERE unique2 < 10;
  94. ^
  95. -stdin-:<main>:1:8: Error: At function: PgWindowCall
  96. SELECT cume_dist() OVER (PARTITION BY four ORDER BY ten), ten, four FROM tenk1 WHERE unique2 < 10;
  97. ^
  98. -stdin-:<main>:1:8: Error: Unsupported function: cume_dist
  99. SELECT cume_dist() OVER (PARTITION BY four ORDER BY ten), ten, four FROM tenk1 WHERE unique2 < 10;
  100. ^
  101. <sql-statement>
  102. SELECT ntile(3) OVER (ORDER BY ten, four), ten, four FROM tenk1 WHERE unique2 < 10;
  103. </sql-statement>
  104. -stdin-:<main>: Error: Type annotation
  105. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem, At function: PgResultItem
  106. SELECT ntile(3) OVER (ORDER BY ten, four), ten, four FROM tenk1 WHERE unique2 < 10;
  107. ^
  108. -stdin-:<main>:1:8: Error: At function: PgWindowCall
  109. SELECT ntile(3) OVER (ORDER BY ten, four), ten, four FROM tenk1 WHERE unique2 < 10;
  110. ^
  111. -stdin-:<main>:1:8: Error: Unsupported function: ntile
  112. SELECT ntile(3) OVER (ORDER BY ten, four), ten, four FROM tenk1 WHERE unique2 < 10;
  113. ^
  114. <sql-statement>
  115. SELECT ntile(NULL) OVER (ORDER BY ten, four), ten, four FROM tenk1 LIMIT 2;
  116. </sql-statement>
  117. -stdin-:<main>: Error: Type annotation
  118. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem, At function: PgResultItem
  119. SELECT ntile(NULL) OVER (ORDER BY ten, four), ten, four FROM tenk1 LIMIT 2;
  120. ^
  121. -stdin-:<main>:1:8: Error: At function: PgWindowCall
  122. SELECT ntile(NULL) OVER (ORDER BY ten, four), ten, four FROM tenk1 LIMIT 2;
  123. ^
  124. -stdin-:<main>:1:8: Error: Unsupported function: ntile
  125. SELECT ntile(NULL) OVER (ORDER BY ten, four), ten, four FROM tenk1 LIMIT 2;
  126. ^
  127. <sql-statement>
  128. SELECT lag(ten) OVER (PARTITION BY four ORDER BY ten), ten, four FROM tenk1 WHERE unique2 < 10;
  129. </sql-statement>
  130. <sql-statement>
  131. SELECT lag(ten, four) OVER (PARTITION BY four ORDER BY ten), ten, four FROM tenk1 WHERE unique2 < 10;
  132. </sql-statement>
  133. -stdin-:<main>: Error: Type annotation
  134. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem, At function: PgResultItem
  135. SELECT lag(ten, four) OVER (PARTITION BY four ORDER BY ten), ten, four FROM tenk1 WHERE unique2 < 10;
  136. ^
  137. -stdin-:<main>:1:8: Error: At function: PgWindowCall
  138. SELECT lag(ten, four) OVER (PARTITION BY four ORDER BY ten), ten, four FROM tenk1 WHERE unique2 < 10;
  139. ^
  140. -stdin-:<main>:1:8: Error: Expected one argument in functionlag
  141. SELECT lag(ten, four) OVER (PARTITION BY four ORDER BY ten), ten, four FROM tenk1 WHERE unique2 < 10;
  142. ^
  143. <sql-statement>
  144. SELECT lag(ten, four, 0) OVER (PARTITION BY four ORDER BY ten), ten, four FROM tenk1 WHERE unique2 < 10;
  145. </sql-statement>
  146. -stdin-:<main>: Error: Type annotation
  147. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem, At function: PgResultItem
  148. SELECT lag(ten, four, 0) OVER (PARTITION BY four ORDER BY ten), ten, four FROM tenk1 WHERE unique2 < 10;
  149. ^
  150. -stdin-:<main>:1:8: Error: At function: PgWindowCall
  151. SELECT lag(ten, four, 0) OVER (PARTITION BY four ORDER BY ten), ten, four FROM tenk1 WHERE unique2 < 10;
  152. ^
  153. -stdin-:<main>:1:8: Error: Expected one argument in functionlag
  154. SELECT lag(ten, four, 0) OVER (PARTITION BY four ORDER BY ten), ten, four FROM tenk1 WHERE unique2 < 10;
  155. ^
  156. <sql-statement>
  157. SELECT lag(ten, four, 0.7) OVER (PARTITION BY four ORDER BY ten), ten, four FROM tenk1 WHERE unique2 < 10 ORDER BY four, ten;
  158. </sql-statement>
  159. -stdin-:<main>: Error: Type annotation
  160. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem, At function: PgResultItem
  161. SELECT lag(ten, four, 0.7) OVER (PARTITION BY four ORDER BY ten), ten, four FROM tenk1 WHERE unique2 < 10 ORDER BY four, ten;
  162. ^
  163. -stdin-:<main>:1:8: Error: At function: PgWindowCall
  164. SELECT lag(ten, four, 0.7) OVER (PARTITION BY four ORDER BY ten), ten, four FROM tenk1 WHERE unique2 < 10 ORDER BY four, ten;
  165. ^
  166. -stdin-:<main>:1:8: Error: Expected one argument in functionlag
  167. SELECT lag(ten, four, 0.7) OVER (PARTITION BY four ORDER BY ten), ten, four FROM tenk1 WHERE unique2 < 10 ORDER BY four, ten;
  168. ^
  169. <sql-statement>
  170. SELECT lead(ten) OVER (PARTITION BY four ORDER BY ten), ten, four FROM tenk1 WHERE unique2 < 10;
  171. </sql-statement>
  172. <sql-statement>
  173. SELECT lead(ten * 2, 1) OVER (PARTITION BY four ORDER BY ten), ten, four FROM tenk1 WHERE unique2 < 10;
  174. </sql-statement>
  175. -stdin-:<main>: Error: Type annotation
  176. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem, At function: PgResultItem
  177. SELECT lead(ten * 2, 1) OVER (PARTITION BY four ORDER BY ten), ten, four FROM tenk1 WHERE unique2 < 10;
  178. ^
  179. -stdin-:<main>:1:8: Error: At function: PgWindowCall
  180. SELECT lead(ten * 2, 1) OVER (PARTITION BY four ORDER BY ten), ten, four FROM tenk1 WHERE unique2 < 10;
  181. ^
  182. -stdin-:<main>:1:8: Error: Expected one argument in functionlead
  183. SELECT lead(ten * 2, 1) OVER (PARTITION BY four ORDER BY ten), ten, four FROM tenk1 WHERE unique2 < 10;
  184. ^
  185. <sql-statement>
  186. SELECT lead(ten * 2, 1, -1) OVER (PARTITION BY four ORDER BY ten), ten, four FROM tenk1 WHERE unique2 < 10;
  187. </sql-statement>
  188. -stdin-:<main>: Error: Type annotation
  189. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem, At function: PgResultItem
  190. SELECT lead(ten * 2, 1, -1) OVER (PARTITION BY four ORDER BY ten), ten, four FROM tenk1 WHERE unique2 < 10;
  191. ^
  192. -stdin-:<main>:1:8: Error: At function: PgWindowCall
  193. SELECT lead(ten * 2, 1, -1) OVER (PARTITION BY four ORDER BY ten), ten, four FROM tenk1 WHERE unique2 < 10;
  194. ^
  195. -stdin-:<main>:1:8: Error: Expected one argument in functionlead
  196. SELECT lead(ten * 2, 1, -1) OVER (PARTITION BY four ORDER BY ten), ten, four FROM tenk1 WHERE unique2 < 10;
  197. ^
  198. <sql-statement>
  199. SELECT lead(ten * 2, 1, -1.4) OVER (PARTITION BY four ORDER BY ten), ten, four FROM tenk1 WHERE unique2 < 10 ORDER BY four, ten;
  200. </sql-statement>
  201. -stdin-:<main>: Error: Type annotation
  202. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem, At function: PgResultItem
  203. SELECT lead(ten * 2, 1, -1.4) OVER (PARTITION BY four ORDER BY ten), ten, four FROM tenk1 WHERE unique2 < 10 ORDER BY four, ten;
  204. ^
  205. -stdin-:<main>:1:8: Error: At function: PgWindowCall
  206. SELECT lead(ten * 2, 1, -1.4) OVER (PARTITION BY four ORDER BY ten), ten, four FROM tenk1 WHERE unique2 < 10 ORDER BY four, ten;
  207. ^
  208. -stdin-:<main>:1:8: Error: Expected one argument in functionlead
  209. SELECT lead(ten * 2, 1, -1.4) OVER (PARTITION BY four ORDER BY ten), ten, four FROM tenk1 WHERE unique2 < 10 ORDER BY four, ten;
  210. ^
  211. <sql-statement>
  212. SELECT first_value(ten) OVER (PARTITION BY four ORDER BY ten), ten, four FROM tenk1 WHERE unique2 < 10;
  213. </sql-statement>
  214. <sql-statement>
  215. -- last_value returns the last row of the frame, which is CURRENT ROW in ORDER BY window.
  216. SELECT last_value(four) OVER (ORDER BY ten), ten, four FROM tenk1 WHERE unique2 < 10;
  217. </sql-statement>
  218. <sql-statement>
  219. SELECT last_value(ten) OVER (PARTITION BY four), ten, four FROM
  220. (SELECT * FROM tenk1 WHERE unique2 < 10 ORDER BY four, ten)s
  221. ORDER BY four, ten;
  222. </sql-statement>
  223. <sql-statement>
  224. SELECT nth_value(ten, four + 1) OVER (PARTITION BY four), ten, four
  225. FROM (SELECT * FROM tenk1 WHERE unique2 < 10 ORDER BY four, ten)s;
  226. </sql-statement>
  227. -stdin-:<main>: Error: Type annotation
  228. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem, At function: PgResultItem
  229. SELECT nth_value(ten, four + 1) OVER (PARTITION BY four), ten, four
  230. ^
  231. -stdin-:<main>:1:8: Error: At function: PgWindowCall
  232. SELECT nth_value(ten, four + 1) OVER (PARTITION BY four), ten, four
  233. ^
  234. -stdin-:<main>:1:8: Error: Unsupported function: nth_value
  235. SELECT nth_value(ten, four + 1) OVER (PARTITION BY four), ten, four
  236. ^
  237. <sql-statement>
  238. SELECT ten, two, sum(hundred) AS gsum, sum(sum(hundred)) OVER (PARTITION BY two ORDER BY ten) AS wsum
  239. FROM tenk1 GROUP BY ten, two;
  240. </sql-statement>
  241. <sql-statement>
  242. SELECT count(*) OVER (PARTITION BY four), four FROM (SELECT * FROM tenk1 WHERE two = 1)s WHERE unique2 < 10;
  243. </sql-statement>
  244. <sql-statement>
  245. SELECT (count(*) OVER (PARTITION BY four ORDER BY ten) +
  246. sum(hundred) OVER (PARTITION BY four ORDER BY ten))::varchar AS cntsum
  247. FROM tenk1 WHERE unique2 < 10;
  248. </sql-statement>
  249. <sql-statement>
  250. -- opexpr with different windows evaluation.
  251. SELECT * FROM(
  252. SELECT count(*) OVER (PARTITION BY four ORDER BY ten) +
  253. sum(hundred) OVER (PARTITION BY two ORDER BY ten) AS total,
  254. count(*) OVER (PARTITION BY four ORDER BY ten) AS fourcount,
  255. sum(hundred) OVER (PARTITION BY two ORDER BY ten) AS twosum
  256. FROM tenk1
  257. )sub
  258. WHERE total <> fourcount + twosum;
  259. </sql-statement>
  260. <sql-statement>
  261. SELECT avg(four) OVER (PARTITION BY four ORDER BY thousand / 100) FROM tenk1 WHERE unique2 < 10;
  262. </sql-statement>
  263. <sql-statement>
  264. SELECT ten, two, sum(hundred) AS gsum, sum(sum(hundred)) OVER win AS wsum
  265. FROM tenk1 GROUP BY ten, two WINDOW win AS (PARTITION BY two ORDER BY ten);
  266. </sql-statement>
  267. <sql-statement>
  268. -- more than one window with GROUP BY
  269. SELECT sum(salary),
  270. row_number() OVER (ORDER BY depname),
  271. sum(sum(salary)) OVER (ORDER BY depname DESC)
  272. FROM empsalary GROUP BY depname;
  273. </sql-statement>
  274. -stdin-:<main>: Error: Type annotation
  275. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem
  276. -- more than one window with GROUP BY
  277. ^
  278. -stdin-:<main>:1:1: Error: Duplicated member: sum
  279. -- more than one window with GROUP BY
  280. ^
  281. <sql-statement>
  282. -- identical windows with different names
  283. SELECT sum(salary) OVER w1, count(*) OVER w2
  284. FROM empsalary WINDOW w1 AS (ORDER BY salary), w2 AS (ORDER BY salary);
  285. </sql-statement>
  286. <sql-statement>
  287. -- subplan
  288. SELECT lead(ten, (SELECT two FROM tenk1 WHERE s.unique2 = unique2)) OVER (PARTITION BY four ORDER BY ten)
  289. FROM tenk1 s WHERE unique2 < 10;
  290. </sql-statement>
  291. -stdin-:<main>: Error: Type annotation
  292. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem, At function: PgResultItem
  293. -- subplan
  294. ^
  295. -stdin-:<main>:2:8: Error: At function: PgWindowCall
  296. SELECT lead(ten, (SELECT two FROM tenk1 WHERE s.unique2 = unique2)) OVER (PARTITION BY four ORDER BY ten)
  297. ^
  298. -stdin-:<main>:2:8: Error: Expected one argument in functionlead
  299. SELECT lead(ten, (SELECT two FROM tenk1 WHERE s.unique2 = unique2)) OVER (PARTITION BY four ORDER BY ten)
  300. ^
  301. <sql-statement>
  302. -- empty table
  303. SELECT count(*) OVER (PARTITION BY four) FROM (SELECT * FROM tenk1 WHERE FALSE)s;
  304. </sql-statement>
  305. <sql-statement>
  306. -- mixture of agg/wfunc in the same window
  307. SELECT sum(salary) OVER w, rank() OVER w FROM empsalary WINDOW w AS (PARTITION BY depname ORDER BY salary DESC);
  308. </sql-statement>
  309. <sql-statement>
  310. -- strict aggs
  311. SELECT empno, depname, salary, bonus, depadj, MIN(bonus) OVER (ORDER BY empno), MAX(depadj) OVER () FROM(
  312. SELECT *,
  313. CASE WHEN enroll_date < '2008-01-01' THEN 2008 - extract(YEAR FROM enroll_date) END * 500 AS bonus,
  314. CASE WHEN
  315. AVG(salary) OVER (PARTITION BY depname) < salary
  316. THEN 200 END AS depadj FROM empsalary
  317. )s;
  318. </sql-statement>
  319. -stdin-:<main>: Error: Type annotation
  320. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem, At function: PgSelect, At function: PgSetItem
  321. -- strict aggs
  322. ^
  323. -stdin-:<main>:4:13: Error: Star is incompatible to column reference
  324. CASE WHEN enroll_date < '2008-01-01' THEN 2008 - extract(YEAR FROM enroll_date) END * 500 AS bonus,
  325. ^
  326. -stdin-:<main>:4:70: Error: Star is incompatible to column reference
  327. CASE WHEN enroll_date < '2008-01-01' THEN 2008 - extract(YEAR FROM enroll_date) END * 500 AS bonus,
  328. ^
  329. <sql-statement>
  330. -- window function over ungrouped agg over empty row set (bug before 9.1)
  331. SELECT SUM(COUNT(f1)) OVER () FROM int4_tbl WHERE f1=42;
  332. </sql-statement>
  333. <sql-statement>
  334. -- window function with ORDER BY an expression involving aggregates (9.1 bug)
  335. select ten,
  336. sum(unique1) + sum(unique2) as res,
  337. rank() over (order by sum(unique1) + sum(unique2)) as rank
  338. from tenk1
  339. group by ten order by ten;
  340. </sql-statement>
  341. <sql-statement>
  342. -- window and aggregate with GROUP BY expression (9.2 bug)
  343. explain (costs off)
  344. select first_value(max(x)) over (), y
  345. from (select unique1 as x, ten+four as y from tenk1) ss
  346. group by y;
  347. </sql-statement>
  348. -stdin-:<main>: Error: Parse Sql
  349. -stdin-:<main>:1:1: Error: RawStmt: alternative is not implemented yet : 276
  350. -- window and aggregate with GROUP BY expression (9.2 bug)
  351. ^
  352. <sql-statement>
  353. -- test non-default frame specifications
  354. SELECT four, ten,
  355. sum(ten) over (partition by four order by ten),
  356. last_value(ten) over (partition by four order by ten)
  357. FROM (select distinct ten, four from tenk1) ss;
  358. </sql-statement>
  359. <sql-statement>
  360. SELECT four, ten,
  361. sum(ten) over (partition by four order by ten range between unbounded preceding and current row),
  362. last_value(ten) over (partition by four order by ten range between unbounded preceding and current row)
  363. FROM (select distinct ten, four from tenk1) ss;
  364. </sql-statement>
  365. -stdin-:<main>: Error: Type annotation
  366. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem
  367. SELECT four, ten,
  368. ^
  369. -stdin-:<main>:2:16: Error: At function: PgWindow
  370. sum(ten) over (partition by four order by ten range between unbounded preceding and current row),
  371. ^
  372. -stdin-:<main>:2:16: Error: Unsupported frame type: range
  373. sum(ten) over (partition by four order by ten range between unbounded preceding and current row),
  374. ^
  375. -stdin-:<main>:3:23: Error: At function: PgWindow
  376. last_value(ten) over (partition by four order by ten range between unbounded preceding and current row)
  377. ^
  378. -stdin-:<main>:3:23: Error: Unsupported frame type: range
  379. last_value(ten) over (partition by four order by ten range between unbounded preceding and current row)
  380. ^
  381. <sql-statement>
  382. SELECT four, ten,
  383. sum(ten) over (partition by four order by ten range between unbounded preceding and unbounded following),
  384. last_value(ten) over (partition by four order by ten range between unbounded preceding and unbounded following)
  385. FROM (select distinct ten, four from tenk1) ss;
  386. </sql-statement>
  387. -stdin-:<main>: Error: Type annotation
  388. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem
  389. SELECT four, ten,
  390. ^
  391. -stdin-:<main>:2:16: Error: At function: PgWindow
  392. sum(ten) over (partition by four order by ten range between unbounded preceding and unbounded following),
  393. ^
  394. -stdin-:<main>:2:16: Error: Unsupported frame type: range
  395. sum(ten) over (partition by four order by ten range between unbounded preceding and unbounded following),
  396. ^
  397. -stdin-:<main>:3:23: Error: At function: PgWindow
  398. last_value(ten) over (partition by four order by ten range between unbounded preceding and unbounded following)
  399. ^
  400. -stdin-:<main>:3:23: Error: Unsupported frame type: range
  401. last_value(ten) over (partition by four order by ten range between unbounded preceding and unbounded following)
  402. ^
  403. <sql-statement>
  404. SELECT four, ten/4 as two,
  405. sum(ten/4) over (partition by four order by ten/4 range between unbounded preceding and current row),
  406. last_value(ten/4) over (partition by four order by ten/4 range between unbounded preceding and current row)
  407. FROM (select distinct ten, four from tenk1) ss;
  408. </sql-statement>
  409. -stdin-:<main>: Error: Type annotation
  410. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem
  411. SELECT four, ten/4 as two,
  412. ^
  413. -stdin-:<main>:2:18: Error: At function: PgWindow
  414. sum(ten/4) over (partition by four order by ten/4 range between unbounded preceding and current row),
  415. ^
  416. -stdin-:<main>:2:18: Error: Unsupported frame type: range
  417. sum(ten/4) over (partition by four order by ten/4 range between unbounded preceding and current row),
  418. ^
  419. -stdin-:<main>:3:25: Error: At function: PgWindow
  420. last_value(ten/4) over (partition by four order by ten/4 range between unbounded preceding and current row)
  421. ^
  422. -stdin-:<main>:3:25: Error: Unsupported frame type: range
  423. last_value(ten/4) over (partition by four order by ten/4 range between unbounded preceding and current row)
  424. ^
  425. <sql-statement>
  426. SELECT four, ten/4 as two,
  427. sum(ten/4) over (partition by four order by ten/4 rows between unbounded preceding and current row),
  428. last_value(ten/4) over (partition by four order by ten/4 rows between unbounded preceding and current row)
  429. FROM (select distinct ten, four from tenk1) ss;
  430. </sql-statement>
  431. <sql-statement>
  432. SELECT sum(unique1) over (order by four range between current row and unbounded following),
  433. unique1, four
  434. FROM tenk1 WHERE unique1 < 10;
  435. </sql-statement>
  436. -stdin-:<main>: Error: Type annotation
  437. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem
  438. SELECT sum(unique1) over (order by four range between current row and unbounded following),
  439. ^
  440. -stdin-:<main>:1:26: Error: At function: PgWindow
  441. SELECT sum(unique1) over (order by four range between current row and unbounded following),
  442. ^
  443. -stdin-:<main>:1:26: Error: Unsupported frame type: range
  444. SELECT sum(unique1) over (order by four range between current row and unbounded following),
  445. ^
  446. <sql-statement>
  447. SELECT sum(unique1) over (rows between current row and unbounded following),
  448. unique1, four
  449. FROM tenk1 WHERE unique1 < 10;
  450. </sql-statement>
  451. <sql-statement>
  452. SELECT sum(unique1) over (rows between 2 preceding and 2 following),
  453. unique1, four
  454. FROM tenk1 WHERE unique1 < 10;
  455. </sql-statement>
  456. <sql-statement>
  457. SELECT sum(unique1) over (rows between 2 preceding and 2 following exclude no others),
  458. unique1, four
  459. FROM tenk1 WHERE unique1 < 10;
  460. </sql-statement>
  461. <sql-statement>
  462. SELECT sum(unique1) over (rows between 2 preceding and 2 following exclude current row),
  463. unique1, four
  464. FROM tenk1 WHERE unique1 < 10;
  465. </sql-statement>
  466. -stdin-:<main>: Error: Type annotation
  467. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem
  468. SELECT sum(unique1) over (rows between 2 preceding and 2 following exclude current row),
  469. ^
  470. -stdin-:<main>:1:26: Error: At function: PgWindow
  471. SELECT sum(unique1) over (rows between 2 preceding and 2 following exclude current row),
  472. ^
  473. -stdin-:<main>:1:26: Error: Excludes are not supported
  474. SELECT sum(unique1) over (rows between 2 preceding and 2 following exclude current row),
  475. ^
  476. <sql-statement>
  477. SELECT sum(unique1) over (rows between 2 preceding and 2 following exclude group),
  478. unique1, four
  479. FROM tenk1 WHERE unique1 < 10;
  480. </sql-statement>
  481. -stdin-:<main>: Error: Type annotation
  482. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem
  483. SELECT sum(unique1) over (rows between 2 preceding and 2 following exclude group),
  484. ^
  485. -stdin-:<main>:1:26: Error: At function: PgWindow
  486. SELECT sum(unique1) over (rows between 2 preceding and 2 following exclude group),
  487. ^
  488. -stdin-:<main>:1:26: Error: Excludes are not supported
  489. SELECT sum(unique1) over (rows between 2 preceding and 2 following exclude group),
  490. ^
  491. <sql-statement>
  492. SELECT sum(unique1) over (rows between 2 preceding and 2 following exclude ties),
  493. unique1, four
  494. FROM tenk1 WHERE unique1 < 10;
  495. </sql-statement>
  496. -stdin-:<main>: Error: Type annotation
  497. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem
  498. SELECT sum(unique1) over (rows between 2 preceding and 2 following exclude ties),
  499. ^
  500. -stdin-:<main>:1:26: Error: At function: PgWindow
  501. SELECT sum(unique1) over (rows between 2 preceding and 2 following exclude ties),
  502. ^
  503. -stdin-:<main>:1:26: Error: Excludes are not supported
  504. SELECT sum(unique1) over (rows between 2 preceding and 2 following exclude ties),
  505. ^
  506. <sql-statement>
  507. SELECT first_value(unique1) over (ORDER BY four rows between current row and 2 following exclude current row),
  508. unique1, four
  509. FROM tenk1 WHERE unique1 < 10;
  510. </sql-statement>
  511. -stdin-:<main>: Error: Type annotation
  512. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem
  513. SELECT first_value(unique1) over (ORDER BY four rows between current row and 2 following exclude current row),
  514. ^
  515. -stdin-:<main>:1:34: Error: At function: PgWindow
  516. SELECT first_value(unique1) over (ORDER BY four rows between current row and 2 following exclude current row),
  517. ^
  518. -stdin-:<main>:1:34: Error: Excludes are not supported
  519. SELECT first_value(unique1) over (ORDER BY four rows between current row and 2 following exclude current row),
  520. ^
  521. <sql-statement>
  522. SELECT first_value(unique1) over (ORDER BY four rows between current row and 2 following exclude group),
  523. unique1, four
  524. FROM tenk1 WHERE unique1 < 10;
  525. </sql-statement>
  526. -stdin-:<main>: Error: Type annotation
  527. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem
  528. SELECT first_value(unique1) over (ORDER BY four rows between current row and 2 following exclude group),
  529. ^
  530. -stdin-:<main>:1:34: Error: At function: PgWindow
  531. SELECT first_value(unique1) over (ORDER BY four rows between current row and 2 following exclude group),
  532. ^
  533. -stdin-:<main>:1:34: Error: Excludes are not supported
  534. SELECT first_value(unique1) over (ORDER BY four rows between current row and 2 following exclude group),
  535. ^
  536. <sql-statement>
  537. SELECT first_value(unique1) over (ORDER BY four rows between current row and 2 following exclude ties),
  538. unique1, four
  539. FROM tenk1 WHERE unique1 < 10;
  540. </sql-statement>
  541. -stdin-:<main>: Error: Type annotation
  542. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem
  543. SELECT first_value(unique1) over (ORDER BY four rows between current row and 2 following exclude ties),
  544. ^
  545. -stdin-:<main>:1:34: Error: At function: PgWindow
  546. SELECT first_value(unique1) over (ORDER BY four rows between current row and 2 following exclude ties),
  547. ^
  548. -stdin-:<main>:1:34: Error: Excludes are not supported
  549. SELECT first_value(unique1) over (ORDER BY four rows between current row and 2 following exclude ties),
  550. ^
  551. <sql-statement>
  552. SELECT last_value(unique1) over (ORDER BY four rows between current row and 2 following exclude current row),
  553. unique1, four
  554. FROM tenk1 WHERE unique1 < 10;
  555. </sql-statement>
  556. -stdin-:<main>: Error: Type annotation
  557. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem
  558. SELECT last_value(unique1) over (ORDER BY four rows between current row and 2 following exclude current row),
  559. ^
  560. -stdin-:<main>:1:33: Error: At function: PgWindow
  561. SELECT last_value(unique1) over (ORDER BY four rows between current row and 2 following exclude current row),
  562. ^
  563. -stdin-:<main>:1:33: Error: Excludes are not supported
  564. SELECT last_value(unique1) over (ORDER BY four rows between current row and 2 following exclude current row),
  565. ^
  566. <sql-statement>
  567. SELECT last_value(unique1) over (ORDER BY four rows between current row and 2 following exclude group),
  568. unique1, four
  569. FROM tenk1 WHERE unique1 < 10;
  570. </sql-statement>
  571. -stdin-:<main>: Error: Type annotation
  572. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem
  573. SELECT last_value(unique1) over (ORDER BY four rows between current row and 2 following exclude group),
  574. ^
  575. -stdin-:<main>:1:33: Error: At function: PgWindow
  576. SELECT last_value(unique1) over (ORDER BY four rows between current row and 2 following exclude group),
  577. ^
  578. -stdin-:<main>:1:33: Error: Excludes are not supported
  579. SELECT last_value(unique1) over (ORDER BY four rows between current row and 2 following exclude group),
  580. ^
  581. <sql-statement>
  582. SELECT last_value(unique1) over (ORDER BY four rows between current row and 2 following exclude ties),
  583. unique1, four
  584. FROM tenk1 WHERE unique1 < 10;
  585. </sql-statement>
  586. -stdin-:<main>: Error: Type annotation
  587. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem
  588. SELECT last_value(unique1) over (ORDER BY four rows between current row and 2 following exclude ties),
  589. ^
  590. -stdin-:<main>:1:33: Error: At function: PgWindow
  591. SELECT last_value(unique1) over (ORDER BY four rows between current row and 2 following exclude ties),
  592. ^
  593. -stdin-:<main>:1:33: Error: Excludes are not supported
  594. SELECT last_value(unique1) over (ORDER BY four rows between current row and 2 following exclude ties),
  595. ^
  596. <sql-statement>
  597. SELECT sum(unique1) over (rows between 2 preceding and 1 preceding),
  598. unique1, four
  599. FROM tenk1 WHERE unique1 < 10;
  600. </sql-statement>
  601. <sql-statement>
  602. SELECT sum(unique1) over (rows between 1 following and 3 following),
  603. unique1, four
  604. FROM tenk1 WHERE unique1 < 10;
  605. </sql-statement>
  606. <sql-statement>
  607. SELECT sum(unique1) over (rows between unbounded preceding and 1 following),
  608. unique1, four
  609. FROM tenk1 WHERE unique1 < 10;
  610. </sql-statement>
  611. <sql-statement>
  612. SELECT sum(unique1) over (w range between current row and unbounded following),
  613. unique1, four
  614. FROM tenk1 WHERE unique1 < 10 WINDOW w AS (order by four);
  615. </sql-statement>
  616. -stdin-:<main>: Error: Type annotation
  617. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem
  618. SELECT sum(unique1) over (w range between current row and unbounded following),
  619. ^
  620. -stdin-:<main>:1:26: Error: At function: PgWindow
  621. SELECT sum(unique1) over (w range between current row and unbounded following),
  622. ^
  623. -stdin-:<main>:1:26: Error: Window reference is not supported
  624. SELECT sum(unique1) over (w range between current row and unbounded following),
  625. ^
  626. <sql-statement>
  627. SELECT sum(unique1) over (w range between unbounded preceding and current row exclude current row),
  628. unique1, four
  629. FROM tenk1 WHERE unique1 < 10 WINDOW w AS (order by four);
  630. </sql-statement>
  631. -stdin-:<main>: Error: Type annotation
  632. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem
  633. SELECT sum(unique1) over (w range between unbounded preceding and current row exclude current row),
  634. ^
  635. -stdin-:<main>:1:26: Error: At function: PgWindow
  636. SELECT sum(unique1) over (w range between unbounded preceding and current row exclude current row),
  637. ^
  638. -stdin-:<main>:1:26: Error: Window reference is not supported
  639. SELECT sum(unique1) over (w range between unbounded preceding and current row exclude current row),
  640. ^
  641. <sql-statement>
  642. SELECT sum(unique1) over (w range between unbounded preceding and current row exclude group),
  643. unique1, four
  644. FROM tenk1 WHERE unique1 < 10 WINDOW w AS (order by four);
  645. </sql-statement>
  646. -stdin-:<main>: Error: Type annotation
  647. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem
  648. SELECT sum(unique1) over (w range between unbounded preceding and current row exclude group),
  649. ^
  650. -stdin-:<main>:1:26: Error: At function: PgWindow
  651. SELECT sum(unique1) over (w range between unbounded preceding and current row exclude group),
  652. ^
  653. -stdin-:<main>:1:26: Error: Window reference is not supported
  654. SELECT sum(unique1) over (w range between unbounded preceding and current row exclude group),
  655. ^
  656. <sql-statement>
  657. SELECT sum(unique1) over (w range between unbounded preceding and current row exclude ties),
  658. unique1, four
  659. FROM tenk1 WHERE unique1 < 10 WINDOW w AS (order by four);
  660. </sql-statement>
  661. -stdin-:<main>: Error: Type annotation
  662. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem
  663. SELECT sum(unique1) over (w range between unbounded preceding and current row exclude ties),
  664. ^
  665. -stdin-:<main>:1:26: Error: At function: PgWindow
  666. SELECT sum(unique1) over (w range between unbounded preceding and current row exclude ties),
  667. ^
  668. -stdin-:<main>:1:26: Error: Window reference is not supported
  669. SELECT sum(unique1) over (w range between unbounded preceding and current row exclude ties),
  670. ^
  671. <sql-statement>
  672. SELECT first_value(unique1) over w,
  673. nth_value(unique1, 2) over w AS nth_2,
  674. last_value(unique1) over w, unique1, four
  675. FROM tenk1 WHERE unique1 < 10
  676. WINDOW w AS (order by four range between current row and unbounded following);
  677. </sql-statement>
  678. -stdin-:<main>: Error: Type annotation
  679. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem
  680. SELECT first_value(unique1) over w,
  681. ^
  682. -stdin-:<main>:5:13: Error: At function: PgWindow
  683. WINDOW w AS (order by four range between current row and unbounded following);
  684. ^
  685. -stdin-:<main>:5:13: Error: Unsupported frame type: range
  686. WINDOW w AS (order by four range between current row and unbounded following);
  687. ^
  688. <sql-statement>
  689. SELECT sum(unique1) over
  690. (order by unique1
  691. rows (SELECT unique1 FROM tenk1 ORDER BY unique1 LIMIT 1) + 1 PRECEDING),
  692. unique1
  693. FROM tenk1 WHERE unique1 < 10;
  694. </sql-statement>
  695. -stdin-:<main>: Error: Parse Sql
  696. -stdin-:<main>:3:8: Error: SubLinks are not allowed in: FRAME
  697. rows (SELECT unique1 FROM tenk1 ORDER BY unique1 LIMIT 1) + 1 PRECEDING),
  698. ^
  699. <sql-statement>
  700. CREATE TEMP VIEW v_window AS
  701. SELECT i, sum(i) over (order by i rows between 1 preceding and 1 following) as sum_rows
  702. FROM generate_series(1, 10) i;
  703. </sql-statement>
  704. -stdin-:<main>: Error: Parse Sql
  705. -stdin-:<main>:1:1: Error: expected at least one target column
  706. CREATE TEMP VIEW v_window AS
  707. ^
  708. <sql-statement>
  709. SELECT * FROM v_window;
  710. </sql-statement>
  711. -stdin-:<main>: Fatal: Table metadata loading
  712. -stdin-:<main>: Fatal: ydb/library/yql/providers/yt/gateway/file/yql_yt_file_services.cpp:44: Table not found: plato.v_window
  713. <sql-statement>
  714. SELECT pg_get_viewdef('v_window');
  715. </sql-statement>
  716. -stdin-:<main>: Fatal: Execution
  717. -stdin-:<main>:1:1: Fatal: Execution of node: Result
  718. SELECT pg_get_viewdef('v_window');
  719. ^
  720. -stdin-:<main>:1:1: Fatal: ERROR: relation "v_window" does not exist
  721. SELECT pg_get_viewdef('v_window');
  722. ^
  723. <sql-statement>
  724. CREATE OR REPLACE TEMP VIEW v_window AS
  725. SELECT i, sum(i) over (order by i rows between 1 preceding and 1 following
  726. exclude current row) as sum_rows FROM generate_series(1, 10) i;
  727. </sql-statement>
  728. -stdin-:<main>: Error: Parse Sql
  729. -stdin-:<main>:1:1: Error: expected at least one target column
  730. CREATE OR REPLACE TEMP VIEW v_window AS
  731. ^
  732. <sql-statement>
  733. SELECT * FROM v_window;
  734. </sql-statement>
  735. -stdin-:<main>: Fatal: Table metadata loading
  736. -stdin-:<main>: Fatal: ydb/library/yql/providers/yt/gateway/file/yql_yt_file_services.cpp:44: Table not found: plato.v_window
  737. <sql-statement>
  738. SELECT pg_get_viewdef('v_window');
  739. </sql-statement>
  740. -stdin-:<main>: Fatal: Execution
  741. -stdin-:<main>:1:1: Fatal: Execution of node: Result
  742. SELECT pg_get_viewdef('v_window');
  743. ^
  744. -stdin-:<main>:1:1: Fatal: ERROR: relation "v_window" does not exist
  745. SELECT pg_get_viewdef('v_window');
  746. ^
  747. <sql-statement>
  748. CREATE OR REPLACE TEMP VIEW v_window AS
  749. SELECT i, sum(i) over (order by i rows between 1 preceding and 1 following
  750. exclude group) as sum_rows FROM generate_series(1, 10) i;
  751. </sql-statement>
  752. -stdin-:<main>: Error: Parse Sql
  753. -stdin-:<main>:1:1: Error: expected at least one target column
  754. CREATE OR REPLACE TEMP VIEW v_window AS
  755. ^
  756. <sql-statement>
  757. SELECT * FROM v_window;
  758. </sql-statement>
  759. -stdin-:<main>: Fatal: Table metadata loading
  760. -stdin-:<main>: Fatal: ydb/library/yql/providers/yt/gateway/file/yql_yt_file_services.cpp:44: Table not found: plato.v_window
  761. <sql-statement>
  762. SELECT pg_get_viewdef('v_window');
  763. </sql-statement>
  764. -stdin-:<main>: Fatal: Execution
  765. -stdin-:<main>:1:1: Fatal: Execution of node: Result
  766. SELECT pg_get_viewdef('v_window');
  767. ^
  768. -stdin-:<main>:1:1: Fatal: ERROR: relation "v_window" does not exist
  769. SELECT pg_get_viewdef('v_window');
  770. ^
  771. <sql-statement>
  772. CREATE OR REPLACE TEMP VIEW v_window AS
  773. SELECT i, sum(i) over (order by i rows between 1 preceding and 1 following
  774. exclude ties) as sum_rows FROM generate_series(1, 10) i;
  775. </sql-statement>
  776. -stdin-:<main>: Error: Parse Sql
  777. -stdin-:<main>:1:1: Error: expected at least one target column
  778. CREATE OR REPLACE TEMP VIEW v_window AS
  779. ^
  780. <sql-statement>
  781. SELECT * FROM v_window;
  782. </sql-statement>
  783. -stdin-:<main>: Fatal: Table metadata loading
  784. -stdin-:<main>: Fatal: ydb/library/yql/providers/yt/gateway/file/yql_yt_file_services.cpp:44: Table not found: plato.v_window
  785. <sql-statement>
  786. SELECT pg_get_viewdef('v_window');
  787. </sql-statement>
  788. -stdin-:<main>: Fatal: Execution
  789. -stdin-:<main>:1:1: Fatal: Execution of node: Result
  790. SELECT pg_get_viewdef('v_window');
  791. ^
  792. -stdin-:<main>:1:1: Fatal: ERROR: relation "v_window" does not exist
  793. SELECT pg_get_viewdef('v_window');
  794. ^
  795. <sql-statement>
  796. CREATE OR REPLACE TEMP VIEW v_window AS
  797. SELECT i, sum(i) over (order by i rows between 1 preceding and 1 following
  798. exclude no others) as sum_rows FROM generate_series(1, 10) i;
  799. </sql-statement>
  800. -stdin-:<main>: Error: Parse Sql
  801. -stdin-:<main>:1:1: Error: expected at least one target column
  802. CREATE OR REPLACE TEMP VIEW v_window AS
  803. ^
  804. <sql-statement>
  805. SELECT * FROM v_window;
  806. </sql-statement>
  807. -stdin-:<main>: Fatal: Table metadata loading
  808. -stdin-:<main>: Fatal: ydb/library/yql/providers/yt/gateway/file/yql_yt_file_services.cpp:44: Table not found: plato.v_window
  809. <sql-statement>
  810. SELECT pg_get_viewdef('v_window');
  811. </sql-statement>
  812. -stdin-:<main>: Fatal: Execution
  813. -stdin-:<main>:1:1: Fatal: Execution of node: Result
  814. SELECT pg_get_viewdef('v_window');
  815. ^
  816. -stdin-:<main>:1:1: Fatal: ERROR: relation "v_window" does not exist
  817. SELECT pg_get_viewdef('v_window');
  818. ^
  819. <sql-statement>
  820. CREATE OR REPLACE TEMP VIEW v_window AS
  821. SELECT i, sum(i) over (order by i groups between 1 preceding and 1 following) as sum_rows FROM generate_series(1, 10) i;
  822. </sql-statement>
  823. -stdin-:<main>: Error: Parse Sql
  824. -stdin-:<main>:1:1: Error: expected at least one target column
  825. CREATE OR REPLACE TEMP VIEW v_window AS
  826. ^
  827. <sql-statement>
  828. SELECT * FROM v_window;
  829. </sql-statement>
  830. -stdin-:<main>: Fatal: Table metadata loading
  831. -stdin-:<main>: Fatal: ydb/library/yql/providers/yt/gateway/file/yql_yt_file_services.cpp:44: Table not found: plato.v_window
  832. <sql-statement>
  833. SELECT pg_get_viewdef('v_window');
  834. </sql-statement>
  835. -stdin-:<main>: Fatal: Execution
  836. -stdin-:<main>:1:1: Fatal: Execution of node: Result
  837. SELECT pg_get_viewdef('v_window');
  838. ^
  839. -stdin-:<main>:1:1: Fatal: ERROR: relation "v_window" does not exist
  840. SELECT pg_get_viewdef('v_window');
  841. ^
  842. <sql-statement>
  843. DROP VIEW v_window;
  844. </sql-statement>
  845. -stdin-:<main>: Error: Parse Sql
  846. -stdin-:<main>:1:1: Error: View not found: 'v_window'
  847. DROP VIEW v_window;
  848. ^
  849. <sql-statement>
  850. CREATE TEMP VIEW v_window AS
  851. SELECT i, min(i) over (order by i range between '1 day' preceding and '10 days' following) as min_i
  852. FROM generate_series(now(), now()+'100 days'::interval, '1 hour') i;
  853. </sql-statement>
  854. -stdin-:<main>: Error: Parse Sql
  855. -stdin-:<main>:1:1: Error: expected at least one target column
  856. CREATE TEMP VIEW v_window AS
  857. ^
  858. <sql-statement>
  859. SELECT pg_get_viewdef('v_window');
  860. </sql-statement>
  861. -stdin-:<main>: Fatal: Execution
  862. -stdin-:<main>:1:1: Fatal: Execution of node: Result
  863. SELECT pg_get_viewdef('v_window');
  864. ^
  865. -stdin-:<main>:1:1: Fatal: ERROR: relation "v_window" does not exist
  866. SELECT pg_get_viewdef('v_window');
  867. ^
  868. <sql-statement>
  869. -- RANGE offset PRECEDING/FOLLOWING tests
  870. SELECT sum(unique1) over (order by four range between 2::int8 preceding and 1::int2 preceding),
  871. unique1, four
  872. FROM tenk1 WHERE unique1 < 10;
  873. </sql-statement>
  874. -stdin-:<main>: Error: Expression evaluation
  875. -stdin-:<main>:2:26: Error: At function: EvaluateExpr
  876. SELECT sum(unique1) over (order by four range between 2::int8 preceding and 1::int2 preceding),
  877. ^
  878. -stdin-:<main>: Error: Type annotation
  879. -stdin-:<main>:2:26: Error: At function: Unwrap
  880. SELECT sum(unique1) over (order by four range between 2::int8 preceding and 1::int2 preceding),
  881. ^
  882. -stdin-:<main>:2:58: Error: Can't unwrap PostgreSQL type
  883. SELECT sum(unique1) over (order by four range between 2::int8 preceding and 1::int2 preceding),
  884. ^
  885. <sql-statement>
  886. SELECT sum(unique1) over (order by four desc range between 2::int8 preceding and 1::int2 preceding),
  887. unique1, four
  888. FROM tenk1 WHERE unique1 < 10;
  889. </sql-statement>
  890. -stdin-:<main>: Error: Expression evaluation
  891. -stdin-:<main>:1:26: Error: At function: EvaluateExpr
  892. SELECT sum(unique1) over (order by four desc range between 2::int8 preceding and 1::int2 preceding),
  893. ^
  894. -stdin-:<main>: Error: Type annotation
  895. -stdin-:<main>:1:26: Error: At function: Unwrap
  896. SELECT sum(unique1) over (order by four desc range between 2::int8 preceding and 1::int2 preceding),
  897. ^
  898. -stdin-:<main>:1:63: Error: Can't unwrap PostgreSQL type
  899. SELECT sum(unique1) over (order by four desc range between 2::int8 preceding and 1::int2 preceding),
  900. ^
  901. <sql-statement>
  902. SELECT sum(unique1) over (order by four range between 2::int8 preceding and 1::int2 preceding exclude no others),
  903. unique1, four
  904. FROM tenk1 WHERE unique1 < 10;
  905. </sql-statement>
  906. -stdin-:<main>: Error: Expression evaluation
  907. -stdin-:<main>:1:26: Error: At function: EvaluateExpr
  908. SELECT sum(unique1) over (order by four range between 2::int8 preceding and 1::int2 preceding exclude no others),
  909. ^
  910. -stdin-:<main>: Error: Type annotation
  911. -stdin-:<main>:1:26: Error: At function: Unwrap
  912. SELECT sum(unique1) over (order by four range between 2::int8 preceding and 1::int2 preceding exclude no others),
  913. ^
  914. -stdin-:<main>:1:58: Error: Can't unwrap PostgreSQL type
  915. SELECT sum(unique1) over (order by four range between 2::int8 preceding and 1::int2 preceding exclude no others),
  916. ^
  917. <sql-statement>
  918. SELECT sum(unique1) over (order by four range between 2::int8 preceding and 1::int2 preceding exclude current row),
  919. unique1, four
  920. FROM tenk1 WHERE unique1 < 10;
  921. </sql-statement>
  922. -stdin-:<main>: Error: Expression evaluation
  923. -stdin-:<main>:1:26: Error: At function: EvaluateExpr
  924. SELECT sum(unique1) over (order by four range between 2::int8 preceding and 1::int2 preceding exclude current row),
  925. ^
  926. -stdin-:<main>: Error: Type annotation
  927. -stdin-:<main>:1:26: Error: At function: Unwrap
  928. SELECT sum(unique1) over (order by four range between 2::int8 preceding and 1::int2 preceding exclude current row),
  929. ^
  930. -stdin-:<main>:1:58: Error: Can't unwrap PostgreSQL type
  931. SELECT sum(unique1) over (order by four range between 2::int8 preceding and 1::int2 preceding exclude current row),
  932. ^
  933. <sql-statement>
  934. SELECT sum(unique1) over (order by four range between 2::int8 preceding and 1::int2 preceding exclude group),
  935. unique1, four
  936. FROM tenk1 WHERE unique1 < 10;
  937. </sql-statement>
  938. -stdin-:<main>: Error: Expression evaluation
  939. -stdin-:<main>:1:26: Error: At function: EvaluateExpr
  940. SELECT sum(unique1) over (order by four range between 2::int8 preceding and 1::int2 preceding exclude group),
  941. ^
  942. -stdin-:<main>: Error: Type annotation
  943. -stdin-:<main>:1:26: Error: At function: Unwrap
  944. SELECT sum(unique1) over (order by four range between 2::int8 preceding and 1::int2 preceding exclude group),
  945. ^
  946. -stdin-:<main>:1:58: Error: Can't unwrap PostgreSQL type
  947. SELECT sum(unique1) over (order by four range between 2::int8 preceding and 1::int2 preceding exclude group),
  948. ^
  949. <sql-statement>
  950. SELECT sum(unique1) over (order by four range between 2::int8 preceding and 1::int2 preceding exclude ties),
  951. unique1, four
  952. FROM tenk1 WHERE unique1 < 10;
  953. </sql-statement>
  954. -stdin-:<main>: Error: Expression evaluation
  955. -stdin-:<main>:1:26: Error: At function: EvaluateExpr
  956. SELECT sum(unique1) over (order by four range between 2::int8 preceding and 1::int2 preceding exclude ties),
  957. ^
  958. -stdin-:<main>: Error: Type annotation
  959. -stdin-:<main>:1:26: Error: At function: Unwrap
  960. SELECT sum(unique1) over (order by four range between 2::int8 preceding and 1::int2 preceding exclude ties),
  961. ^
  962. -stdin-:<main>:1:58: Error: Can't unwrap PostgreSQL type
  963. SELECT sum(unique1) over (order by four range between 2::int8 preceding and 1::int2 preceding exclude ties),
  964. ^
  965. <sql-statement>
  966. SELECT sum(unique1) over (order by four range between 2::int8 preceding and 6::int2 following exclude ties),
  967. unique1, four
  968. FROM tenk1 WHERE unique1 < 10;
  969. </sql-statement>
  970. -stdin-:<main>: Error: Expression evaluation
  971. -stdin-:<main>:1:26: Error: At function: EvaluateExpr
  972. SELECT sum(unique1) over (order by four range between 2::int8 preceding and 6::int2 following exclude ties),
  973. ^
  974. -stdin-:<main>: Error: Type annotation
  975. -stdin-:<main>:1:26: Error: At function: Unwrap
  976. SELECT sum(unique1) over (order by four range between 2::int8 preceding and 6::int2 following exclude ties),
  977. ^
  978. -stdin-:<main>:1:58: Error: Can't unwrap PostgreSQL type
  979. SELECT sum(unique1) over (order by four range between 2::int8 preceding and 6::int2 following exclude ties),
  980. ^
  981. <sql-statement>
  982. SELECT sum(unique1) over (order by four range between 2::int8 preceding and 6::int2 following exclude group),
  983. unique1, four
  984. FROM tenk1 WHERE unique1 < 10;
  985. </sql-statement>
  986. -stdin-:<main>: Error: Expression evaluation
  987. -stdin-:<main>:1:26: Error: At function: EvaluateExpr
  988. SELECT sum(unique1) over (order by four range between 2::int8 preceding and 6::int2 following exclude group),
  989. ^
  990. -stdin-:<main>: Error: Type annotation
  991. -stdin-:<main>:1:26: Error: At function: Unwrap
  992. SELECT sum(unique1) over (order by four range between 2::int8 preceding and 6::int2 following exclude group),
  993. ^
  994. -stdin-:<main>:1:58: Error: Can't unwrap PostgreSQL type
  995. SELECT sum(unique1) over (order by four range between 2::int8 preceding and 6::int2 following exclude group),
  996. ^
  997. <sql-statement>
  998. SELECT sum(unique1) over (partition by four order by unique1 range between 5::int8 preceding and 6::int2 following),
  999. unique1, four
  1000. FROM tenk1 WHERE unique1 < 10;
  1001. </sql-statement>
  1002. -stdin-:<main>: Error: Expression evaluation
  1003. -stdin-:<main>:1:26: Error: At function: EvaluateExpr
  1004. SELECT sum(unique1) over (partition by four order by unique1 range between 5::int8 preceding and 6::int2 following),
  1005. ^
  1006. -stdin-:<main>: Error: Type annotation
  1007. -stdin-:<main>:1:26: Error: At function: Unwrap
  1008. SELECT sum(unique1) over (partition by four order by unique1 range between 5::int8 preceding and 6::int2 following),
  1009. ^
  1010. -stdin-:<main>:1:79: Error: Can't unwrap PostgreSQL type
  1011. SELECT sum(unique1) over (partition by four order by unique1 range between 5::int8 preceding and 6::int2 following),
  1012. ^
  1013. <sql-statement>
  1014. SELECT sum(unique1) over (partition by four order by unique1 range between 5::int8 preceding and 6::int2 following
  1015. exclude current row),unique1, four
  1016. FROM tenk1 WHERE unique1 < 10;
  1017. </sql-statement>
  1018. -stdin-:<main>: Error: Expression evaluation
  1019. -stdin-:<main>:1:26: Error: At function: EvaluateExpr
  1020. SELECT sum(unique1) over (partition by four order by unique1 range between 5::int8 preceding and 6::int2 following
  1021. ^
  1022. -stdin-:<main>: Error: Type annotation
  1023. -stdin-:<main>:1:26: Error: At function: Unwrap
  1024. SELECT sum(unique1) over (partition by four order by unique1 range between 5::int8 preceding and 6::int2 following
  1025. ^
  1026. -stdin-:<main>:1:79: Error: Can't unwrap PostgreSQL type
  1027. SELECT sum(unique1) over (partition by four order by unique1 range between 5::int8 preceding and 6::int2 following
  1028. ^
  1029. <sql-statement>
  1030. select sum(salary) over (order by enroll_date range between '1 year'::interval preceding and '1 year'::interval following),
  1031. salary, enroll_date from empsalary;
  1032. </sql-statement>
  1033. -stdin-:<main>: Error: Expression evaluation
  1034. -stdin-:<main>:1:25: Error: At function: EvaluateExpr
  1035. select sum(salary) over (order by enroll_date range between '1 year'::interval preceding and '1 year'::interval following),
  1036. ^
  1037. -stdin-:<main>: Error: Type annotation
  1038. -stdin-:<main>:1:25: Error: At function: Unwrap
  1039. select sum(salary) over (order by enroll_date range between '1 year'::interval preceding and '1 year'::interval following),
  1040. ^
  1041. -stdin-:<main>:1:71: Error: Can't unwrap PostgreSQL type
  1042. select sum(salary) over (order by enroll_date range between '1 year'::interval preceding and '1 year'::interval following),
  1043. ^
  1044. <sql-statement>
  1045. select sum(salary) over (order by enroll_date desc range between '1 year'::interval preceding and '1 year'::interval following),
  1046. salary, enroll_date from empsalary;
  1047. </sql-statement>
  1048. -stdin-:<main>: Error: Expression evaluation
  1049. -stdin-:<main>:1:25: Error: At function: EvaluateExpr
  1050. select sum(salary) over (order by enroll_date desc range between '1 year'::interval preceding and '1 year'::interval following),
  1051. ^
  1052. -stdin-:<main>: Error: Type annotation
  1053. -stdin-:<main>:1:25: Error: At function: Unwrap
  1054. select sum(salary) over (order by enroll_date desc range between '1 year'::interval preceding and '1 year'::interval following),
  1055. ^
  1056. -stdin-:<main>:1:76: Error: Can't unwrap PostgreSQL type
  1057. select sum(salary) over (order by enroll_date desc range between '1 year'::interval preceding and '1 year'::interval following),
  1058. ^
  1059. <sql-statement>
  1060. select sum(salary) over (order by enroll_date desc range between '1 year'::interval following and '1 year'::interval following),
  1061. salary, enroll_date from empsalary;
  1062. </sql-statement>
  1063. -stdin-:<main>: Error: Expression evaluation
  1064. -stdin-:<main>:1:25: Error: At function: EvaluateExpr
  1065. select sum(salary) over (order by enroll_date desc range between '1 year'::interval following and '1 year'::interval following),
  1066. ^
  1067. -stdin-:<main>: Error: Type annotation
  1068. -stdin-:<main>:1:25: Error: At function: Unwrap
  1069. select sum(salary) over (order by enroll_date desc range between '1 year'::interval following and '1 year'::interval following),
  1070. ^
  1071. -stdin-:<main>:1:76: Error: Can't unwrap PostgreSQL type
  1072. select sum(salary) over (order by enroll_date desc range between '1 year'::interval following and '1 year'::interval following),
  1073. ^
  1074. <sql-statement>
  1075. select sum(salary) over (order by enroll_date range between '1 year'::interval preceding and '1 year'::interval following
  1076. exclude current row), salary, enroll_date from empsalary;
  1077. </sql-statement>
  1078. -stdin-:<main>: Error: Expression evaluation
  1079. -stdin-:<main>:1:25: Error: At function: EvaluateExpr
  1080. select sum(salary) over (order by enroll_date range between '1 year'::interval preceding and '1 year'::interval following
  1081. ^
  1082. -stdin-:<main>: Error: Type annotation
  1083. -stdin-:<main>:1:25: Error: At function: Unwrap
  1084. select sum(salary) over (order by enroll_date range between '1 year'::interval preceding and '1 year'::interval following
  1085. ^
  1086. -stdin-:<main>:1:71: Error: Can't unwrap PostgreSQL type
  1087. select sum(salary) over (order by enroll_date range between '1 year'::interval preceding and '1 year'::interval following
  1088. ^
  1089. <sql-statement>
  1090. select sum(salary) over (order by enroll_date range between '1 year'::interval preceding and '1 year'::interval following
  1091. exclude group), salary, enroll_date from empsalary;
  1092. </sql-statement>
  1093. -stdin-:<main>: Error: Expression evaluation
  1094. -stdin-:<main>:1:25: Error: At function: EvaluateExpr
  1095. select sum(salary) over (order by enroll_date range between '1 year'::interval preceding and '1 year'::interval following
  1096. ^
  1097. -stdin-:<main>: Error: Type annotation
  1098. -stdin-:<main>:1:25: Error: At function: Unwrap
  1099. select sum(salary) over (order by enroll_date range between '1 year'::interval preceding and '1 year'::interval following
  1100. ^
  1101. -stdin-:<main>:1:71: Error: Can't unwrap PostgreSQL type
  1102. select sum(salary) over (order by enroll_date range between '1 year'::interval preceding and '1 year'::interval following
  1103. ^
  1104. <sql-statement>
  1105. select sum(salary) over (order by enroll_date range between '1 year'::interval preceding and '1 year'::interval following
  1106. exclude ties), salary, enroll_date from empsalary;
  1107. </sql-statement>
  1108. -stdin-:<main>: Error: Expression evaluation
  1109. -stdin-:<main>:1:25: Error: At function: EvaluateExpr
  1110. select sum(salary) over (order by enroll_date range between '1 year'::interval preceding and '1 year'::interval following
  1111. ^
  1112. -stdin-:<main>: Error: Type annotation
  1113. -stdin-:<main>:1:25: Error: At function: Unwrap
  1114. select sum(salary) over (order by enroll_date range between '1 year'::interval preceding and '1 year'::interval following
  1115. ^
  1116. -stdin-:<main>:1:71: Error: Can't unwrap PostgreSQL type
  1117. select sum(salary) over (order by enroll_date range between '1 year'::interval preceding and '1 year'::interval following
  1118. ^
  1119. <sql-statement>
  1120. select first_value(salary) over(order by salary range between 1000 preceding and 1000 following),
  1121. lead(salary) over(order by salary range between 1000 preceding and 1000 following),
  1122. nth_value(salary, 1) over(order by salary range between 1000 preceding and 1000 following),
  1123. salary from empsalary;
  1124. </sql-statement>
  1125. -stdin-:<main>: Error: Type annotation
  1126. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem
  1127. select first_value(salary) over(order by salary range between 1000 preceding and 1000 following),
  1128. ^
  1129. -stdin-:<main>:1:32: Error: At function: PgWindow
  1130. select first_value(salary) over(order by salary range between 1000 preceding and 1000 following),
  1131. ^
  1132. -stdin-:<main>:1:32: Error: Unsupported frame type: range
  1133. select first_value(salary) over(order by salary range between 1000 preceding and 1000 following),
  1134. ^
  1135. -stdin-:<main>:2:19: Error: At function: PgWindow
  1136. lead(salary) over(order by salary range between 1000 preceding and 1000 following),
  1137. ^
  1138. -stdin-:<main>:2:19: Error: Unsupported frame type: range
  1139. lead(salary) over(order by salary range between 1000 preceding and 1000 following),
  1140. ^
  1141. -stdin-:<main>:3:27: Error: At function: PgWindow
  1142. nth_value(salary, 1) over(order by salary range between 1000 preceding and 1000 following),
  1143. ^
  1144. -stdin-:<main>:3:27: Error: Unsupported frame type: range
  1145. nth_value(salary, 1) over(order by salary range between 1000 preceding and 1000 following),
  1146. ^
  1147. <sql-statement>
  1148. select last_value(salary) over(order by salary range between 1000 preceding and 1000 following),
  1149. lag(salary) over(order by salary range between 1000 preceding and 1000 following),
  1150. salary from empsalary;
  1151. </sql-statement>
  1152. -stdin-:<main>: Error: Type annotation
  1153. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem
  1154. select last_value(salary) over(order by salary range between 1000 preceding and 1000 following),
  1155. ^
  1156. -stdin-:<main>:1:31: Error: At function: PgWindow
  1157. select last_value(salary) over(order by salary range between 1000 preceding and 1000 following),
  1158. ^
  1159. -stdin-:<main>:1:31: Error: Unsupported frame type: range
  1160. select last_value(salary) over(order by salary range between 1000 preceding and 1000 following),
  1161. ^
  1162. -stdin-:<main>:2:18: Error: At function: PgWindow
  1163. lag(salary) over(order by salary range between 1000 preceding and 1000 following),
  1164. ^
  1165. -stdin-:<main>:2:18: Error: Unsupported frame type: range
  1166. lag(salary) over(order by salary range between 1000 preceding and 1000 following),
  1167. ^
  1168. <sql-statement>
  1169. select first_value(salary) over(order by salary range between 1000 following and 3000 following
  1170. exclude current row),
  1171. lead(salary) over(order by salary range between 1000 following and 3000 following exclude ties),
  1172. nth_value(salary, 1) over(order by salary range between 1000 following and 3000 following
  1173. exclude ties),
  1174. salary from empsalary;
  1175. </sql-statement>
  1176. -stdin-:<main>: Error: Type annotation
  1177. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem
  1178. select first_value(salary) over(order by salary range between 1000 following and 3000 following
  1179. ^
  1180. -stdin-:<main>:1:32: Error: At function: PgWindow
  1181. select first_value(salary) over(order by salary range between 1000 following and 3000 following
  1182. ^
  1183. -stdin-:<main>:1:32: Error: Excludes are not supported
  1184. select first_value(salary) over(order by salary range between 1000 following and 3000 following
  1185. ^
  1186. -stdin-:<main>:3:19: Error: At function: PgWindow
  1187. lead(salary) over(order by salary range between 1000 following and 3000 following exclude ties),
  1188. ^
  1189. -stdin-:<main>:3:19: Error: Excludes are not supported
  1190. lead(salary) over(order by salary range between 1000 following and 3000 following exclude ties),
  1191. ^
  1192. -stdin-:<main>:4:27: Error: At function: PgWindow
  1193. nth_value(salary, 1) over(order by salary range between 1000 following and 3000 following
  1194. ^
  1195. -stdin-:<main>:4:27: Error: Excludes are not supported
  1196. nth_value(salary, 1) over(order by salary range between 1000 following and 3000 following
  1197. ^
  1198. <sql-statement>
  1199. select last_value(salary) over(order by salary range between 1000 following and 3000 following
  1200. exclude group),
  1201. lag(salary) over(order by salary range between 1000 following and 3000 following exclude group),
  1202. salary from empsalary;
  1203. </sql-statement>
  1204. -stdin-:<main>: Error: Type annotation
  1205. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem
  1206. select last_value(salary) over(order by salary range between 1000 following and 3000 following
  1207. ^
  1208. -stdin-:<main>:1:31: Error: At function: PgWindow
  1209. select last_value(salary) over(order by salary range between 1000 following and 3000 following
  1210. ^
  1211. -stdin-:<main>:1:31: Error: Excludes are not supported
  1212. select last_value(salary) over(order by salary range between 1000 following and 3000 following
  1213. ^
  1214. -stdin-:<main>:3:18: Error: At function: PgWindow
  1215. lag(salary) over(order by salary range between 1000 following and 3000 following exclude group),
  1216. ^
  1217. -stdin-:<main>:3:18: Error: Excludes are not supported
  1218. lag(salary) over(order by salary range between 1000 following and 3000 following exclude group),
  1219. ^
  1220. <sql-statement>
  1221. select first_value(salary) over(order by enroll_date range between unbounded preceding and '1 year'::interval following
  1222. exclude ties),
  1223. last_value(salary) over(order by enroll_date range between unbounded preceding and '1 year'::interval following),
  1224. salary, enroll_date from empsalary;
  1225. </sql-statement>
  1226. -stdin-:<main>: Error: Expression evaluation
  1227. -stdin-:<main>:1:32: Error: At function: EvaluateExpr
  1228. select first_value(salary) over(order by enroll_date range between unbounded preceding and '1 year'::interval following
  1229. ^
  1230. -stdin-:<main>: Error: Type annotation
  1231. -stdin-:<main>:1:32: Error: At function: Unwrap
  1232. select first_value(salary) over(order by enroll_date range between unbounded preceding and '1 year'::interval following
  1233. ^
  1234. -stdin-:<main>:1:102: Error: Can't unwrap PostgreSQL type
  1235. select first_value(salary) over(order by enroll_date range between unbounded preceding and '1 year'::interval following
  1236. ^
  1237. <sql-statement>
  1238. select first_value(salary) over(order by enroll_date range between unbounded preceding and '1 year'::interval following
  1239. exclude ties),
  1240. last_value(salary) over(order by enroll_date range between unbounded preceding and '1 year'::interval following
  1241. exclude ties),
  1242. salary, enroll_date from empsalary;
  1243. </sql-statement>
  1244. -stdin-:<main>: Error: Expression evaluation
  1245. -stdin-:<main>:1:32: Error: At function: EvaluateExpr
  1246. select first_value(salary) over(order by enroll_date range between unbounded preceding and '1 year'::interval following
  1247. ^
  1248. -stdin-:<main>: Error: Type annotation
  1249. -stdin-:<main>:1:32: Error: At function: Unwrap
  1250. select first_value(salary) over(order by enroll_date range between unbounded preceding and '1 year'::interval following
  1251. ^
  1252. -stdin-:<main>:1:102: Error: Can't unwrap PostgreSQL type
  1253. select first_value(salary) over(order by enroll_date range between unbounded preceding and '1 year'::interval following
  1254. ^
  1255. <sql-statement>
  1256. select first_value(salary) over(order by enroll_date range between unbounded preceding and '1 year'::interval following
  1257. exclude group),
  1258. last_value(salary) over(order by enroll_date range between unbounded preceding and '1 year'::interval following
  1259. exclude group),
  1260. salary, enroll_date from empsalary;
  1261. </sql-statement>
  1262. -stdin-:<main>: Error: Expression evaluation
  1263. -stdin-:<main>:1:32: Error: At function: EvaluateExpr
  1264. select first_value(salary) over(order by enroll_date range between unbounded preceding and '1 year'::interval following
  1265. ^
  1266. -stdin-:<main>: Error: Type annotation
  1267. -stdin-:<main>:1:32: Error: At function: Unwrap
  1268. select first_value(salary) over(order by enroll_date range between unbounded preceding and '1 year'::interval following
  1269. ^
  1270. -stdin-:<main>:1:102: Error: Can't unwrap PostgreSQL type
  1271. select first_value(salary) over(order by enroll_date range between unbounded preceding and '1 year'::interval following
  1272. ^
  1273. <sql-statement>
  1274. select first_value(salary) over(order by enroll_date range between unbounded preceding and '1 year'::interval following
  1275. exclude current row),
  1276. last_value(salary) over(order by enroll_date range between unbounded preceding and '1 year'::interval following
  1277. exclude current row),
  1278. salary, enroll_date from empsalary;
  1279. </sql-statement>
  1280. -stdin-:<main>: Error: Expression evaluation
  1281. -stdin-:<main>:1:32: Error: At function: EvaluateExpr
  1282. select first_value(salary) over(order by enroll_date range between unbounded preceding and '1 year'::interval following
  1283. ^
  1284. -stdin-:<main>: Error: Type annotation
  1285. -stdin-:<main>:1:32: Error: At function: Unwrap
  1286. select first_value(salary) over(order by enroll_date range between unbounded preceding and '1 year'::interval following
  1287. ^
  1288. -stdin-:<main>:1:102: Error: Can't unwrap PostgreSQL type
  1289. select first_value(salary) over(order by enroll_date range between unbounded preceding and '1 year'::interval following
  1290. ^
  1291. <sql-statement>
  1292. -- RANGE offset PRECEDING/FOLLOWING with null values
  1293. select x, y,
  1294. first_value(y) over w,
  1295. last_value(y) over w
  1296. from
  1297. (select x, x as y from generate_series(1,5) as x
  1298. union all select null, 42
  1299. union all select null, 43) ss
  1300. window w as
  1301. (order by x asc nulls first range between 2 preceding and 2 following);
  1302. </sql-statement>
  1303. -stdin-:<main>: Error: Type annotation
  1304. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem
  1305. -- RANGE offset PRECEDING/FOLLOWING with null values
  1306. ^
  1307. -stdin-:<main>:10:3: Error: At function: PgWindow
  1308. (order by x asc nulls first range between 2 preceding and 2 following);
  1309. ^
  1310. -stdin-:<main>:10:3: Error: Unsupported frame type: range
  1311. (order by x asc nulls first range between 2 preceding and 2 following);
  1312. ^
  1313. <sql-statement>
  1314. select x, y,
  1315. first_value(y) over w,
  1316. last_value(y) over w
  1317. from
  1318. (select x, x as y from generate_series(1,5) as x
  1319. union all select null, 42
  1320. union all select null, 43) ss
  1321. window w as
  1322. (order by x asc nulls last range between 2 preceding and 2 following);
  1323. </sql-statement>
  1324. -stdin-:<main>: Error: Type annotation
  1325. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem
  1326. select x, y,
  1327. ^
  1328. -stdin-:<main>:9:3: Error: At function: PgWindow
  1329. (order by x asc nulls last range between 2 preceding and 2 following);
  1330. ^
  1331. -stdin-:<main>:9:3: Error: Unsupported frame type: range
  1332. (order by x asc nulls last range between 2 preceding and 2 following);
  1333. ^
  1334. <sql-statement>
  1335. select x, y,
  1336. first_value(y) over w,
  1337. last_value(y) over w
  1338. from
  1339. (select x, x as y from generate_series(1,5) as x
  1340. union all select null, 42
  1341. union all select null, 43) ss
  1342. window w as
  1343. (order by x desc nulls first range between 2 preceding and 2 following);
  1344. </sql-statement>
  1345. -stdin-:<main>: Error: Type annotation
  1346. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem
  1347. select x, y,
  1348. ^
  1349. -stdin-:<main>:9:3: Error: At function: PgWindow
  1350. (order by x desc nulls first range between 2 preceding and 2 following);
  1351. ^
  1352. -stdin-:<main>:9:3: Error: Unsupported frame type: range
  1353. (order by x desc nulls first range between 2 preceding and 2 following);
  1354. ^
  1355. <sql-statement>
  1356. select x, y,
  1357. first_value(y) over w,
  1358. last_value(y) over w
  1359. from
  1360. (select x, x as y from generate_series(1,5) as x
  1361. union all select null, 42
  1362. union all select null, 43) ss
  1363. window w as
  1364. (order by x desc nulls last range between 2 preceding and 2 following);
  1365. </sql-statement>
  1366. -stdin-:<main>: Error: Type annotation
  1367. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem
  1368. select x, y,
  1369. ^
  1370. -stdin-:<main>:9:3: Error: At function: PgWindow
  1371. (order by x desc nulls last range between 2 preceding and 2 following);
  1372. ^
  1373. -stdin-:<main>:9:3: Error: Unsupported frame type: range
  1374. (order by x desc nulls last range between 2 preceding and 2 following);
  1375. ^
  1376. <sql-statement>
  1377. -- Check overflow behavior for various integer sizes
  1378. select x, last_value(x) over (order by x::smallint range between current row and 2147450884 following)
  1379. from generate_series(32764, 32766) x;
  1380. </sql-statement>
  1381. -stdin-:<main>: Error: Type annotation
  1382. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem
  1383. -- Check overflow behavior for various integer sizes
  1384. ^
  1385. -stdin-:<main>:2:30: Error: At function: PgWindow
  1386. select x, last_value(x) over (order by x::smallint range between current row and 2147450884 following)
  1387. ^
  1388. -stdin-:<main>:2:30: Error: Unsupported frame type: range
  1389. select x, last_value(x) over (order by x::smallint range between current row and 2147450884 following)
  1390. ^
  1391. <sql-statement>
  1392. select x, last_value(x) over (order by x::smallint desc range between current row and 2147450885 following)
  1393. from generate_series(-32766, -32764) x;
  1394. </sql-statement>
  1395. -stdin-:<main>: Error: Type annotation
  1396. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem
  1397. select x, last_value(x) over (order by x::smallint desc range between current row and 2147450885 following)
  1398. ^
  1399. -stdin-:<main>:1:30: Error: At function: PgWindow
  1400. select x, last_value(x) over (order by x::smallint desc range between current row and 2147450885 following)
  1401. ^
  1402. -stdin-:<main>:1:30: Error: Unsupported frame type: range
  1403. select x, last_value(x) over (order by x::smallint desc range between current row and 2147450885 following)
  1404. ^
  1405. <sql-statement>
  1406. select x, last_value(x) over (order by x range between current row and 4 following)
  1407. from generate_series(2147483644, 2147483646) x;
  1408. </sql-statement>
  1409. -stdin-:<main>: Error: Type annotation
  1410. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem
  1411. select x, last_value(x) over (order by x range between current row and 4 following)
  1412. ^
  1413. -stdin-:<main>:1:30: Error: At function: PgWindow
  1414. select x, last_value(x) over (order by x range between current row and 4 following)
  1415. ^
  1416. -stdin-:<main>:1:30: Error: Unsupported frame type: range
  1417. select x, last_value(x) over (order by x range between current row and 4 following)
  1418. ^
  1419. <sql-statement>
  1420. select x, last_value(x) over (order by x desc range between current row and 5 following)
  1421. from generate_series(-2147483646, -2147483644) x;
  1422. </sql-statement>
  1423. -stdin-:<main>: Error: Type annotation
  1424. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem
  1425. select x, last_value(x) over (order by x desc range between current row and 5 following)
  1426. ^
  1427. -stdin-:<main>:1:30: Error: At function: PgWindow
  1428. select x, last_value(x) over (order by x desc range between current row and 5 following)
  1429. ^
  1430. -stdin-:<main>:1:30: Error: Unsupported frame type: range
  1431. select x, last_value(x) over (order by x desc range between current row and 5 following)
  1432. ^
  1433. <sql-statement>
  1434. select x, last_value(x) over (order by x range between current row and 4 following)
  1435. from generate_series(9223372036854775804, 9223372036854775806) x;
  1436. </sql-statement>
  1437. -stdin-:<main>: Error: Type annotation
  1438. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem
  1439. select x, last_value(x) over (order by x range between current row and 4 following)
  1440. ^
  1441. -stdin-:<main>:1:30: Error: At function: PgWindow
  1442. select x, last_value(x) over (order by x range between current row and 4 following)
  1443. ^
  1444. -stdin-:<main>:1:30: Error: Unsupported frame type: range
  1445. select x, last_value(x) over (order by x range between current row and 4 following)
  1446. ^
  1447. <sql-statement>
  1448. select x, last_value(x) over (order by x desc range between current row and 5 following)
  1449. from generate_series(-9223372036854775806, -9223372036854775804) x;
  1450. </sql-statement>
  1451. -stdin-:<main>: Error: Type annotation
  1452. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem
  1453. select x, last_value(x) over (order by x desc range between current row and 5 following)
  1454. ^
  1455. -stdin-:<main>:1:30: Error: At function: PgWindow
  1456. select x, last_value(x) over (order by x desc range between current row and 5 following)
  1457. ^
  1458. -stdin-:<main>:1:30: Error: Unsupported frame type: range
  1459. select x, last_value(x) over (order by x desc range between current row and 5 following)
  1460. ^
  1461. <sql-statement>
  1462. -- Test in_range for other numeric datatypes
  1463. create temp table numerics(
  1464. id int,
  1465. f_float4 float4,
  1466. f_float8 float8,
  1467. f_numeric numeric
  1468. );
  1469. </sql-statement>
  1470. <sql-statement>
  1471. insert into numerics values
  1472. (0, '-infinity', '-infinity', '-infinity'),
  1473. (1, -3, -3, -3),
  1474. (2, -1, -1, -1),
  1475. (3, 0, 0, 0),
  1476. (4, 1.1, 1.1, 1.1),
  1477. (5, 1.12, 1.12, 1.12),
  1478. (6, 2, 2, 2),
  1479. (7, 100, 100, 100),
  1480. (8, 'infinity', 'infinity', 'infinity'),
  1481. (9, 'NaN', 'NaN', 'NaN');
  1482. </sql-statement>
  1483. <sql-statement>
  1484. select id, f_float4, first_value(id) over w, last_value(id) over w
  1485. from numerics
  1486. window w as (order by f_float4 range between
  1487. 1 preceding and 1 following);
  1488. </sql-statement>
  1489. -stdin-:<main>: Error: Type annotation
  1490. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem
  1491. select id, f_float4, first_value(id) over w, last_value(id) over w
  1492. ^
  1493. -stdin-:<main>:3:13: Error: At function: PgWindow
  1494. window w as (order by f_float4 range between
  1495. ^
  1496. -stdin-:<main>:3:13: Error: Unsupported frame type: range
  1497. window w as (order by f_float4 range between
  1498. ^
  1499. <sql-statement>
  1500. select id, f_float4, first_value(id) over w, last_value(id) over w
  1501. from numerics
  1502. window w as (order by f_float4 range between
  1503. 1 preceding and 1.1::float4 following);
  1504. </sql-statement>
  1505. -stdin-:<main>: Error: Expression evaluation
  1506. -stdin-:<main>:3:13: Error: At function: EvaluateExpr
  1507. window w as (order by f_float4 range between
  1508. ^
  1509. -stdin-:<main>: Error: Type annotation
  1510. -stdin-:<main>:3:13: Error: At function: Unwrap
  1511. window w as (order by f_float4 range between
  1512. ^
  1513. -stdin-:<main>:4:35: Error: Can't unwrap PostgreSQL type
  1514. 1 preceding and 1.1::float4 following);
  1515. ^
  1516. <sql-statement>
  1517. select id, f_float4, first_value(id) over w, last_value(id) over w
  1518. from numerics
  1519. window w as (order by f_float4 range between
  1520. 'inf' preceding and 'inf' following);
  1521. </sql-statement>
  1522. -stdin-:<main>: Error: Expression evaluation
  1523. -stdin-:<main>:3:13: Error: At function: EvaluateExpr
  1524. window w as (order by f_float4 range between
  1525. ^
  1526. -stdin-:<main>: Error: Type annotation
  1527. -stdin-:<main>:3:13: Error: At function: Unwrap
  1528. window w as (order by f_float4 range between
  1529. ^
  1530. -stdin-:<main>:4:14: Error: Can't unwrap PostgreSQL type
  1531. 'inf' preceding and 'inf' following);
  1532. ^
  1533. <sql-statement>
  1534. select id, f_float4, first_value(id) over w, last_value(id) over w
  1535. from numerics
  1536. window w as (order by f_float4 range between
  1537. 'inf' preceding and 'inf' preceding);
  1538. </sql-statement>
  1539. -stdin-:<main>: Error: Expression evaluation
  1540. -stdin-:<main>:3:13: Error: At function: EvaluateExpr
  1541. window w as (order by f_float4 range between
  1542. ^
  1543. -stdin-:<main>: Error: Type annotation
  1544. -stdin-:<main>:3:13: Error: At function: Unwrap
  1545. window w as (order by f_float4 range between
  1546. ^
  1547. -stdin-:<main>:4:14: Error: Can't unwrap PostgreSQL type
  1548. 'inf' preceding and 'inf' preceding);
  1549. ^
  1550. <sql-statement>
  1551. select id, f_float4, first_value(id) over w, last_value(id) over w
  1552. from numerics
  1553. window w as (order by f_float4 range between
  1554. 'inf' following and 'inf' following);
  1555. </sql-statement>
  1556. -stdin-:<main>: Error: Expression evaluation
  1557. -stdin-:<main>:3:13: Error: At function: EvaluateExpr
  1558. window w as (order by f_float4 range between
  1559. ^
  1560. -stdin-:<main>: Error: Type annotation
  1561. -stdin-:<main>:3:13: Error: At function: Unwrap
  1562. window w as (order by f_float4 range between
  1563. ^
  1564. -stdin-:<main>:4:14: Error: Can't unwrap PostgreSQL type
  1565. 'inf' following and 'inf' following);
  1566. ^
  1567. <sql-statement>
  1568. select id, f_float4, first_value(id) over w, last_value(id) over w
  1569. from numerics
  1570. window w as (order by f_float4 range between
  1571. 1.1 preceding and 'NaN' following); -- error, NaN disallowed
  1572. </sql-statement>
  1573. -stdin-:<main>: Error: Expression evaluation
  1574. -stdin-:<main>:3:13: Error: At function: EvaluateExpr
  1575. window w as (order by f_float4 range between
  1576. ^
  1577. -stdin-:<main>: Error: Type annotation
  1578. -stdin-:<main>:3:13: Error: At function: Unwrap
  1579. window w as (order by f_float4 range between
  1580. ^
  1581. -stdin-:<main>:4:14: Error: Can't unwrap PostgreSQL type
  1582. 1.1 preceding and 'NaN' following); -- error, NaN disallowed
  1583. ^
  1584. <sql-statement>
  1585. select id, f_float8, first_value(id) over w, last_value(id) over w
  1586. from numerics
  1587. window w as (order by f_float8 range between
  1588. 1 preceding and 1 following);
  1589. </sql-statement>
  1590. -stdin-:<main>: Error: Type annotation
  1591. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem
  1592. select id, f_float8, first_value(id) over w, last_value(id) over w
  1593. ^
  1594. -stdin-:<main>:3:13: Error: At function: PgWindow
  1595. window w as (order by f_float8 range between
  1596. ^
  1597. -stdin-:<main>:3:13: Error: Unsupported frame type: range
  1598. window w as (order by f_float8 range between
  1599. ^
  1600. <sql-statement>
  1601. select id, f_float8, first_value(id) over w, last_value(id) over w
  1602. from numerics
  1603. window w as (order by f_float8 range between
  1604. 1 preceding and 1.1::float8 following);
  1605. </sql-statement>
  1606. -stdin-:<main>: Error: Expression evaluation
  1607. -stdin-:<main>:3:13: Error: At function: EvaluateExpr
  1608. window w as (order by f_float8 range between
  1609. ^
  1610. -stdin-:<main>: Error: Type annotation
  1611. -stdin-:<main>:3:13: Error: At function: Unwrap
  1612. window w as (order by f_float8 range between
  1613. ^
  1614. -stdin-:<main>:4:35: Error: Can't unwrap PostgreSQL type
  1615. 1 preceding and 1.1::float8 following);
  1616. ^
  1617. <sql-statement>
  1618. select id, f_float8, first_value(id) over w, last_value(id) over w
  1619. from numerics
  1620. window w as (order by f_float8 range between
  1621. 'inf' preceding and 'inf' following);
  1622. </sql-statement>
  1623. -stdin-:<main>: Error: Expression evaluation
  1624. -stdin-:<main>:3:13: Error: At function: EvaluateExpr
  1625. window w as (order by f_float8 range between
  1626. ^
  1627. -stdin-:<main>: Error: Type annotation
  1628. -stdin-:<main>:3:13: Error: At function: Unwrap
  1629. window w as (order by f_float8 range between
  1630. ^
  1631. -stdin-:<main>:4:14: Error: Can't unwrap PostgreSQL type
  1632. 'inf' preceding and 'inf' following);
  1633. ^
  1634. <sql-statement>
  1635. select id, f_float8, first_value(id) over w, last_value(id) over w
  1636. from numerics
  1637. window w as (order by f_float8 range between
  1638. 'inf' preceding and 'inf' preceding);
  1639. </sql-statement>
  1640. -stdin-:<main>: Error: Expression evaluation
  1641. -stdin-:<main>:3:13: Error: At function: EvaluateExpr
  1642. window w as (order by f_float8 range between
  1643. ^
  1644. -stdin-:<main>: Error: Type annotation
  1645. -stdin-:<main>:3:13: Error: At function: Unwrap
  1646. window w as (order by f_float8 range between
  1647. ^
  1648. -stdin-:<main>:4:14: Error: Can't unwrap PostgreSQL type
  1649. 'inf' preceding and 'inf' preceding);
  1650. ^
  1651. <sql-statement>
  1652. select id, f_float8, first_value(id) over w, last_value(id) over w
  1653. from numerics
  1654. window w as (order by f_float8 range between
  1655. 'inf' following and 'inf' following);
  1656. </sql-statement>
  1657. -stdin-:<main>: Error: Expression evaluation
  1658. -stdin-:<main>:3:13: Error: At function: EvaluateExpr
  1659. window w as (order by f_float8 range between
  1660. ^
  1661. -stdin-:<main>: Error: Type annotation
  1662. -stdin-:<main>:3:13: Error: At function: Unwrap
  1663. window w as (order by f_float8 range between
  1664. ^
  1665. -stdin-:<main>:4:14: Error: Can't unwrap PostgreSQL type
  1666. 'inf' following and 'inf' following);
  1667. ^
  1668. <sql-statement>
  1669. select id, f_float8, first_value(id) over w, last_value(id) over w
  1670. from numerics
  1671. window w as (order by f_float8 range between
  1672. 1.1 preceding and 'NaN' following); -- error, NaN disallowed
  1673. </sql-statement>
  1674. -stdin-:<main>: Error: Expression evaluation
  1675. -stdin-:<main>:3:13: Error: At function: EvaluateExpr
  1676. window w as (order by f_float8 range between
  1677. ^
  1678. -stdin-:<main>: Error: Type annotation
  1679. -stdin-:<main>:3:13: Error: At function: Unwrap
  1680. window w as (order by f_float8 range between
  1681. ^
  1682. -stdin-:<main>:4:14: Error: Can't unwrap PostgreSQL type
  1683. 1.1 preceding and 'NaN' following); -- error, NaN disallowed
  1684. ^
  1685. <sql-statement>
  1686. select id, f_numeric, first_value(id) over w, last_value(id) over w
  1687. from numerics
  1688. window w as (order by f_numeric range between
  1689. 1 preceding and 1 following);
  1690. </sql-statement>
  1691. -stdin-:<main>: Error: Type annotation
  1692. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem
  1693. select id, f_numeric, first_value(id) over w, last_value(id) over w
  1694. ^
  1695. -stdin-:<main>:3:13: Error: At function: PgWindow
  1696. window w as (order by f_numeric range between
  1697. ^
  1698. -stdin-:<main>:3:13: Error: Unsupported frame type: range
  1699. window w as (order by f_numeric range between
  1700. ^
  1701. <sql-statement>
  1702. select id, f_numeric, first_value(id) over w, last_value(id) over w
  1703. from numerics
  1704. window w as (order by f_numeric range between
  1705. 1 preceding and 1.1::numeric following);
  1706. </sql-statement>
  1707. -stdin-:<main>: Error: Expression evaluation
  1708. -stdin-:<main>:3:13: Error: At function: EvaluateExpr
  1709. window w as (order by f_numeric range between
  1710. ^
  1711. -stdin-:<main>: Error: Type annotation
  1712. -stdin-:<main>:3:13: Error: At function: Unwrap
  1713. window w as (order by f_numeric range between
  1714. ^
  1715. -stdin-:<main>:4:35: Error: Can't unwrap PostgreSQL type
  1716. 1 preceding and 1.1::numeric following);
  1717. ^
  1718. <sql-statement>
  1719. select id, f_numeric, first_value(id) over w, last_value(id) over w
  1720. from numerics
  1721. window w as (order by f_numeric range between
  1722. 1 preceding and 1.1::float8 following); -- currently unsupported
  1723. </sql-statement>
  1724. -stdin-:<main>: Error: Expression evaluation
  1725. -stdin-:<main>:3:13: Error: At function: EvaluateExpr
  1726. window w as (order by f_numeric range between
  1727. ^
  1728. -stdin-:<main>: Error: Type annotation
  1729. -stdin-:<main>:3:13: Error: At function: Unwrap
  1730. window w as (order by f_numeric range between
  1731. ^
  1732. -stdin-:<main>:4:35: Error: Can't unwrap PostgreSQL type
  1733. 1 preceding and 1.1::float8 following); -- currently unsupported
  1734. ^
  1735. <sql-statement>
  1736. select id, f_numeric, first_value(id) over w, last_value(id) over w
  1737. from numerics
  1738. window w as (order by f_numeric range between
  1739. 'inf' preceding and 'inf' following);
  1740. </sql-statement>
  1741. -stdin-:<main>: Error: Expression evaluation
  1742. -stdin-:<main>:3:13: Error: At function: EvaluateExpr
  1743. window w as (order by f_numeric range between
  1744. ^
  1745. -stdin-:<main>: Error: Type annotation
  1746. -stdin-:<main>:3:13: Error: At function: Unwrap
  1747. window w as (order by f_numeric range between
  1748. ^
  1749. -stdin-:<main>:4:14: Error: Can't unwrap PostgreSQL type
  1750. 'inf' preceding and 'inf' following);
  1751. ^
  1752. <sql-statement>
  1753. select id, f_numeric, first_value(id) over w, last_value(id) over w
  1754. from numerics
  1755. window w as (order by f_numeric range between
  1756. 'inf' preceding and 'inf' preceding);
  1757. </sql-statement>
  1758. -stdin-:<main>: Error: Expression evaluation
  1759. -stdin-:<main>:3:13: Error: At function: EvaluateExpr
  1760. window w as (order by f_numeric range between
  1761. ^
  1762. -stdin-:<main>: Error: Type annotation
  1763. -stdin-:<main>:3:13: Error: At function: Unwrap
  1764. window w as (order by f_numeric range between
  1765. ^
  1766. -stdin-:<main>:4:14: Error: Can't unwrap PostgreSQL type
  1767. 'inf' preceding and 'inf' preceding);
  1768. ^
  1769. <sql-statement>
  1770. select id, f_numeric, first_value(id) over w, last_value(id) over w
  1771. from numerics
  1772. window w as (order by f_numeric range between
  1773. 'inf' following and 'inf' following);
  1774. </sql-statement>
  1775. -stdin-:<main>: Error: Expression evaluation
  1776. -stdin-:<main>:3:13: Error: At function: EvaluateExpr
  1777. window w as (order by f_numeric range between
  1778. ^
  1779. -stdin-:<main>: Error: Type annotation
  1780. -stdin-:<main>:3:13: Error: At function: Unwrap
  1781. window w as (order by f_numeric range between
  1782. ^
  1783. -stdin-:<main>:4:14: Error: Can't unwrap PostgreSQL type
  1784. 'inf' following and 'inf' following);
  1785. ^
  1786. <sql-statement>
  1787. select id, f_numeric, first_value(id) over w, last_value(id) over w
  1788. from numerics
  1789. window w as (order by f_numeric range between
  1790. 1.1 preceding and 'NaN' following); -- error, NaN disallowed
  1791. </sql-statement>
  1792. -stdin-:<main>: Error: Expression evaluation
  1793. -stdin-:<main>:3:13: Error: At function: EvaluateExpr
  1794. window w as (order by f_numeric range between
  1795. ^
  1796. -stdin-:<main>: Error: Type annotation
  1797. -stdin-:<main>:3:13: Error: At function: Unwrap
  1798. window w as (order by f_numeric range between
  1799. ^
  1800. -stdin-:<main>:4:14: Error: Can't unwrap PostgreSQL type
  1801. 1.1 preceding and 'NaN' following); -- error, NaN disallowed
  1802. ^
  1803. <sql-statement>
  1804. -- Test in_range for other datetime datatypes
  1805. create temp table datetimes(
  1806. id int,
  1807. f_time time,
  1808. f_timetz timetz,
  1809. f_interval interval,
  1810. f_timestamptz timestamptz,
  1811. f_timestamp timestamp
  1812. );
  1813. </sql-statement>
  1814. <sql-statement>
  1815. insert into datetimes values
  1816. (1, '11:00', '11:00 BST', '1 year', '2000-10-19 10:23:54+01', '2000-10-19 10:23:54'),
  1817. (2, '12:00', '12:00 BST', '2 years', '2001-10-19 10:23:54+01', '2001-10-19 10:23:54'),
  1818. (3, '13:00', '13:00 BST', '3 years', '2001-10-19 10:23:54+01', '2001-10-19 10:23:54'),
  1819. (4, '14:00', '14:00 BST', '4 years', '2002-10-19 10:23:54+01', '2002-10-19 10:23:54'),
  1820. (5, '15:00', '15:00 BST', '5 years', '2003-10-19 10:23:54+01', '2003-10-19 10:23:54'),
  1821. (6, '15:00', '15:00 BST', '5 years', '2004-10-19 10:23:54+01', '2004-10-19 10:23:54'),
  1822. (7, '17:00', '17:00 BST', '7 years', '2005-10-19 10:23:54+01', '2005-10-19 10:23:54'),
  1823. (8, '18:00', '18:00 BST', '8 years', '2006-10-19 10:23:54+01', '2006-10-19 10:23:54'),
  1824. (9, '19:00', '19:00 BST', '9 years', '2007-10-19 10:23:54+01', '2007-10-19 10:23:54'),
  1825. (10, '20:00', '20:00 BST', '10 years', '2008-10-19 10:23:54+01', '2008-10-19 10:23:54');
  1826. </sql-statement>
  1827. -stdin-:<main>: Fatal: Execution
  1828. -stdin-:<main>:1:1: Fatal: Execution of node: YtFill!
  1829. insert into datetimes values
  1830. ^
  1831. -stdin-:<main>:1:1: Fatal: ERROR: invalid input syntax for type time with time zone: "11:00 BST"
  1832. insert into datetimes values
  1833. ^
  1834. <sql-statement>
  1835. select id, f_time, first_value(id) over w, last_value(id) over w
  1836. from datetimes
  1837. window w as (order by f_time range between
  1838. '70 min'::interval preceding and '2 hours'::interval following);
  1839. </sql-statement>
  1840. -stdin-:<main>: Error: Expression evaluation
  1841. -stdin-:<main>:3:13: Error: At function: EvaluateExpr
  1842. window w as (order by f_time range between
  1843. ^
  1844. -stdin-:<main>: Error: Type annotation
  1845. -stdin-:<main>:3:13: Error: At function: Unwrap
  1846. window w as (order by f_time range between
  1847. ^
  1848. -stdin-:<main>:4:24: Error: Can't unwrap PostgreSQL type
  1849. '70 min'::interval preceding and '2 hours'::interval following);
  1850. ^
  1851. <sql-statement>
  1852. select id, f_time, first_value(id) over w, last_value(id) over w
  1853. from datetimes
  1854. window w as (order by f_time desc range between
  1855. '70 min' preceding and '2 hours' following);
  1856. </sql-statement>
  1857. -stdin-:<main>: Error: Expression evaluation
  1858. -stdin-:<main>:3:13: Error: At function: EvaluateExpr
  1859. window w as (order by f_time desc range between
  1860. ^
  1861. -stdin-:<main>: Error: Type annotation
  1862. -stdin-:<main>:3:13: Error: At function: Unwrap
  1863. window w as (order by f_time desc range between
  1864. ^
  1865. -stdin-:<main>:4:14: Error: Can't unwrap PostgreSQL type
  1866. '70 min' preceding and '2 hours' following);
  1867. ^
  1868. <sql-statement>
  1869. select id, f_timetz, first_value(id) over w, last_value(id) over w
  1870. from datetimes
  1871. window w as (order by f_timetz range between
  1872. '70 min'::interval preceding and '2 hours'::interval following);
  1873. </sql-statement>
  1874. -stdin-:<main>: Error: Expression evaluation
  1875. -stdin-:<main>:3:13: Error: At function: EvaluateExpr
  1876. window w as (order by f_timetz range between
  1877. ^
  1878. -stdin-:<main>: Error: Type annotation
  1879. -stdin-:<main>:3:13: Error: At function: Unwrap
  1880. window w as (order by f_timetz range between
  1881. ^
  1882. -stdin-:<main>:4:24: Error: Can't unwrap PostgreSQL type
  1883. '70 min'::interval preceding and '2 hours'::interval following);
  1884. ^
  1885. <sql-statement>
  1886. select id, f_timetz, first_value(id) over w, last_value(id) over w
  1887. from datetimes
  1888. window w as (order by f_timetz desc range between
  1889. '70 min' preceding and '2 hours' following);
  1890. </sql-statement>
  1891. -stdin-:<main>: Error: Expression evaluation
  1892. -stdin-:<main>:3:13: Error: At function: EvaluateExpr
  1893. window w as (order by f_timetz desc range between
  1894. ^
  1895. -stdin-:<main>: Error: Type annotation
  1896. -stdin-:<main>:3:13: Error: At function: Unwrap
  1897. window w as (order by f_timetz desc range between
  1898. ^
  1899. -stdin-:<main>:4:14: Error: Can't unwrap PostgreSQL type
  1900. '70 min' preceding and '2 hours' following);
  1901. ^
  1902. <sql-statement>
  1903. select id, f_interval, first_value(id) over w, last_value(id) over w
  1904. from datetimes
  1905. window w as (order by f_interval range between
  1906. '1 year'::interval preceding and '1 year'::interval following);
  1907. </sql-statement>
  1908. -stdin-:<main>: Error: Expression evaluation
  1909. -stdin-:<main>:3:13: Error: At function: EvaluateExpr
  1910. window w as (order by f_interval range between
  1911. ^
  1912. -stdin-:<main>: Error: Type annotation
  1913. -stdin-:<main>:3:13: Error: At function: Unwrap
  1914. window w as (order by f_interval range between
  1915. ^
  1916. -stdin-:<main>:4:24: Error: Can't unwrap PostgreSQL type
  1917. '1 year'::interval preceding and '1 year'::interval following);
  1918. ^
  1919. <sql-statement>
  1920. select id, f_interval, first_value(id) over w, last_value(id) over w
  1921. from datetimes
  1922. window w as (order by f_interval desc range between
  1923. '1 year' preceding and '1 year' following);
  1924. </sql-statement>
  1925. -stdin-:<main>: Error: Expression evaluation
  1926. -stdin-:<main>:3:13: Error: At function: EvaluateExpr
  1927. window w as (order by f_interval desc range between
  1928. ^
  1929. -stdin-:<main>: Error: Type annotation
  1930. -stdin-:<main>:3:13: Error: At function: Unwrap
  1931. window w as (order by f_interval desc range between
  1932. ^
  1933. -stdin-:<main>:4:14: Error: Can't unwrap PostgreSQL type
  1934. '1 year' preceding and '1 year' following);
  1935. ^
  1936. <sql-statement>
  1937. select id, f_timestamptz, first_value(id) over w, last_value(id) over w
  1938. from datetimes
  1939. window w as (order by f_timestamptz range between
  1940. '1 year'::interval preceding and '1 year'::interval following);
  1941. </sql-statement>
  1942. -stdin-:<main>: Error: Expression evaluation
  1943. -stdin-:<main>:3:13: Error: At function: EvaluateExpr
  1944. window w as (order by f_timestamptz range between
  1945. ^
  1946. -stdin-:<main>: Error: Type annotation
  1947. -stdin-:<main>:3:13: Error: At function: Unwrap
  1948. window w as (order by f_timestamptz range between
  1949. ^
  1950. -stdin-:<main>:4:24: Error: Can't unwrap PostgreSQL type
  1951. '1 year'::interval preceding and '1 year'::interval following);
  1952. ^
  1953. <sql-statement>
  1954. select id, f_timestamptz, first_value(id) over w, last_value(id) over w
  1955. from datetimes
  1956. window w as (order by f_timestamptz desc range between
  1957. '1 year' preceding and '1 year' following);
  1958. </sql-statement>
  1959. -stdin-:<main>: Error: Expression evaluation
  1960. -stdin-:<main>:3:13: Error: At function: EvaluateExpr
  1961. window w as (order by f_timestamptz desc range between
  1962. ^
  1963. -stdin-:<main>: Error: Type annotation
  1964. -stdin-:<main>:3:13: Error: At function: Unwrap
  1965. window w as (order by f_timestamptz desc range between
  1966. ^
  1967. -stdin-:<main>:4:14: Error: Can't unwrap PostgreSQL type
  1968. '1 year' preceding and '1 year' following);
  1969. ^
  1970. <sql-statement>
  1971. select id, f_timestamp, first_value(id) over w, last_value(id) over w
  1972. from datetimes
  1973. window w as (order by f_timestamp range between
  1974. '1 year'::interval preceding and '1 year'::interval following);
  1975. </sql-statement>
  1976. -stdin-:<main>: Error: Expression evaluation
  1977. -stdin-:<main>:3:13: Error: At function: EvaluateExpr
  1978. window w as (order by f_timestamp range between
  1979. ^
  1980. -stdin-:<main>: Error: Type annotation
  1981. -stdin-:<main>:3:13: Error: At function: Unwrap
  1982. window w as (order by f_timestamp range between
  1983. ^
  1984. -stdin-:<main>:4:24: Error: Can't unwrap PostgreSQL type
  1985. '1 year'::interval preceding and '1 year'::interval following);
  1986. ^
  1987. <sql-statement>
  1988. select id, f_timestamp, first_value(id) over w, last_value(id) over w
  1989. from datetimes
  1990. window w as (order by f_timestamp desc range between
  1991. '1 year' preceding and '1 year' following);
  1992. </sql-statement>
  1993. -stdin-:<main>: Error: Expression evaluation
  1994. -stdin-:<main>:3:13: Error: At function: EvaluateExpr
  1995. window w as (order by f_timestamp desc range between
  1996. ^
  1997. -stdin-:<main>: Error: Type annotation
  1998. -stdin-:<main>:3:13: Error: At function: Unwrap
  1999. window w as (order by f_timestamp desc range between
  2000. ^
  2001. -stdin-:<main>:4:14: Error: Can't unwrap PostgreSQL type
  2002. '1 year' preceding and '1 year' following);
  2003. ^
  2004. <sql-statement>
  2005. -- RANGE offset PRECEDING/FOLLOWING error cases
  2006. select sum(salary) over (order by enroll_date, salary range between '1 year'::interval preceding and '2 years'::interval following
  2007. exclude ties), salary, enroll_date from empsalary;
  2008. </sql-statement>
  2009. -stdin-:<main>: Error: Expression evaluation
  2010. -stdin-:<main>:2:25: Error: At function: EvaluateExpr
  2011. select sum(salary) over (order by enroll_date, salary range between '1 year'::interval preceding and '2 years'::interval following
  2012. ^
  2013. -stdin-:<main>: Error: Type annotation
  2014. -stdin-:<main>:2:25: Error: At function: Unwrap
  2015. select sum(salary) over (order by enroll_date, salary range between '1 year'::interval preceding and '2 years'::interval following
  2016. ^
  2017. -stdin-:<main>:2:79: Error: Can't unwrap PostgreSQL type
  2018. select sum(salary) over (order by enroll_date, salary range between '1 year'::interval preceding and '2 years'::interval following
  2019. ^
  2020. <sql-statement>
  2021. select sum(salary) over (range between '1 year'::interval preceding and '2 years'::interval following
  2022. exclude ties), salary, enroll_date from empsalary;
  2023. </sql-statement>
  2024. -stdin-:<main>: Error: Expression evaluation
  2025. -stdin-:<main>:1:25: Error: At function: EvaluateExpr
  2026. select sum(salary) over (range between '1 year'::interval preceding and '2 years'::interval following
  2027. ^
  2028. -stdin-:<main>: Error: Type annotation
  2029. -stdin-:<main>:1:25: Error: At function: Unwrap
  2030. select sum(salary) over (range between '1 year'::interval preceding and '2 years'::interval following
  2031. ^
  2032. -stdin-:<main>:1:50: Error: Can't unwrap PostgreSQL type
  2033. select sum(salary) over (range between '1 year'::interval preceding and '2 years'::interval following
  2034. ^
  2035. <sql-statement>
  2036. select sum(salary) over (order by depname range between '1 year'::interval preceding and '2 years'::interval following
  2037. exclude ties), salary, enroll_date from empsalary;
  2038. </sql-statement>
  2039. -stdin-:<main>: Error: Expression evaluation
  2040. -stdin-:<main>:1:25: Error: At function: EvaluateExpr
  2041. select sum(salary) over (order by depname range between '1 year'::interval preceding and '2 years'::interval following
  2042. ^
  2043. -stdin-:<main>: Error: Type annotation
  2044. -stdin-:<main>:1:25: Error: At function: Unwrap
  2045. select sum(salary) over (order by depname range between '1 year'::interval preceding and '2 years'::interval following
  2046. ^
  2047. -stdin-:<main>:1:67: Error: Can't unwrap PostgreSQL type
  2048. select sum(salary) over (order by depname range between '1 year'::interval preceding and '2 years'::interval following
  2049. ^
  2050. <sql-statement>
  2051. select max(enroll_date) over (order by enroll_date range between 1 preceding and 2 following
  2052. exclude ties), salary, enroll_date from empsalary;
  2053. </sql-statement>
  2054. -stdin-:<main>: Error: Type annotation
  2055. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem
  2056. select max(enroll_date) over (order by enroll_date range between 1 preceding and 2 following
  2057. ^
  2058. -stdin-:<main>:1:30: Error: At function: PgWindow
  2059. select max(enroll_date) over (order by enroll_date range between 1 preceding and 2 following
  2060. ^
  2061. -stdin-:<main>:1:30: Error: Excludes are not supported
  2062. select max(enroll_date) over (order by enroll_date range between 1 preceding and 2 following
  2063. ^
  2064. <sql-statement>
  2065. select max(enroll_date) over (order by salary range between -1 preceding and 2 following
  2066. exclude ties), salary, enroll_date from empsalary;
  2067. </sql-statement>
  2068. -stdin-:<main>: Error: Type annotation
  2069. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem
  2070. select max(enroll_date) over (order by salary range between -1 preceding and 2 following
  2071. ^
  2072. -stdin-:<main>:1:30: Error: At function: PgWindow
  2073. select max(enroll_date) over (order by salary range between -1 preceding and 2 following
  2074. ^
  2075. -stdin-:<main>:1:30: Error: Excludes are not supported
  2076. select max(enroll_date) over (order by salary range between -1 preceding and 2 following
  2077. ^
  2078. <sql-statement>
  2079. select max(enroll_date) over (order by salary range between 1 preceding and -2 following
  2080. exclude ties), salary, enroll_date from empsalary;
  2081. </sql-statement>
  2082. -stdin-:<main>: Error: Type annotation
  2083. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem
  2084. select max(enroll_date) over (order by salary range between 1 preceding and -2 following
  2085. ^
  2086. -stdin-:<main>:1:30: Error: At function: PgWindow
  2087. select max(enroll_date) over (order by salary range between 1 preceding and -2 following
  2088. ^
  2089. -stdin-:<main>:1:30: Error: Excludes are not supported
  2090. select max(enroll_date) over (order by salary range between 1 preceding and -2 following
  2091. ^
  2092. <sql-statement>
  2093. select max(enroll_date) over (order by salary range between '1 year'::interval preceding and '2 years'::interval following
  2094. exclude ties), salary, enroll_date from empsalary;
  2095. </sql-statement>
  2096. -stdin-:<main>: Error: Expression evaluation
  2097. -stdin-:<main>:1:30: Error: At function: EvaluateExpr
  2098. select max(enroll_date) over (order by salary range between '1 year'::interval preceding and '2 years'::interval following
  2099. ^
  2100. -stdin-:<main>: Error: Type annotation
  2101. -stdin-:<main>:1:30: Error: At function: Unwrap
  2102. select max(enroll_date) over (order by salary range between '1 year'::interval preceding and '2 years'::interval following
  2103. ^
  2104. -stdin-:<main>:1:71: Error: Can't unwrap PostgreSQL type
  2105. select max(enroll_date) over (order by salary range between '1 year'::interval preceding and '2 years'::interval following
  2106. ^
  2107. <sql-statement>
  2108. select max(enroll_date) over (order by enroll_date range between '1 year'::interval preceding and '-2 years'::interval following
  2109. exclude ties), salary, enroll_date from empsalary;
  2110. </sql-statement>
  2111. -stdin-:<main>: Error: Expression evaluation
  2112. -stdin-:<main>:1:30: Error: At function: EvaluateExpr
  2113. select max(enroll_date) over (order by enroll_date range between '1 year'::interval preceding and '-2 years'::interval following
  2114. ^
  2115. -stdin-:<main>: Error: Type annotation
  2116. -stdin-:<main>:1:30: Error: At function: Unwrap
  2117. select max(enroll_date) over (order by enroll_date range between '1 year'::interval preceding and '-2 years'::interval following
  2118. ^
  2119. -stdin-:<main>:1:76: Error: Can't unwrap PostgreSQL type
  2120. select max(enroll_date) over (order by enroll_date range between '1 year'::interval preceding and '-2 years'::interval following
  2121. ^
  2122. <sql-statement>
  2123. -- GROUPS tests
  2124. SELECT sum(unique1) over (order by four groups between unbounded preceding and current row),
  2125. unique1, four
  2126. FROM tenk1 WHERE unique1 < 10;
  2127. </sql-statement>
  2128. -stdin-:<main>: Error: Type annotation
  2129. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem
  2130. -- GROUPS tests
  2131. ^
  2132. -stdin-:<main>:2:26: Error: At function: PgWindow
  2133. SELECT sum(unique1) over (order by four groups between unbounded preceding and current row),
  2134. ^
  2135. -stdin-:<main>:2:26: Error: Unsupported frame type: groups
  2136. SELECT sum(unique1) over (order by four groups between unbounded preceding and current row),
  2137. ^
  2138. <sql-statement>
  2139. SELECT sum(unique1) over (order by four groups between unbounded preceding and unbounded following),
  2140. unique1, four
  2141. FROM tenk1 WHERE unique1 < 10;
  2142. </sql-statement>
  2143. -stdin-:<main>: Error: Type annotation
  2144. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem
  2145. SELECT sum(unique1) over (order by four groups between unbounded preceding and unbounded following),
  2146. ^
  2147. -stdin-:<main>:1:26: Error: At function: PgWindow
  2148. SELECT sum(unique1) over (order by four groups between unbounded preceding and unbounded following),
  2149. ^
  2150. -stdin-:<main>:1:26: Error: Unsupported frame type: groups
  2151. SELECT sum(unique1) over (order by four groups between unbounded preceding and unbounded following),
  2152. ^
  2153. <sql-statement>
  2154. SELECT sum(unique1) over (order by four groups between current row and unbounded following),
  2155. unique1, four
  2156. FROM tenk1 WHERE unique1 < 10;
  2157. </sql-statement>
  2158. -stdin-:<main>: Error: Type annotation
  2159. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem
  2160. SELECT sum(unique1) over (order by four groups between current row and unbounded following),
  2161. ^
  2162. -stdin-:<main>:1:26: Error: At function: PgWindow
  2163. SELECT sum(unique1) over (order by four groups between current row and unbounded following),
  2164. ^
  2165. -stdin-:<main>:1:26: Error: Unsupported frame type: groups
  2166. SELECT sum(unique1) over (order by four groups between current row and unbounded following),
  2167. ^
  2168. <sql-statement>
  2169. SELECT sum(unique1) over (order by four groups between 1 preceding and unbounded following),
  2170. unique1, four
  2171. FROM tenk1 WHERE unique1 < 10;
  2172. </sql-statement>
  2173. -stdin-:<main>: Error: Type annotation
  2174. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem
  2175. SELECT sum(unique1) over (order by four groups between 1 preceding and unbounded following),
  2176. ^
  2177. -stdin-:<main>:1:26: Error: At function: PgWindow
  2178. SELECT sum(unique1) over (order by four groups between 1 preceding and unbounded following),
  2179. ^
  2180. -stdin-:<main>:1:26: Error: Unsupported frame type: groups
  2181. SELECT sum(unique1) over (order by four groups between 1 preceding and unbounded following),
  2182. ^
  2183. <sql-statement>
  2184. SELECT sum(unique1) over (order by four groups between 1 following and unbounded following),
  2185. unique1, four
  2186. FROM tenk1 WHERE unique1 < 10;
  2187. </sql-statement>
  2188. -stdin-:<main>: Error: Type annotation
  2189. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem
  2190. SELECT sum(unique1) over (order by four groups between 1 following and unbounded following),
  2191. ^
  2192. -stdin-:<main>:1:26: Error: At function: PgWindow
  2193. SELECT sum(unique1) over (order by four groups between 1 following and unbounded following),
  2194. ^
  2195. -stdin-:<main>:1:26: Error: Unsupported frame type: groups
  2196. SELECT sum(unique1) over (order by four groups between 1 following and unbounded following),
  2197. ^
  2198. <sql-statement>
  2199. SELECT sum(unique1) over (order by four groups between unbounded preceding and 2 following),
  2200. unique1, four
  2201. FROM tenk1 WHERE unique1 < 10;
  2202. </sql-statement>
  2203. -stdin-:<main>: Error: Type annotation
  2204. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem
  2205. SELECT sum(unique1) over (order by four groups between unbounded preceding and 2 following),
  2206. ^
  2207. -stdin-:<main>:1:26: Error: At function: PgWindow
  2208. SELECT sum(unique1) over (order by four groups between unbounded preceding and 2 following),
  2209. ^
  2210. -stdin-:<main>:1:26: Error: Unsupported frame type: groups
  2211. SELECT sum(unique1) over (order by four groups between unbounded preceding and 2 following),
  2212. ^
  2213. <sql-statement>
  2214. SELECT sum(unique1) over (order by four groups between 2 preceding and 1 preceding),
  2215. unique1, four
  2216. FROM tenk1 WHERE unique1 < 10;
  2217. </sql-statement>
  2218. -stdin-:<main>: Error: Type annotation
  2219. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem
  2220. SELECT sum(unique1) over (order by four groups between 2 preceding and 1 preceding),
  2221. ^
  2222. -stdin-:<main>:1:26: Error: At function: PgWindow
  2223. SELECT sum(unique1) over (order by four groups between 2 preceding and 1 preceding),
  2224. ^
  2225. -stdin-:<main>:1:26: Error: Unsupported frame type: groups
  2226. SELECT sum(unique1) over (order by four groups between 2 preceding and 1 preceding),
  2227. ^
  2228. <sql-statement>
  2229. SELECT sum(unique1) over (order by four groups between 2 preceding and 1 following),
  2230. unique1, four
  2231. FROM tenk1 WHERE unique1 < 10;
  2232. </sql-statement>
  2233. -stdin-:<main>: Error: Type annotation
  2234. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem
  2235. SELECT sum(unique1) over (order by four groups between 2 preceding and 1 following),
  2236. ^
  2237. -stdin-:<main>:1:26: Error: At function: PgWindow
  2238. SELECT sum(unique1) over (order by four groups between 2 preceding and 1 following),
  2239. ^
  2240. -stdin-:<main>:1:26: Error: Unsupported frame type: groups
  2241. SELECT sum(unique1) over (order by four groups between 2 preceding and 1 following),
  2242. ^
  2243. <sql-statement>
  2244. SELECT sum(unique1) over (order by four groups between 0 preceding and 0 following),
  2245. unique1, four
  2246. FROM tenk1 WHERE unique1 < 10;
  2247. </sql-statement>
  2248. -stdin-:<main>: Error: Type annotation
  2249. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem
  2250. SELECT sum(unique1) over (order by four groups between 0 preceding and 0 following),
  2251. ^
  2252. -stdin-:<main>:1:26: Error: At function: PgWindow
  2253. SELECT sum(unique1) over (order by four groups between 0 preceding and 0 following),
  2254. ^
  2255. -stdin-:<main>:1:26: Error: Unsupported frame type: groups
  2256. SELECT sum(unique1) over (order by four groups between 0 preceding and 0 following),
  2257. ^
  2258. <sql-statement>
  2259. SELECT sum(unique1) over (order by four groups between 2 preceding and 1 following
  2260. exclude current row), unique1, four
  2261. FROM tenk1 WHERE unique1 < 10;
  2262. </sql-statement>
  2263. -stdin-:<main>: Error: Type annotation
  2264. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem
  2265. SELECT sum(unique1) over (order by four groups between 2 preceding and 1 following
  2266. ^
  2267. -stdin-:<main>:1:26: Error: At function: PgWindow
  2268. SELECT sum(unique1) over (order by four groups between 2 preceding and 1 following
  2269. ^
  2270. -stdin-:<main>:1:26: Error: Excludes are not supported
  2271. SELECT sum(unique1) over (order by four groups between 2 preceding and 1 following
  2272. ^
  2273. <sql-statement>
  2274. SELECT sum(unique1) over (order by four groups between 2 preceding and 1 following
  2275. exclude group), unique1, four
  2276. FROM tenk1 WHERE unique1 < 10;
  2277. </sql-statement>
  2278. -stdin-:<main>: Error: Type annotation
  2279. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem
  2280. SELECT sum(unique1) over (order by four groups between 2 preceding and 1 following
  2281. ^
  2282. -stdin-:<main>:1:26: Error: At function: PgWindow
  2283. SELECT sum(unique1) over (order by four groups between 2 preceding and 1 following
  2284. ^
  2285. -stdin-:<main>:1:26: Error: Excludes are not supported
  2286. SELECT sum(unique1) over (order by four groups between 2 preceding and 1 following
  2287. ^
  2288. <sql-statement>
  2289. SELECT sum(unique1) over (order by four groups between 2 preceding and 1 following
  2290. exclude ties), unique1, four
  2291. FROM tenk1 WHERE unique1 < 10;
  2292. </sql-statement>
  2293. -stdin-:<main>: Error: Type annotation
  2294. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem
  2295. SELECT sum(unique1) over (order by four groups between 2 preceding and 1 following
  2296. ^
  2297. -stdin-:<main>:1:26: Error: At function: PgWindow
  2298. SELECT sum(unique1) over (order by four groups between 2 preceding and 1 following
  2299. ^
  2300. -stdin-:<main>:1:26: Error: Excludes are not supported
  2301. SELECT sum(unique1) over (order by four groups between 2 preceding and 1 following
  2302. ^
  2303. <sql-statement>
  2304. SELECT sum(unique1) over (partition by ten
  2305. order by four groups between 0 preceding and 0 following),unique1, four, ten
  2306. FROM tenk1 WHERE unique1 < 10;
  2307. </sql-statement>
  2308. -stdin-:<main>: Error: Type annotation
  2309. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem
  2310. SELECT sum(unique1) over (partition by ten
  2311. ^
  2312. -stdin-:<main>:1:26: Error: At function: PgWindow
  2313. SELECT sum(unique1) over (partition by ten
  2314. ^
  2315. -stdin-:<main>:1:26: Error: Unsupported frame type: groups
  2316. SELECT sum(unique1) over (partition by ten
  2317. ^
  2318. <sql-statement>
  2319. SELECT sum(unique1) over (partition by ten
  2320. order by four groups between 0 preceding and 0 following exclude current row), unique1, four, ten
  2321. FROM tenk1 WHERE unique1 < 10;
  2322. </sql-statement>
  2323. -stdin-:<main>: Error: Type annotation
  2324. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem
  2325. SELECT sum(unique1) over (partition by ten
  2326. ^
  2327. -stdin-:<main>:1:26: Error: At function: PgWindow
  2328. SELECT sum(unique1) over (partition by ten
  2329. ^
  2330. -stdin-:<main>:1:26: Error: Excludes are not supported
  2331. SELECT sum(unique1) over (partition by ten
  2332. ^
  2333. <sql-statement>
  2334. SELECT sum(unique1) over (partition by ten
  2335. order by four groups between 0 preceding and 0 following exclude group), unique1, four, ten
  2336. FROM tenk1 WHERE unique1 < 10;
  2337. </sql-statement>
  2338. -stdin-:<main>: Error: Type annotation
  2339. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem
  2340. SELECT sum(unique1) over (partition by ten
  2341. ^
  2342. -stdin-:<main>:1:26: Error: At function: PgWindow
  2343. SELECT sum(unique1) over (partition by ten
  2344. ^
  2345. -stdin-:<main>:1:26: Error: Excludes are not supported
  2346. SELECT sum(unique1) over (partition by ten
  2347. ^
  2348. <sql-statement>
  2349. SELECT sum(unique1) over (partition by ten
  2350. order by four groups between 0 preceding and 0 following exclude ties), unique1, four, ten
  2351. FROM tenk1 WHERE unique1 < 10;
  2352. </sql-statement>
  2353. -stdin-:<main>: Error: Type annotation
  2354. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem
  2355. SELECT sum(unique1) over (partition by ten
  2356. ^
  2357. -stdin-:<main>:1:26: Error: At function: PgWindow
  2358. SELECT sum(unique1) over (partition by ten
  2359. ^
  2360. -stdin-:<main>:1:26: Error: Excludes are not supported
  2361. SELECT sum(unique1) over (partition by ten
  2362. ^
  2363. <sql-statement>
  2364. select first_value(salary) over(order by enroll_date groups between 1 preceding and 1 following),
  2365. lead(salary) over(order by enroll_date groups between 1 preceding and 1 following),
  2366. nth_value(salary, 1) over(order by enroll_date groups between 1 preceding and 1 following),
  2367. salary, enroll_date from empsalary;
  2368. </sql-statement>
  2369. -stdin-:<main>: Error: Type annotation
  2370. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem
  2371. select first_value(salary) over(order by enroll_date groups between 1 preceding and 1 following),
  2372. ^
  2373. -stdin-:<main>:1:32: Error: At function: PgWindow
  2374. select first_value(salary) over(order by enroll_date groups between 1 preceding and 1 following),
  2375. ^
  2376. -stdin-:<main>:1:32: Error: Unsupported frame type: groups
  2377. select first_value(salary) over(order by enroll_date groups between 1 preceding and 1 following),
  2378. ^
  2379. -stdin-:<main>:2:19: Error: At function: PgWindow
  2380. lead(salary) over(order by enroll_date groups between 1 preceding and 1 following),
  2381. ^
  2382. -stdin-:<main>:2:19: Error: Unsupported frame type: groups
  2383. lead(salary) over(order by enroll_date groups between 1 preceding and 1 following),
  2384. ^
  2385. -stdin-:<main>:3:27: Error: At function: PgWindow
  2386. nth_value(salary, 1) over(order by enroll_date groups between 1 preceding and 1 following),
  2387. ^
  2388. -stdin-:<main>:3:27: Error: Unsupported frame type: groups
  2389. nth_value(salary, 1) over(order by enroll_date groups between 1 preceding and 1 following),
  2390. ^
  2391. <sql-statement>
  2392. select last_value(salary) over(order by enroll_date groups between 1 preceding and 1 following),
  2393. lag(salary) over(order by enroll_date groups between 1 preceding and 1 following),
  2394. salary, enroll_date from empsalary;
  2395. </sql-statement>
  2396. -stdin-:<main>: Error: Type annotation
  2397. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem
  2398. select last_value(salary) over(order by enroll_date groups between 1 preceding and 1 following),
  2399. ^
  2400. -stdin-:<main>:1:31: Error: At function: PgWindow
  2401. select last_value(salary) over(order by enroll_date groups between 1 preceding and 1 following),
  2402. ^
  2403. -stdin-:<main>:1:31: Error: Unsupported frame type: groups
  2404. select last_value(salary) over(order by enroll_date groups between 1 preceding and 1 following),
  2405. ^
  2406. -stdin-:<main>:2:18: Error: At function: PgWindow
  2407. lag(salary) over(order by enroll_date groups between 1 preceding and 1 following),
  2408. ^
  2409. -stdin-:<main>:2:18: Error: Unsupported frame type: groups
  2410. lag(salary) over(order by enroll_date groups between 1 preceding and 1 following),
  2411. ^
  2412. <sql-statement>
  2413. select first_value(salary) over(order by enroll_date groups between 1 following and 3 following
  2414. exclude current row),
  2415. lead(salary) over(order by enroll_date groups between 1 following and 3 following exclude ties),
  2416. nth_value(salary, 1) over(order by enroll_date groups between 1 following and 3 following
  2417. exclude ties),
  2418. salary, enroll_date from empsalary;
  2419. </sql-statement>
  2420. -stdin-:<main>: Error: Type annotation
  2421. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem
  2422. select first_value(salary) over(order by enroll_date groups between 1 following and 3 following
  2423. ^
  2424. -stdin-:<main>:1:32: Error: At function: PgWindow
  2425. select first_value(salary) over(order by enroll_date groups between 1 following and 3 following
  2426. ^
  2427. -stdin-:<main>:1:32: Error: Excludes are not supported
  2428. select first_value(salary) over(order by enroll_date groups between 1 following and 3 following
  2429. ^
  2430. -stdin-:<main>:3:19: Error: At function: PgWindow
  2431. lead(salary) over(order by enroll_date groups between 1 following and 3 following exclude ties),
  2432. ^
  2433. -stdin-:<main>:3:19: Error: Excludes are not supported
  2434. lead(salary) over(order by enroll_date groups between 1 following and 3 following exclude ties),
  2435. ^
  2436. -stdin-:<main>:4:27: Error: At function: PgWindow
  2437. nth_value(salary, 1) over(order by enroll_date groups between 1 following and 3 following
  2438. ^
  2439. -stdin-:<main>:4:27: Error: Excludes are not supported
  2440. nth_value(salary, 1) over(order by enroll_date groups between 1 following and 3 following
  2441. ^
  2442. <sql-statement>
  2443. select last_value(salary) over(order by enroll_date groups between 1 following and 3 following
  2444. exclude group),
  2445. lag(salary) over(order by enroll_date groups between 1 following and 3 following exclude group),
  2446. salary, enroll_date from empsalary;
  2447. </sql-statement>
  2448. -stdin-:<main>: Error: Type annotation
  2449. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem
  2450. select last_value(salary) over(order by enroll_date groups between 1 following and 3 following
  2451. ^
  2452. -stdin-:<main>:1:31: Error: At function: PgWindow
  2453. select last_value(salary) over(order by enroll_date groups between 1 following and 3 following
  2454. ^
  2455. -stdin-:<main>:1:31: Error: Excludes are not supported
  2456. select last_value(salary) over(order by enroll_date groups between 1 following and 3 following
  2457. ^
  2458. -stdin-:<main>:3:18: Error: At function: PgWindow
  2459. lag(salary) over(order by enroll_date groups between 1 following and 3 following exclude group),
  2460. ^
  2461. -stdin-:<main>:3:18: Error: Excludes are not supported
  2462. lag(salary) over(order by enroll_date groups between 1 following and 3 following exclude group),
  2463. ^
  2464. <sql-statement>
  2465. -- Show differences in offset interpretation between ROWS, RANGE, and GROUPS
  2466. WITH cte (x) AS (
  2467. SELECT * FROM generate_series(1, 35, 2)
  2468. )
  2469. SELECT x, (sum(x) over w)
  2470. FROM cte
  2471. WINDOW w AS (ORDER BY x rows between 1 preceding and 1 following);
  2472. </sql-statement>
  2473. <sql-statement>
  2474. WITH cte (x) AS (
  2475. SELECT * FROM generate_series(1, 35, 2)
  2476. )
  2477. SELECT x, (sum(x) over w)
  2478. FROM cte
  2479. WINDOW w AS (ORDER BY x range between 1 preceding and 1 following);
  2480. </sql-statement>
  2481. -stdin-:<main>: Error: Type annotation
  2482. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem
  2483. WITH cte (x) AS (
  2484. ^
  2485. -stdin-:<main>:6:13: Error: At function: PgWindow
  2486. WINDOW w AS (ORDER BY x range between 1 preceding and 1 following);
  2487. ^
  2488. -stdin-:<main>:6:13: Error: Unsupported frame type: range
  2489. WINDOW w AS (ORDER BY x range between 1 preceding and 1 following);
  2490. ^
  2491. <sql-statement>
  2492. WITH cte (x) AS (
  2493. SELECT * FROM generate_series(1, 35, 2)
  2494. )
  2495. SELECT x, (sum(x) over w)
  2496. FROM cte
  2497. WINDOW w AS (ORDER BY x groups between 1 preceding and 1 following);
  2498. </sql-statement>
  2499. -stdin-:<main>: Error: Type annotation
  2500. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem
  2501. WITH cte (x) AS (
  2502. ^
  2503. -stdin-:<main>:6:13: Error: At function: PgWindow
  2504. WINDOW w AS (ORDER BY x groups between 1 preceding and 1 following);
  2505. ^
  2506. -stdin-:<main>:6:13: Error: Unsupported frame type: groups
  2507. WINDOW w AS (ORDER BY x groups between 1 preceding and 1 following);
  2508. ^
  2509. <sql-statement>
  2510. WITH cte (x) AS (
  2511. select 1 union all select 1 union all select 1 union all
  2512. SELECT * FROM generate_series(5, 49, 2)
  2513. )
  2514. SELECT x, (sum(x) over w)
  2515. FROM cte
  2516. WINDOW w AS (ORDER BY x rows between 1 preceding and 1 following);
  2517. </sql-statement>
  2518. <sql-statement>
  2519. WITH cte (x) AS (
  2520. select 1 union all select 1 union all select 1 union all
  2521. SELECT * FROM generate_series(5, 49, 2)
  2522. )
  2523. SELECT x, (sum(x) over w)
  2524. FROM cte
  2525. WINDOW w AS (ORDER BY x range between 1 preceding and 1 following);
  2526. </sql-statement>
  2527. -stdin-:<main>: Error: Type annotation
  2528. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem
  2529. WITH cte (x) AS (
  2530. ^
  2531. -stdin-:<main>:7:13: Error: At function: PgWindow
  2532. WINDOW w AS (ORDER BY x range between 1 preceding and 1 following);
  2533. ^
  2534. -stdin-:<main>:7:13: Error: Unsupported frame type: range
  2535. WINDOW w AS (ORDER BY x range between 1 preceding and 1 following);
  2536. ^
  2537. <sql-statement>
  2538. WITH cte (x) AS (
  2539. select 1 union all select 1 union all select 1 union all
  2540. SELECT * FROM generate_series(5, 49, 2)
  2541. )
  2542. SELECT x, (sum(x) over w)
  2543. FROM cte
  2544. WINDOW w AS (ORDER BY x groups between 1 preceding and 1 following);
  2545. </sql-statement>
  2546. -stdin-:<main>: Error: Type annotation
  2547. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem
  2548. WITH cte (x) AS (
  2549. ^
  2550. -stdin-:<main>:7:13: Error: At function: PgWindow
  2551. WINDOW w AS (ORDER BY x groups between 1 preceding and 1 following);
  2552. ^
  2553. -stdin-:<main>:7:13: Error: Unsupported frame type: groups
  2554. WINDOW w AS (ORDER BY x groups between 1 preceding and 1 following);
  2555. ^
  2556. <sql-statement>
  2557. -- with UNION
  2558. SELECT count(*) OVER (PARTITION BY four) FROM (SELECT * FROM tenk1 UNION ALL SELECT * FROM tenk2)s LIMIT 0;
  2559. </sql-statement>
  2560. <sql-statement>
  2561. -- check some degenerate cases
  2562. create temp table t1 (f1 int, f2 int8);
  2563. </sql-statement>
  2564. <sql-statement>
  2565. insert into t1 values (1,1),(1,2),(2,2);
  2566. </sql-statement>
  2567. <sql-statement>
  2568. select f1, sum(f1) over (partition by f1
  2569. range between 1 preceding and 1 following)
  2570. from t1 where f1 = f2; -- error, must have order by
  2571. </sql-statement>
  2572. -stdin-:<main>: Error: Type annotation
  2573. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem
  2574. select f1, sum(f1) over (partition by f1
  2575. ^
  2576. -stdin-:<main>:1:25: Error: At function: PgWindow
  2577. select f1, sum(f1) over (partition by f1
  2578. ^
  2579. -stdin-:<main>:1:25: Error: Unsupported frame type: range
  2580. select f1, sum(f1) over (partition by f1
  2581. ^
  2582. <sql-statement>
  2583. explain (costs off)
  2584. select f1, sum(f1) over (partition by f1 order by f2
  2585. range between 1 preceding and 1 following)
  2586. from t1 where f1 = f2;
  2587. </sql-statement>
  2588. -stdin-:<main>: Error: Parse Sql
  2589. -stdin-:<main>:1:1: Error: RawStmt: alternative is not implemented yet : 276
  2590. explain (costs off)
  2591. ^
  2592. <sql-statement>
  2593. select f1, sum(f1) over (partition by f1 order by f2
  2594. range between 1 preceding and 1 following)
  2595. from t1 where f1 = f2;
  2596. </sql-statement>
  2597. -stdin-:<main>: Error: Type annotation
  2598. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem
  2599. select f1, sum(f1) over (partition by f1 order by f2
  2600. ^
  2601. -stdin-:<main>:1:25: Error: At function: PgWindow
  2602. select f1, sum(f1) over (partition by f1 order by f2
  2603. ^
  2604. -stdin-:<main>:1:25: Error: Unsupported frame type: range
  2605. select f1, sum(f1) over (partition by f1 order by f2
  2606. ^
  2607. <sql-statement>
  2608. select f1, sum(f1) over (partition by f1, f1 order by f2
  2609. range between 2 preceding and 1 preceding)
  2610. from t1 where f1 = f2;
  2611. </sql-statement>
  2612. -stdin-:<main>: Error: Type annotation
  2613. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem
  2614. select f1, sum(f1) over (partition by f1, f1 order by f2
  2615. ^
  2616. -stdin-:<main>:1:25: Error: At function: PgWindow
  2617. select f1, sum(f1) over (partition by f1, f1 order by f2
  2618. ^
  2619. -stdin-:<main>:1:25: Error: Unsupported frame type: range
  2620. select f1, sum(f1) over (partition by f1, f1 order by f2
  2621. ^
  2622. <sql-statement>
  2623. select f1, sum(f1) over (partition by f1, f2 order by f2
  2624. range between 1 following and 2 following)
  2625. from t1 where f1 = f2;
  2626. </sql-statement>
  2627. -stdin-:<main>: Error: Type annotation
  2628. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem
  2629. select f1, sum(f1) over (partition by f1, f2 order by f2
  2630. ^
  2631. -stdin-:<main>:1:25: Error: At function: PgWindow
  2632. select f1, sum(f1) over (partition by f1, f2 order by f2
  2633. ^
  2634. -stdin-:<main>:1:25: Error: Unsupported frame type: range
  2635. select f1, sum(f1) over (partition by f1, f2 order by f2
  2636. ^
  2637. <sql-statement>
  2638. select f1, sum(f1) over (partition by f1
  2639. groups between 1 preceding and 1 following)
  2640. from t1 where f1 = f2; -- error, must have order by
  2641. </sql-statement>
  2642. -stdin-:<main>: Error: Type annotation
  2643. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem
  2644. select f1, sum(f1) over (partition by f1
  2645. ^
  2646. -stdin-:<main>:1:25: Error: At function: PgWindow
  2647. select f1, sum(f1) over (partition by f1
  2648. ^
  2649. -stdin-:<main>:1:25: Error: Unsupported frame type: groups
  2650. select f1, sum(f1) over (partition by f1
  2651. ^
  2652. <sql-statement>
  2653. explain (costs off)
  2654. select f1, sum(f1) over (partition by f1 order by f2
  2655. groups between 1 preceding and 1 following)
  2656. from t1 where f1 = f2;
  2657. </sql-statement>
  2658. -stdin-:<main>: Error: Parse Sql
  2659. -stdin-:<main>:1:1: Error: RawStmt: alternative is not implemented yet : 276
  2660. explain (costs off)
  2661. ^
  2662. <sql-statement>
  2663. select f1, sum(f1) over (partition by f1 order by f2
  2664. groups between 1 preceding and 1 following)
  2665. from t1 where f1 = f2;
  2666. </sql-statement>
  2667. -stdin-:<main>: Error: Type annotation
  2668. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem
  2669. select f1, sum(f1) over (partition by f1 order by f2
  2670. ^
  2671. -stdin-:<main>:1:25: Error: At function: PgWindow
  2672. select f1, sum(f1) over (partition by f1 order by f2
  2673. ^
  2674. -stdin-:<main>:1:25: Error: Unsupported frame type: groups
  2675. select f1, sum(f1) over (partition by f1 order by f2
  2676. ^
  2677. <sql-statement>
  2678. select f1, sum(f1) over (partition by f1, f1 order by f2
  2679. groups between 2 preceding and 1 preceding)
  2680. from t1 where f1 = f2;
  2681. </sql-statement>
  2682. -stdin-:<main>: Error: Type annotation
  2683. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem
  2684. select f1, sum(f1) over (partition by f1, f1 order by f2
  2685. ^
  2686. -stdin-:<main>:1:25: Error: At function: PgWindow
  2687. select f1, sum(f1) over (partition by f1, f1 order by f2
  2688. ^
  2689. -stdin-:<main>:1:25: Error: Unsupported frame type: groups
  2690. select f1, sum(f1) over (partition by f1, f1 order by f2
  2691. ^
  2692. <sql-statement>
  2693. select f1, sum(f1) over (partition by f1, f2 order by f2
  2694. groups between 1 following and 2 following)
  2695. from t1 where f1 = f2;
  2696. </sql-statement>
  2697. -stdin-:<main>: Error: Type annotation
  2698. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem
  2699. select f1, sum(f1) over (partition by f1, f2 order by f2
  2700. ^
  2701. -stdin-:<main>:1:25: Error: At function: PgWindow
  2702. select f1, sum(f1) over (partition by f1, f2 order by f2
  2703. ^
  2704. -stdin-:<main>:1:25: Error: Unsupported frame type: groups
  2705. select f1, sum(f1) over (partition by f1, f2 order by f2
  2706. ^
  2707. <sql-statement>
  2708. -- ordering by a non-integer constant is allowed
  2709. SELECT rank() OVER (ORDER BY length('abc'));
  2710. </sql-statement>
  2711. <sql-statement>
  2712. -- can't order by another window function
  2713. SELECT rank() OVER (ORDER BY rank() OVER (ORDER BY random()));
  2714. </sql-statement>
  2715. -stdin-:<main>: Error: Parse Sql
  2716. -stdin-:<main>:2:30: Error: Over is not allowed in: ORDER BY
  2717. SELECT rank() OVER (ORDER BY rank() OVER (ORDER BY random()));
  2718. ^
  2719. <sql-statement>
  2720. -- some other errors
  2721. SELECT * FROM empsalary WHERE row_number() OVER (ORDER BY salary) < 10;
  2722. </sql-statement>
  2723. -stdin-:<main>: Error: Parse Sql
  2724. -stdin-:<main>:2:31: Error: Over is not allowed in: WHERE
  2725. SELECT * FROM empsalary WHERE row_number() OVER (ORDER BY salary) < 10;
  2726. ^
  2727. <sql-statement>
  2728. SELECT * FROM empsalary INNER JOIN tenk1 ON row_number() OVER (ORDER BY salary) < 10;
  2729. </sql-statement>
  2730. -stdin-:<main>: Error: Parse Sql
  2731. -stdin-:<main>:1:45: Error: Over is not allowed in: JOIN ON
  2732. SELECT * FROM empsalary INNER JOIN tenk1 ON row_number() OVER (ORDER BY salary) < 10;
  2733. ^
  2734. <sql-statement>
  2735. SELECT rank() OVER (ORDER BY 1), count(*) FROM empsalary GROUP BY 1;
  2736. </sql-statement>
  2737. -stdin-:<main>: Fatal: Execution
  2738. -stdin-:<main>:1:1: Fatal: Execution of node: YtMap!
  2739. SELECT rank() OVER (ORDER BY 1), count(*) FROM empsalary GROUP BY 1;
  2740. ^
  2741. -stdin-:<main>:1:1: Fatal: ydb/library/yql/providers/common/mkql/yql_provider_mkql.cpp:364 GetCallable(): requirement Callables.cend() != compiler failed, message: Missed callable: PgWindowCall
  2742. SELECT rank() OVER (ORDER BY 1), count(*) FROM empsalary GROUP BY 1;
  2743. ^
  2744. <sql-statement>
  2745. SELECT * FROM rank() OVER (ORDER BY random());
  2746. </sql-statement>
  2747. -stdin-:<main>: Error: Parse Sql
  2748. -stdin-:<main>:1:29: Error: ERROR: syntax error at or near "ORDER"
  2749. SELECT * FROM rank() OVER (ORDER BY random());
  2750. ^
  2751. <sql-statement>
  2752. DELETE FROM empsalary WHERE (rank() OVER (ORDER BY random())) > 10;
  2753. </sql-statement>
  2754. -stdin-:<main>: Error: Parse Sql
  2755. -stdin-:<main>:1:30: Error: Over is not allowed in: WHERE
  2756. DELETE FROM empsalary WHERE (rank() OVER (ORDER BY random())) > 10;
  2757. ^
  2758. <sql-statement>
  2759. DELETE FROM empsalary RETURNING rank() OVER (ORDER BY random());
  2760. </sql-statement>
  2761. -stdin-:<main>: Error: Parse Sql
  2762. -stdin-:<main>:1:1: Error: ResTarget: alternative is not implemented yet : 357
  2763. DELETE FROM empsalary RETURNING rank() OVER (ORDER BY random());
  2764. ^
  2765. <sql-statement>
  2766. SELECT count(*) OVER w FROM tenk1 WINDOW w AS (ORDER BY unique1), w AS (ORDER BY unique1);
  2767. </sql-statement>
  2768. -stdin-:<main>: Error: Type annotation
  2769. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem
  2770. SELECT count(*) OVER w FROM tenk1 WINDOW w AS (ORDER BY unique1), w AS (ORDER BY unique1);
  2771. ^
  2772. -stdin-:<main>:1:72: Error: Duplicated window name: w
  2773. SELECT count(*) OVER w FROM tenk1 WINDOW w AS (ORDER BY unique1), w AS (ORDER BY unique1);
  2774. ^
  2775. <sql-statement>
  2776. SELECT rank() OVER (PARTITION BY four, ORDER BY ten) FROM tenk1;
  2777. </sql-statement>
  2778. -stdin-:<main>: Error: Parse Sql
  2779. -stdin-:<main>:1:41: Error: ERROR: syntax error at or near "ORDER"
  2780. SELECT rank() OVER (PARTITION BY four, ORDER BY ten) FROM tenk1;
  2781. ^
  2782. <sql-statement>
  2783. SELECT count() OVER () FROM tenk1;
  2784. </sql-statement>
  2785. -stdin-:<main>: Error: Parse Sql
  2786. -stdin-:<main>:1:8: Error: FuncCall: count(*) must be used to call a parameterless aggregate function
  2787. SELECT count() OVER () FROM tenk1;
  2788. ^
  2789. <sql-statement>
  2790. SELECT generate_series(1, 100) OVER () FROM empsalary;
  2791. </sql-statement>
  2792. -stdin-:<main>: Error: Parse Sql
  2793. -stdin-:<main>:1:8: Error: Generator functions are not allowed in: SELECT
  2794. SELECT generate_series(1, 100) OVER () FROM empsalary;
  2795. ^
  2796. <sql-statement>
  2797. SELECT ntile(0) OVER (ORDER BY ten), ten, four FROM tenk1;
  2798. </sql-statement>
  2799. -stdin-:<main>: Error: Type annotation
  2800. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem, At function: PgResultItem
  2801. SELECT ntile(0) OVER (ORDER BY ten), ten, four FROM tenk1;
  2802. ^
  2803. -stdin-:<main>:1:8: Error: At function: PgWindowCall
  2804. SELECT ntile(0) OVER (ORDER BY ten), ten, four FROM tenk1;
  2805. ^
  2806. -stdin-:<main>:1:8: Error: Unsupported function: ntile
  2807. SELECT ntile(0) OVER (ORDER BY ten), ten, four FROM tenk1;
  2808. ^
  2809. <sql-statement>
  2810. SELECT nth_value(four, 0) OVER (ORDER BY ten), ten, four FROM tenk1;
  2811. </sql-statement>
  2812. -stdin-:<main>: Error: Type annotation
  2813. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem, At function: PgResultItem
  2814. SELECT nth_value(four, 0) OVER (ORDER BY ten), ten, four FROM tenk1;
  2815. ^
  2816. -stdin-:<main>:1:8: Error: At function: PgWindowCall
  2817. SELECT nth_value(four, 0) OVER (ORDER BY ten), ten, four FROM tenk1;
  2818. ^
  2819. -stdin-:<main>:1:8: Error: Unsupported function: nth_value
  2820. SELECT nth_value(four, 0) OVER (ORDER BY ten), ten, four FROM tenk1;
  2821. ^
  2822. <sql-statement>
  2823. -- filter
  2824. SELECT sum(salary), row_number() OVER (ORDER BY depname), sum(
  2825. sum(salary) FILTER (WHERE enroll_date > '2007-01-01')
  2826. ) FILTER (WHERE depname <> 'sales') OVER (ORDER BY depname DESC) AS "filtered_sum",
  2827. depname
  2828. FROM empsalary GROUP BY depname;
  2829. </sql-statement>
  2830. -stdin-:<main>: Error: Parse Sql
  2831. -stdin-:<main>:2:59: Error: FuncCall: unsupported agg_filter
  2832. SELECT sum(salary), row_number() OVER (ORDER BY depname), sum(
  2833. ^
  2834. <sql-statement>
  2835. -- Test pushdown of quals into a subquery containing window functions
  2836. -- pushdown is safe because all PARTITION BY clauses include depname:
  2837. EXPLAIN (COSTS OFF)
  2838. SELECT * FROM
  2839. (SELECT depname,
  2840. sum(salary) OVER (PARTITION BY depname) depsalary,
  2841. min(salary) OVER (PARTITION BY depname || 'A', depname) depminsalary
  2842. FROM empsalary) emp
  2843. WHERE depname = 'sales';
  2844. </sql-statement>
  2845. -stdin-:<main>: Error: Parse Sql
  2846. -stdin-:<main>:1:1: Error: RawStmt: alternative is not implemented yet : 276
  2847. -- Test pushdown of quals into a subquery containing window functions
  2848. ^
  2849. <sql-statement>
  2850. -- pushdown is unsafe because there's a PARTITION BY clause without depname:
  2851. EXPLAIN (COSTS OFF)
  2852. SELECT * FROM
  2853. (SELECT depname,
  2854. sum(salary) OVER (PARTITION BY enroll_date) enroll_salary,
  2855. min(salary) OVER (PARTITION BY depname) depminsalary
  2856. FROM empsalary) emp
  2857. WHERE depname = 'sales';
  2858. </sql-statement>
  2859. -stdin-:<main>: Error: Parse Sql
  2860. -stdin-:<main>:1:1: Error: RawStmt: alternative is not implemented yet : 276
  2861. -- pushdown is unsafe because there's a PARTITION BY clause without depname:
  2862. ^
  2863. <sql-statement>
  2864. -- Test Sort node collapsing
  2865. EXPLAIN (COSTS OFF)
  2866. SELECT * FROM
  2867. (SELECT depname,
  2868. sum(salary) OVER (PARTITION BY depname order by empno) depsalary,
  2869. min(salary) OVER (PARTITION BY depname, empno order by enroll_date) depminsalary
  2870. FROM empsalary) emp
  2871. WHERE depname = 'sales';
  2872. </sql-statement>
  2873. -stdin-:<main>: Error: Parse Sql
  2874. -stdin-:<main>:1:1: Error: RawStmt: alternative is not implemented yet : 276
  2875. -- Test Sort node collapsing
  2876. ^
  2877. <sql-statement>
  2878. -- Test Sort node reordering
  2879. EXPLAIN (COSTS OFF)
  2880. SELECT
  2881. lead(1) OVER (PARTITION BY depname ORDER BY salary, enroll_date),
  2882. lag(1) OVER (PARTITION BY depname ORDER BY salary,enroll_date,empno)
  2883. FROM empsalary;
  2884. </sql-statement>
  2885. -stdin-:<main>: Error: Parse Sql
  2886. -stdin-:<main>:1:1: Error: RawStmt: alternative is not implemented yet : 276
  2887. -- Test Sort node reordering
  2888. ^
  2889. <sql-statement>
  2890. -- Test incremental sorting
  2891. EXPLAIN (COSTS OFF)
  2892. SELECT * FROM
  2893. (SELECT depname,
  2894. empno,
  2895. salary,
  2896. enroll_date,
  2897. row_number() OVER (PARTITION BY depname ORDER BY enroll_date) AS first_emp,
  2898. row_number() OVER (PARTITION BY depname ORDER BY enroll_date DESC) AS last_emp
  2899. FROM empsalary) emp
  2900. WHERE first_emp = 1 OR last_emp = 1;
  2901. </sql-statement>
  2902. -stdin-:<main>: Error: Parse Sql
  2903. -stdin-:<main>:1:1: Error: RawStmt: alternative is not implemented yet : 276
  2904. -- Test incremental sorting
  2905. ^
  2906. <sql-statement>
  2907. SELECT * FROM
  2908. (SELECT depname,
  2909. empno,
  2910. salary,
  2911. enroll_date,
  2912. row_number() OVER (PARTITION BY depname ORDER BY enroll_date) AS first_emp,
  2913. row_number() OVER (PARTITION BY depname ORDER BY enroll_date DESC) AS last_emp
  2914. FROM empsalary) emp
  2915. WHERE first_emp = 1 OR last_emp = 1;
  2916. </sql-statement>
  2917. <sql-statement>
  2918. -- cleanup
  2919. DROP TABLE empsalary;
  2920. </sql-statement>
  2921. <sql-statement>
  2922. -- test user-defined window function with named args and default args
  2923. CREATE FUNCTION nth_value_def(val anyelement, n integer = 1) RETURNS anyelement
  2924. LANGUAGE internal WINDOW IMMUTABLE STRICT AS 'window_nth_value';
  2925. </sql-statement>
  2926. -stdin-:<main>: Error: Parse Sql
  2927. -stdin-:<main>:1:1: Error: RawStmt: alternative is not implemented yet : 261
  2928. -- test user-defined window function with named args and default args
  2929. ^
  2930. <sql-statement>
  2931. SELECT nth_value_def(n := 2, val := ten) OVER (PARTITION BY four), ten, four
  2932. FROM (SELECT * FROM tenk1 WHERE unique2 < 10 ORDER BY four, ten) s;
  2933. </sql-statement>
  2934. -stdin-:<main>: Error: Parse Sql
  2935. -stdin-:<main>:1:8: Error: alternative is not implemented yet : 118
  2936. SELECT nth_value_def(n := 2, val := ten) OVER (PARTITION BY four), ten, four
  2937. ^
  2938. <sql-statement>
  2939. SELECT nth_value_def(ten) OVER (PARTITION BY four), ten, four
  2940. FROM (SELECT * FROM tenk1 WHERE unique2 < 10 ORDER BY four, ten) s;
  2941. </sql-statement>
  2942. -stdin-:<main>: Error: Type annotation
  2943. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem, At function: PgResultItem
  2944. SELECT nth_value_def(ten) OVER (PARTITION BY four), ten, four
  2945. ^
  2946. -stdin-:<main>:1:8: Error: At function: PgWindowCall
  2947. SELECT nth_value_def(ten) OVER (PARTITION BY four), ten, four
  2948. ^
  2949. -stdin-:<main>:1:8: Error: Unsupported function: nth_value_def
  2950. SELECT nth_value_def(ten) OVER (PARTITION BY four), ten, four
  2951. ^
  2952. <sql-statement>
  2953. --
  2954. -- Test the basic moving-aggregate machinery
  2955. --
  2956. -- create aggregates that record the series of transform calls (these are
  2957. -- intentionally not true inverses)
  2958. CREATE FUNCTION logging_sfunc_nonstrict(text, anyelement) RETURNS text AS
  2959. $$ SELECT COALESCE($1, '') || '*' || quote_nullable($2) $$
  2960. LANGUAGE SQL IMMUTABLE;
  2961. </sql-statement>
  2962. -stdin-:<main>: Error: Parse Sql
  2963. -stdin-:<main>:1:1: Error: RawStmt: alternative is not implemented yet : 261
  2964. --
  2965. ^
  2966. <sql-statement>
  2967. CREATE FUNCTION logging_msfunc_nonstrict(text, anyelement) RETURNS text AS
  2968. $$ SELECT COALESCE($1, '') || '+' || quote_nullable($2) $$
  2969. LANGUAGE SQL IMMUTABLE;
  2970. </sql-statement>
  2971. -stdin-:<main>: Error: Parse Sql
  2972. -stdin-:<main>:1:1: Error: RawStmt: alternative is not implemented yet : 261
  2973. CREATE FUNCTION logging_msfunc_nonstrict(text, anyelement) RETURNS text AS
  2974. ^
  2975. <sql-statement>
  2976. CREATE FUNCTION logging_minvfunc_nonstrict(text, anyelement) RETURNS text AS
  2977. $$ SELECT $1 || '-' || quote_nullable($2) $$
  2978. LANGUAGE SQL IMMUTABLE;
  2979. </sql-statement>
  2980. -stdin-:<main>: Error: Parse Sql
  2981. -stdin-:<main>:1:1: Error: RawStmt: alternative is not implemented yet : 261
  2982. CREATE FUNCTION logging_minvfunc_nonstrict(text, anyelement) RETURNS text AS
  2983. ^
  2984. <sql-statement>
  2985. CREATE AGGREGATE logging_agg_nonstrict (anyelement)
  2986. (
  2987. stype = text,
  2988. sfunc = logging_sfunc_nonstrict,
  2989. mstype = text,
  2990. msfunc = logging_msfunc_nonstrict,
  2991. minvfunc = logging_minvfunc_nonstrict
  2992. );
  2993. </sql-statement>
  2994. -stdin-:<main>: Error: Parse Sql
  2995. -stdin-:<main>:1:1: Error: RawStmt: alternative is not implemented yet : 255
  2996. CREATE AGGREGATE logging_agg_nonstrict (anyelement)
  2997. ^
  2998. <sql-statement>
  2999. CREATE AGGREGATE logging_agg_nonstrict_initcond (anyelement)
  3000. (
  3001. stype = text,
  3002. sfunc = logging_sfunc_nonstrict,
  3003. mstype = text,
  3004. msfunc = logging_msfunc_nonstrict,
  3005. minvfunc = logging_minvfunc_nonstrict,
  3006. initcond = 'I',
  3007. minitcond = 'MI'
  3008. );
  3009. </sql-statement>
  3010. -stdin-:<main>: Error: Parse Sql
  3011. -stdin-:<main>:1:1: Error: RawStmt: alternative is not implemented yet : 255
  3012. CREATE AGGREGATE logging_agg_nonstrict_initcond (anyelement)
  3013. ^
  3014. <sql-statement>
  3015. CREATE FUNCTION logging_sfunc_strict(text, anyelement) RETURNS text AS
  3016. $$ SELECT $1 || '*' || quote_nullable($2) $$
  3017. LANGUAGE SQL STRICT IMMUTABLE;
  3018. </sql-statement>
  3019. -stdin-:<main>: Error: Parse Sql
  3020. -stdin-:<main>:1:1: Error: RawStmt: alternative is not implemented yet : 261
  3021. CREATE FUNCTION logging_sfunc_strict(text, anyelement) RETURNS text AS
  3022. ^
  3023. <sql-statement>
  3024. CREATE FUNCTION logging_msfunc_strict(text, anyelement) RETURNS text AS
  3025. $$ SELECT $1 || '+' || quote_nullable($2) $$
  3026. LANGUAGE SQL STRICT IMMUTABLE;
  3027. </sql-statement>
  3028. -stdin-:<main>: Error: Parse Sql
  3029. -stdin-:<main>:1:1: Error: RawStmt: alternative is not implemented yet : 261
  3030. CREATE FUNCTION logging_msfunc_strict(text, anyelement) RETURNS text AS
  3031. ^
  3032. <sql-statement>
  3033. CREATE FUNCTION logging_minvfunc_strict(text, anyelement) RETURNS text AS
  3034. $$ SELECT $1 || '-' || quote_nullable($2) $$
  3035. LANGUAGE SQL STRICT IMMUTABLE;
  3036. </sql-statement>
  3037. -stdin-:<main>: Error: Parse Sql
  3038. -stdin-:<main>:1:1: Error: RawStmt: alternative is not implemented yet : 261
  3039. CREATE FUNCTION logging_minvfunc_strict(text, anyelement) RETURNS text AS
  3040. ^
  3041. <sql-statement>
  3042. CREATE AGGREGATE logging_agg_strict (text)
  3043. (
  3044. stype = text,
  3045. sfunc = logging_sfunc_strict,
  3046. mstype = text,
  3047. msfunc = logging_msfunc_strict,
  3048. minvfunc = logging_minvfunc_strict
  3049. );
  3050. </sql-statement>
  3051. -stdin-:<main>: Error: Parse Sql
  3052. -stdin-:<main>:1:1: Error: RawStmt: alternative is not implemented yet : 255
  3053. CREATE AGGREGATE logging_agg_strict (text)
  3054. ^
  3055. <sql-statement>
  3056. CREATE AGGREGATE logging_agg_strict_initcond (anyelement)
  3057. (
  3058. stype = text,
  3059. sfunc = logging_sfunc_strict,
  3060. mstype = text,
  3061. msfunc = logging_msfunc_strict,
  3062. minvfunc = logging_minvfunc_strict,
  3063. initcond = 'I',
  3064. minitcond = 'MI'
  3065. );
  3066. </sql-statement>
  3067. -stdin-:<main>: Error: Parse Sql
  3068. -stdin-:<main>:1:1: Error: RawStmt: alternative is not implemented yet : 255
  3069. CREATE AGGREGATE logging_agg_strict_initcond (anyelement)
  3070. ^
  3071. <sql-statement>
  3072. -- test strict and non-strict cases
  3073. SELECT
  3074. p::text || ',' || i::text || ':' || COALESCE(v::text, 'NULL') AS row,
  3075. logging_agg_nonstrict(v) over wnd as nstrict,
  3076. logging_agg_nonstrict_initcond(v) over wnd as nstrict_init,
  3077. logging_agg_strict(v::text) over wnd as strict,
  3078. logging_agg_strict_initcond(v) over wnd as strict_init
  3079. FROM (VALUES
  3080. (1, 1, NULL),
  3081. (1, 2, 'a'),
  3082. (1, 3, 'b'),
  3083. (1, 4, NULL),
  3084. (1, 5, NULL),
  3085. (1, 6, 'c'),
  3086. (2, 1, NULL),
  3087. (2, 2, 'x'),
  3088. (3, 1, 'z')
  3089. ) AS t(p, i, v)
  3090. WINDOW wnd AS (PARTITION BY P ORDER BY i ROWS BETWEEN 1 PRECEDING AND CURRENT ROW)
  3091. ORDER BY p, i;
  3092. </sql-statement>
  3093. -stdin-:<main>: Error: Type annotation
  3094. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem
  3095. -- test strict and non-strict cases
  3096. ^
  3097. -stdin-:<main>:1:1: Error: At function: PgResultItem
  3098. -- test strict and non-strict cases
  3099. ^
  3100. -stdin-:<main>:4:2: Error: At function: PgWindowCall
  3101. logging_agg_nonstrict(v) over wnd as nstrict,
  3102. ^
  3103. -stdin-:<main>:4:2: Error: Unsupported function: logging_agg_nonstrict
  3104. logging_agg_nonstrict(v) over wnd as nstrict,
  3105. ^
  3106. -stdin-:<main>:1:1: Error: At function: PgResultItem
  3107. -- test strict and non-strict cases
  3108. ^
  3109. -stdin-:<main>:5:2: Error: At function: PgWindowCall
  3110. logging_agg_nonstrict_initcond(v) over wnd as nstrict_init,
  3111. ^
  3112. -stdin-:<main>:5:2: Error: Unsupported function: logging_agg_nonstrict_initcond
  3113. logging_agg_nonstrict_initcond(v) over wnd as nstrict_init,
  3114. ^
  3115. -stdin-:<main>:1:1: Error: At function: PgResultItem
  3116. -- test strict and non-strict cases
  3117. ^
  3118. -stdin-:<main>:6:2: Error: At function: PgWindowCall
  3119. logging_agg_strict(v::text) over wnd as strict,
  3120. ^
  3121. -stdin-:<main>:6:2: Error: Unsupported function: logging_agg_strict
  3122. logging_agg_strict(v::text) over wnd as strict,
  3123. ^
  3124. -stdin-:<main>:1:1: Error: At function: PgResultItem
  3125. -- test strict and non-strict cases
  3126. ^
  3127. -stdin-:<main>:7:2: Error: At function: PgWindowCall
  3128. logging_agg_strict_initcond(v) over wnd as strict_init
  3129. ^
  3130. -stdin-:<main>:7:2: Error: Unsupported function: logging_agg_strict_initcond
  3131. logging_agg_strict_initcond(v) over wnd as strict_init
  3132. ^
  3133. <sql-statement>
  3134. -- and again, but with filter
  3135. SELECT
  3136. p::text || ',' || i::text || ':' ||
  3137. CASE WHEN f THEN COALESCE(v::text, 'NULL') ELSE '-' END as row,
  3138. logging_agg_nonstrict(v) filter(where f) over wnd as nstrict_filt,
  3139. logging_agg_nonstrict_initcond(v) filter(where f) over wnd as nstrict_init_filt,
  3140. logging_agg_strict(v::text) filter(where f) over wnd as strict_filt,
  3141. logging_agg_strict_initcond(v) filter(where f) over wnd as strict_init_filt
  3142. FROM (VALUES
  3143. (1, 1, true, NULL),
  3144. (1, 2, false, 'a'),
  3145. (1, 3, true, 'b'),
  3146. (1, 4, false, NULL),
  3147. (1, 5, false, NULL),
  3148. (1, 6, false, 'c'),
  3149. (2, 1, false, NULL),
  3150. (2, 2, true, 'x'),
  3151. (3, 1, true, 'z')
  3152. ) AS t(p, i, f, v)
  3153. WINDOW wnd AS (PARTITION BY p ORDER BY i ROWS BETWEEN 1 PRECEDING AND CURRENT ROW)
  3154. ORDER BY p, i;
  3155. </sql-statement>
  3156. -stdin-:<main>: Error: Parse Sql
  3157. -stdin-:<main>:5:2: Error: FuncCall: unsupported agg_filter
  3158. logging_agg_nonstrict(v) filter(where f) over wnd as nstrict_filt,
  3159. ^
  3160. <sql-statement>
  3161. -- test that volatile arguments disable moving-aggregate mode
  3162. SELECT
  3163. i::text || ':' || COALESCE(v::text, 'NULL') as row,
  3164. logging_agg_strict(v::text)
  3165. over wnd as inverse,
  3166. logging_agg_strict(v::text || CASE WHEN random() < 0 then '?' ELSE '' END)
  3167. over wnd as noinverse
  3168. FROM (VALUES
  3169. (1, 'a'),
  3170. (2, 'b'),
  3171. (3, 'c')
  3172. ) AS t(i, v)
  3173. WINDOW wnd AS (ORDER BY i ROWS BETWEEN 1 PRECEDING AND CURRENT ROW)
  3174. ORDER BY i;
  3175. </sql-statement>
  3176. -stdin-:<main>: Error: Type annotation
  3177. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem
  3178. -- test that volatile arguments disable moving-aggregate mode
  3179. ^
  3180. -stdin-:<main>:1:1: Error: At function: PgResultItem
  3181. -- test that volatile arguments disable moving-aggregate mode
  3182. ^
  3183. -stdin-:<main>:4:2: Error: At function: PgWindowCall
  3184. logging_agg_strict(v::text)
  3185. ^
  3186. -stdin-:<main>:4:2: Error: Unsupported function: logging_agg_strict
  3187. logging_agg_strict(v::text)
  3188. ^
  3189. -stdin-:<main>:1:1: Error: At function: PgResultItem
  3190. -- test that volatile arguments disable moving-aggregate mode
  3191. ^
  3192. -stdin-:<main>:6:2: Error: At function: PgWindowCall
  3193. logging_agg_strict(v::text || CASE WHEN random() < 0 then '?' ELSE '' END)
  3194. ^
  3195. -stdin-:<main>:6:2: Error: Unsupported function: logging_agg_strict
  3196. logging_agg_strict(v::text || CASE WHEN random() < 0 then '?' ELSE '' END)
  3197. ^
  3198. <sql-statement>
  3199. SELECT
  3200. i::text || ':' || COALESCE(v::text, 'NULL') as row,
  3201. logging_agg_strict(v::text) filter(where true)
  3202. over wnd as inverse,
  3203. logging_agg_strict(v::text) filter(where random() >= 0)
  3204. over wnd as noinverse
  3205. FROM (VALUES
  3206. (1, 'a'),
  3207. (2, 'b'),
  3208. (3, 'c')
  3209. ) AS t(i, v)
  3210. WINDOW wnd AS (ORDER BY i ROWS BETWEEN 1 PRECEDING AND CURRENT ROW)
  3211. ORDER BY i;
  3212. </sql-statement>
  3213. -stdin-:<main>: Error: Parse Sql
  3214. -stdin-:<main>:3:2: Error: FuncCall: unsupported agg_filter
  3215. logging_agg_strict(v::text) filter(where true)
  3216. ^
  3217. <sql-statement>
  3218. -- test that non-overlapping windows don't use inverse transitions
  3219. SELECT
  3220. logging_agg_strict(v::text) OVER wnd
  3221. FROM (VALUES
  3222. (1, 'a'),
  3223. (2, 'b'),
  3224. (3, 'c')
  3225. ) AS t(i, v)
  3226. WINDOW wnd AS (ORDER BY i ROWS BETWEEN CURRENT ROW AND CURRENT ROW)
  3227. ORDER BY i;
  3228. </sql-statement>
  3229. -stdin-:<main>: Error: Type annotation
  3230. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem, At function: PgResultItem
  3231. -- test that non-overlapping windows don't use inverse transitions
  3232. ^
  3233. -stdin-:<main>:3:2: Error: At function: PgWindowCall
  3234. logging_agg_strict(v::text) OVER wnd
  3235. ^
  3236. -stdin-:<main>:3:2: Error: Unsupported function: logging_agg_strict
  3237. logging_agg_strict(v::text) OVER wnd
  3238. ^
  3239. <sql-statement>
  3240. -- test that returning NULL from the inverse transition functions
  3241. -- restarts the aggregation from scratch. The second aggregate is supposed
  3242. -- to test cases where only some aggregates restart, the third one checks
  3243. -- that one aggregate restarting doesn't cause others to restart.
  3244. CREATE FUNCTION sum_int_randrestart_minvfunc(int4, int4) RETURNS int4 AS
  3245. $$ SELECT CASE WHEN random() < 0.2 THEN NULL ELSE $1 - $2 END $$
  3246. LANGUAGE SQL STRICT;
  3247. </sql-statement>
  3248. -stdin-:<main>: Error: Parse Sql
  3249. -stdin-:<main>:1:1: Error: RawStmt: alternative is not implemented yet : 261
  3250. -- test that returning NULL from the inverse transition functions
  3251. ^
  3252. <sql-statement>
  3253. CREATE AGGREGATE sum_int_randomrestart (int4)
  3254. (
  3255. stype = int4,
  3256. sfunc = int4pl,
  3257. mstype = int4,
  3258. msfunc = int4pl,
  3259. minvfunc = sum_int_randrestart_minvfunc
  3260. );
  3261. </sql-statement>
  3262. -stdin-:<main>: Error: Parse Sql
  3263. -stdin-:<main>:1:1: Error: RawStmt: alternative is not implemented yet : 255
  3264. CREATE AGGREGATE sum_int_randomrestart (int4)
  3265. ^
  3266. <sql-statement>
  3267. WITH
  3268. vs AS (
  3269. SELECT i, (random() * 100)::int4 AS v
  3270. FROM generate_series(1, 100) AS i
  3271. ),
  3272. sum_following AS (
  3273. SELECT i, SUM(v) OVER
  3274. (ORDER BY i DESC ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS s
  3275. FROM vs
  3276. )
  3277. SELECT DISTINCT
  3278. sum_following.s = sum_int_randomrestart(v) OVER fwd AS eq1,
  3279. -sum_following.s = sum_int_randomrestart(-v) OVER fwd AS eq2,
  3280. 100*3+(vs.i-1)*3 = length(logging_agg_nonstrict(''::text) OVER fwd) AS eq3
  3281. FROM vs
  3282. JOIN sum_following ON sum_following.i = vs.i
  3283. WINDOW fwd AS (
  3284. ORDER BY vs.i ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING
  3285. );
  3286. </sql-statement>
  3287. -stdin-:<main>: Error: Type annotation
  3288. -stdin-:<main>:1:1: Error: At function: RemovePrefixMembers, At function: PgSelect, At function: PgSetItem
  3289. WITH
  3290. ^
  3291. -stdin-:<main>:1:1: Error: At function: PgResultItem
  3292. WITH
  3293. ^
  3294. -stdin-:<main>:12:18: Error: At function: PgOp
  3295. sum_following.s = sum_int_randomrestart(v) OVER fwd AS eq1,
  3296. ^
  3297. -stdin-:<main>:12:20: Error: At function: PgWindowCall
  3298. sum_following.s = sum_int_randomrestart(v) OVER fwd AS eq1,
  3299. ^
  3300. -stdin-:<main>:12:20: Error: Unsupported function: sum_int_randomrestart
  3301. sum_following.s = sum_int_randomrestart(v) OVER fwd AS eq1,
  3302. ^
  3303. -stdin-:<main>:1:1: Error: At function: PgResultItem
  3304. WITH
  3305. ^
  3306. -stdin-:<main>:13:19: Error: At function: PgOp
  3307. -sum_following.s = sum_int_randomrestart(-v) OVER fwd AS eq2,
  3308. ^
  3309. -stdin-:<main>:13:21: Error: At function: PgWindowCall
  3310. -sum_following.s = sum_int_randomrestart(-v) OVER fwd AS eq2,
  3311. ^
  3312. -stdin-:<main>:13:21: Error: Unsupported function: sum_int_randomrestart
  3313. -sum_following.s = sum_int_randomrestart(-v) OVER fwd AS eq2,
  3314. ^
  3315. -stdin-:<main>:1:1: Error: At function: PgResultItem
  3316. WITH
  3317. ^
  3318. -stdin-:<main>:14:19: Error: At function: PgOp
  3319. 100*3+(vs.i-1)*3 = length(logging_agg_nonstrict(''::text) OVER fwd) AS eq3
  3320. ^
  3321. -stdin-:<main>:14:21: Error: At function: PgCall
  3322. 100*3+(vs.i-1)*3 = length(logging_agg_nonstrict(''::text) OVER fwd) AS eq3
  3323. ^
  3324. -stdin-:<main>:14:28: Error: At function: PgWindowCall
  3325. 100*3+(vs.i-1)*3 = length(logging_agg_nonstrict(''::text) OVER fwd) AS eq3
  3326. ^
  3327. -stdin-:<main>:14:28: Error: Unsupported function: logging_agg_nonstrict
  3328. 100*3+(vs.i-1)*3 = length(logging_agg_nonstrict(''::text) OVER fwd) AS eq3
  3329. ^
  3330. <sql-statement>
  3331. --
  3332. -- Test various built-in aggregates that have moving-aggregate support
  3333. --
  3334. -- test inverse transition functions handle NULLs properly
  3335. SELECT i,AVG(v::bigint) OVER (ORDER BY i ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING)
  3336. FROM (VALUES(1,1),(2,2),(3,NULL),(4,NULL)) t(i,v);
  3337. </sql-statement>
  3338. <sql-statement>
  3339. SELECT i,AVG(v::int) OVER (ORDER BY i ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING)
  3340. FROM (VALUES(1,1),(2,2),(3,NULL),(4,NULL)) t(i,v);
  3341. </sql-statement>
  3342. <sql-statement>
  3343. SELECT i,AVG(v::smallint) OVER (ORDER BY i ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING)
  3344. FROM (VALUES(1,1),(2,2),(3,NULL),(4,NULL)) t(i,v);
  3345. </sql-statement>
  3346. <sql-statement>
  3347. SELECT i,AVG(v::numeric) OVER (ORDER BY i ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING)
  3348. FROM (VALUES(1,1.5),(2,2.5),(3,NULL),(4,NULL)) t(i,v);
  3349. </sql-statement>
  3350. <sql-statement>
  3351. SELECT i,AVG(v::interval) OVER (ORDER BY i ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING)
  3352. FROM (VALUES(1,'1 sec'),(2,'2 sec'),(3,NULL),(4,NULL)) t(i,v);
  3353. </sql-statement>
  3354. <sql-statement>
  3355. SELECT i,SUM(v::smallint) OVER (ORDER BY i ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING)
  3356. FROM (VALUES(1,1),(2,2),(3,NULL),(4,NULL)) t(i,v);
  3357. </sql-statement>
  3358. <sql-statement>
  3359. SELECT i,SUM(v::int) OVER (ORDER BY i ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING)
  3360. FROM (VALUES(1,1),(2,2),(3,NULL),(4,NULL)) t(i,v);
  3361. </sql-statement>
  3362. <sql-statement>
  3363. SELECT i,SUM(v::bigint) OVER (ORDER BY i ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING)
  3364. FROM (VALUES(1,1),(2,2),(3,NULL),(4,NULL)) t(i,v);
  3365. </sql-statement>
  3366. <sql-statement>
  3367. SELECT i,SUM(v::money) OVER (ORDER BY i ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING)
  3368. FROM (VALUES(1,'1.10'),(2,'2.20'),(3,NULL),(4,NULL)) t(i,v);
  3369. </sql-statement>
  3370. <sql-statement>
  3371. SELECT i,SUM(v::interval) OVER (ORDER BY i ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING)
  3372. FROM (VALUES(1,'1 sec'),(2,'2 sec'),(3,NULL),(4,NULL)) t(i,v);
  3373. </sql-statement>
  3374. <sql-statement>
  3375. SELECT i,SUM(v::numeric) OVER (ORDER BY i ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING)
  3376. FROM (VALUES(1,1.1),(2,2.2),(3,NULL),(4,NULL)) t(i,v);
  3377. </sql-statement>
  3378. <sql-statement>
  3379. SELECT SUM(n::numeric) OVER (ORDER BY i ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING)
  3380. FROM (VALUES(1,1.01),(2,2),(3,3)) v(i,n);
  3381. </sql-statement>
  3382. <sql-statement>
  3383. SELECT i,COUNT(v) OVER (ORDER BY i ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING)
  3384. FROM (VALUES(1,1),(2,2),(3,NULL),(4,NULL)) t(i,v);
  3385. </sql-statement>
  3386. <sql-statement>
  3387. SELECT i,COUNT(*) OVER (ORDER BY i ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING)
  3388. FROM (VALUES(1,1),(2,2),(3,NULL),(4,NULL)) t(i,v);
  3389. </sql-statement>
  3390. <sql-statement>
  3391. SELECT VAR_POP(n::bigint) OVER (ORDER BY i ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING)
  3392. FROM (VALUES(1,600),(2,470),(3,170),(4,430),(5,300)) r(i,n);
  3393. </sql-statement>
  3394. <sql-statement>
  3395. SELECT VAR_POP(n::int) OVER (ORDER BY i ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING)
  3396. FROM (VALUES(1,600),(2,470),(3,170),(4,430),(5,300)) r(i,n);
  3397. </sql-statement>
  3398. <sql-statement>
  3399. SELECT VAR_POP(n::smallint) OVER (ORDER BY i ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING)
  3400. FROM (VALUES(1,600),(2,470),(3,170),(4,430),(5,300)) r(i,n);
  3401. </sql-statement>
  3402. <sql-statement>
  3403. SELECT VAR_POP(n::numeric) OVER (ORDER BY i ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING)
  3404. FROM (VALUES(1,600),(2,470),(3,170),(4,430),(5,300)) r(i,n);
  3405. </sql-statement>
  3406. <sql-statement>
  3407. SELECT VAR_SAMP(n::bigint) OVER (ORDER BY i ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING)
  3408. FROM (VALUES(1,600),(2,470),(3,170),(4,430),(5,300)) r(i,n);
  3409. </sql-statement>
  3410. <sql-statement>
  3411. SELECT VAR_SAMP(n::int) OVER (ORDER BY i ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING)
  3412. FROM (VALUES(1,600),(2,470),(3,170),(4,430),(5,300)) r(i,n);
  3413. </sql-statement>
  3414. <sql-statement>
  3415. SELECT VAR_SAMP(n::smallint) OVER (ORDER BY i ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING)
  3416. FROM (VALUES(1,600),(2,470),(3,170),(4,430),(5,300)) r(i,n);
  3417. </sql-statement>
  3418. <sql-statement>
  3419. SELECT VAR_SAMP(n::numeric) OVER (ORDER BY i ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING)
  3420. FROM (VALUES(1,600),(2,470),(3,170),(4,430),(5,300)) r(i,n);
  3421. </sql-statement>
  3422. <sql-statement>
  3423. SELECT VARIANCE(n::bigint) OVER (ORDER BY i ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING)
  3424. FROM (VALUES(1,600),(2,470),(3,170),(4,430),(5,300)) r(i,n);
  3425. </sql-statement>
  3426. <sql-statement>
  3427. SELECT VARIANCE(n::int) OVER (ORDER BY i ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING)
  3428. FROM (VALUES(1,600),(2,470),(3,170),(4,430),(5,300)) r(i,n);
  3429. </sql-statement>
  3430. <sql-statement>
  3431. SELECT VARIANCE(n::smallint) OVER (ORDER BY i ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING)
  3432. FROM (VALUES(1,600),(2,470),(3,170),(4,430),(5,300)) r(i,n);
  3433. </sql-statement>
  3434. <sql-statement>
  3435. SELECT VARIANCE(n::numeric) OVER (ORDER BY i ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING)
  3436. FROM (VALUES(1,600),(2,470),(3,170),(4,430),(5,300)) r(i,n);
  3437. </sql-statement>
  3438. <sql-statement>
  3439. SELECT STDDEV_POP(n::bigint) OVER (ORDER BY i ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING)
  3440. FROM (VALUES(1,NULL),(2,600),(3,470),(4,170),(5,430),(6,300)) r(i,n);
  3441. </sql-statement>
  3442. <sql-statement>
  3443. SELECT STDDEV_POP(n::int) OVER (ORDER BY i ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING)
  3444. FROM (VALUES(1,NULL),(2,600),(3,470),(4,170),(5,430),(6,300)) r(i,n);
  3445. </sql-statement>
  3446. <sql-statement>
  3447. SELECT STDDEV_POP(n::smallint) OVER (ORDER BY i ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING)
  3448. FROM (VALUES(1,NULL),(2,600),(3,470),(4,170),(5,430),(6,300)) r(i,n);
  3449. </sql-statement>
  3450. <sql-statement>
  3451. SELECT STDDEV_POP(n::numeric) OVER (ORDER BY i ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING)
  3452. FROM (VALUES(1,NULL),(2,600),(3,470),(4,170),(5,430),(6,300)) r(i,n);
  3453. </sql-statement>
  3454. <sql-statement>
  3455. SELECT STDDEV_SAMP(n::bigint) OVER (ORDER BY i ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING)
  3456. FROM (VALUES(1,NULL),(2,600),(3,470),(4,170),(5,430),(6,300)) r(i,n);
  3457. </sql-statement>
  3458. <sql-statement>
  3459. SELECT STDDEV_SAMP(n::int) OVER (ORDER BY i ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING)
  3460. FROM (VALUES(1,NULL),(2,600),(3,470),(4,170),(5,430),(6,300)) r(i,n);
  3461. </sql-statement>
  3462. <sql-statement>
  3463. SELECT STDDEV_SAMP(n::smallint) OVER (ORDER BY i ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING)
  3464. FROM (VALUES(1,NULL),(2,600),(3,470),(4,170),(5,430),(6,300)) r(i,n);
  3465. </sql-statement>
  3466. <sql-statement>
  3467. SELECT STDDEV_SAMP(n::numeric) OVER (ORDER BY i ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING)
  3468. FROM (VALUES(1,NULL),(2,600),(3,470),(4,170),(5,430),(6,300)) r(i,n);
  3469. </sql-statement>
  3470. <sql-statement>
  3471. SELECT STDDEV(n::bigint) OVER (ORDER BY i ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING)
  3472. FROM (VALUES(0,NULL),(1,600),(2,470),(3,170),(4,430),(5,300)) r(i,n);
  3473. </sql-statement>
  3474. <sql-statement>
  3475. SELECT STDDEV(n::int) OVER (ORDER BY i ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING)
  3476. FROM (VALUES(0,NULL),(1,600),(2,470),(3,170),(4,430),(5,300)) r(i,n);
  3477. </sql-statement>
  3478. <sql-statement>
  3479. SELECT STDDEV(n::smallint) OVER (ORDER BY i ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING)
  3480. FROM (VALUES(0,NULL),(1,600),(2,470),(3,170),(4,430),(5,300)) r(i,n);
  3481. </sql-statement>
  3482. <sql-statement>
  3483. SELECT STDDEV(n::numeric) OVER (ORDER BY i ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING)
  3484. FROM (VALUES(0,NULL),(1,600),(2,470),(3,170),(4,430),(5,300)) r(i,n);
  3485. </sql-statement>
  3486. <sql-statement>
  3487. -- test that inverse transition functions work with various frame options
  3488. SELECT i,SUM(v::int) OVER (ORDER BY i ROWS BETWEEN CURRENT ROW AND CURRENT ROW)
  3489. FROM (VALUES(1,1),(2,2),(3,NULL),(4,NULL)) t(i,v);
  3490. </sql-statement>
  3491. <sql-statement>
  3492. SELECT i,SUM(v::int) OVER (ORDER BY i ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING)
  3493. FROM (VALUES(1,1),(2,2),(3,NULL),(4,NULL)) t(i,v);
  3494. </sql-statement>
  3495. <sql-statement>
  3496. SELECT i,SUM(v::int) OVER (ORDER BY i ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING)
  3497. FROM (VALUES(1,1),(2,2),(3,3),(4,4)) t(i,v);
  3498. </sql-statement>
  3499. <sql-statement>
  3500. -- ensure aggregate over numeric properly recovers from NaN values
  3501. SELECT a, b,
  3502. SUM(b) OVER(ORDER BY A ROWS BETWEEN 1 PRECEDING AND CURRENT ROW)
  3503. FROM (VALUES(1,1::numeric),(2,2),(3,'NaN'),(4,3),(5,4)) t(a,b);
  3504. </sql-statement>
  3505. <sql-statement>
  3506. -- It might be tempting for someone to add an inverse trans function for
  3507. -- float and double precision. This should not be done as it can give incorrect
  3508. -- results. This test should fail if anyone ever does this without thinking too
  3509. -- hard about it.
  3510. SELECT to_char(SUM(n::float8) OVER (ORDER BY i ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING),'999999999999999999999D9')
  3511. FROM (VALUES(1,1e20),(2,1)) n(i,n);
  3512. </sql-statement>
  3513. <sql-statement>
  3514. SELECT i, b, bool_and(b) OVER w, bool_or(b) OVER w
  3515. FROM (VALUES (1,true), (2,true), (3,false), (4,false), (5,true)) v(i,b)
  3516. WINDOW w AS (ORDER BY i ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING);
  3517. </sql-statement>
  3518. <sql-statement>
  3519. -- Tests for problems with failure to walk or mutate expressions
  3520. -- within window frame clauses.
  3521. -- test walker (fails with collation error if expressions are not walked)
  3522. SELECT array_agg(i) OVER w
  3523. FROM generate_series(1,5) i
  3524. WINDOW w AS (ORDER BY i ROWS BETWEEN (('foo' < 'foobar')::integer) PRECEDING AND CURRENT ROW);
  3525. </sql-statement>
  3526. -stdin-:<main>: Error: Expression evaluation
  3527. -stdin-:<main>:6:13: Error: At function: EvaluateExpr
  3528. WINDOW w AS (ORDER BY i ROWS BETWEEN (('foo' < 'foobar')::integer) PRECEDING AND CURRENT ROW);
  3529. ^
  3530. -stdin-:<main>: Error: Type annotation
  3531. -stdin-:<main>:6:13: Error: At function: Unwrap
  3532. WINDOW w AS (ORDER BY i ROWS BETWEEN (('foo' < 'foobar')::integer) PRECEDING AND CURRENT ROW);
  3533. ^
  3534. -stdin-:<main>:6:59: Error: Can't unwrap PostgreSQL type
  3535. WINDOW w AS (ORDER BY i ROWS BETWEEN (('foo' < 'foobar')::integer) PRECEDING AND CURRENT ROW);
  3536. ^
  3537. <sql-statement>
  3538. -- test mutator (fails when inlined if expressions are not mutated)
  3539. CREATE FUNCTION pg_temp.f(group_size BIGINT) RETURNS SETOF integer[]
  3540. AS $$
  3541. SELECT array_agg(s) OVER w
  3542. FROM generate_series(1,5) s
  3543. WINDOW w AS (ORDER BY s ROWS BETWEEN CURRENT ROW AND GROUP_SIZE FOLLOWING)
  3544. $$ LANGUAGE SQL STABLE;
  3545. </sql-statement>
  3546. -stdin-:<main>: Error: Parse Sql
  3547. -stdin-:<main>:1:1: Error: RawStmt: alternative is not implemented yet : 261
  3548. -- test mutator (fails when inlined if expressions are not mutated)
  3549. ^
  3550. <sql-statement>
  3551. EXPLAIN (costs off) SELECT * FROM pg_temp.f(2);
  3552. </sql-statement>
  3553. -stdin-:<main>: Error: Parse Sql
  3554. -stdin-:<main>:1:1: Error: RawStmt: alternative is not implemented yet : 276
  3555. EXPLAIN (costs off) SELECT * FROM pg_temp.f(2);
  3556. ^
  3557. <sql-statement>
  3558. SELECT * FROM pg_temp.f(2);
  3559. </sql-statement>
  3560. -stdin-:<main>: Error: Parse Sql
  3561. -stdin-:<main>:1:15: Error: FuncCall: expected pg_catalog, but got: pg_temp
  3562. SELECT * FROM pg_temp.f(2);
  3563. ^