12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461 |
- #----------------------------------------------------------------------
- #
- # pg_operator.dat
- # Initial contents of the pg_operator system catalog.
- #
- # Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
- # Portions Copyright (c) 1994, Regents of the University of California
- #
- # src/include/catalog/pg_operator.dat
- #
- #----------------------------------------------------------------------
- [
- # Note: every entry in pg_operator.dat is expected to have a 'descr' comment.
- # If the operator is a deprecated equivalent of some other entry, be sure
- # to comment it as such so that initdb doesn't think it's a preferred name
- # for the underlying function.
- { oid => '15', descr => 'equal',
- oprname => '=', oprcanmerge => 't', oprcanhash => 't', oprleft => 'int4',
- oprright => 'int8', oprresult => 'bool', oprcom => '=(int8,int4)',
- oprnegate => '<>(int4,int8)', oprcode => 'int48eq', oprrest => 'eqsel',
- oprjoin => 'eqjoinsel' },
- { oid => '36', descr => 'not equal',
- oprname => '<>', oprleft => 'int4', oprright => 'int8', oprresult => 'bool',
- oprcom => '<>(int8,int4)', oprnegate => '=(int4,int8)', oprcode => 'int48ne',
- oprrest => 'neqsel', oprjoin => 'neqjoinsel' },
- { oid => '37', descr => 'less than',
- oprname => '<', oprleft => 'int4', oprright => 'int8', oprresult => 'bool',
- oprcom => '>(int8,int4)', oprnegate => '>=(int4,int8)', oprcode => 'int48lt',
- oprrest => 'scalarltsel', oprjoin => 'scalarltjoinsel' },
- { oid => '76', descr => 'greater than',
- oprname => '>', oprleft => 'int4', oprright => 'int8', oprresult => 'bool',
- oprcom => '<(int8,int4)', oprnegate => '<=(int4,int8)', oprcode => 'int48gt',
- oprrest => 'scalargtsel', oprjoin => 'scalargtjoinsel' },
- { oid => '80', descr => 'less than or equal',
- oprname => '<=', oprleft => 'int4', oprright => 'int8', oprresult => 'bool',
- oprcom => '>=(int8,int4)', oprnegate => '>(int4,int8)', oprcode => 'int48le',
- oprrest => 'scalarlesel', oprjoin => 'scalarlejoinsel' },
- { oid => '82', descr => 'greater than or equal',
- oprname => '>=', oprleft => 'int4', oprright => 'int8', oprresult => 'bool',
- oprcom => '<=(int8,int4)', oprnegate => '<(int4,int8)', oprcode => 'int48ge',
- oprrest => 'scalargesel', oprjoin => 'scalargejoinsel' },
- { oid => '58', descr => 'less than',
- oprname => '<', oprleft => 'bool', oprright => 'bool', oprresult => 'bool',
- oprcom => '>(bool,bool)', oprnegate => '>=(bool,bool)', oprcode => 'boollt',
- oprrest => 'scalarltsel', oprjoin => 'scalarltjoinsel' },
- { oid => '59', descr => 'greater than',
- oprname => '>', oprleft => 'bool', oprright => 'bool', oprresult => 'bool',
- oprcom => '<(bool,bool)', oprnegate => '<=(bool,bool)', oprcode => 'boolgt',
- oprrest => 'scalargtsel', oprjoin => 'scalargtjoinsel' },
- { oid => '85', oid_symbol => 'BooleanNotEqualOperator', descr => 'not equal',
- oprname => '<>', oprleft => 'bool', oprright => 'bool', oprresult => 'bool',
- oprcom => '<>(bool,bool)', oprnegate => '=(bool,bool)', oprcode => 'boolne',
- oprrest => 'neqsel', oprjoin => 'neqjoinsel' },
- { oid => '91', oid_symbol => 'BooleanEqualOperator', descr => 'equal',
- oprname => '=', oprcanmerge => 't', oprcanhash => 't', oprleft => 'bool',
- oprright => 'bool', oprresult => 'bool', oprcom => '=(bool,bool)',
- oprnegate => '<>(bool,bool)', oprcode => 'booleq', oprrest => 'eqsel',
- oprjoin => 'eqjoinsel' },
- { oid => '1694', descr => 'less than or equal',
- oprname => '<=', oprleft => 'bool', oprright => 'bool', oprresult => 'bool',
- oprcom => '>=(bool,bool)', oprnegate => '>(bool,bool)', oprcode => 'boolle',
- oprrest => 'scalarlesel', oprjoin => 'scalarlejoinsel' },
- { oid => '1695', descr => 'greater than or equal',
- oprname => '>=', oprleft => 'bool', oprright => 'bool', oprresult => 'bool',
- oprcom => '<=(bool,bool)', oprnegate => '<(bool,bool)', oprcode => 'boolge',
- oprrest => 'scalargesel', oprjoin => 'scalargejoinsel' },
- { oid => '92', descr => 'equal',
- oprname => '=', oprcanmerge => 't', oprcanhash => 't', oprleft => 'char',
- oprright => 'char', oprresult => 'bool', oprcom => '=(char,char)',
- oprnegate => '<>(char,char)', oprcode => 'chareq', oprrest => 'eqsel',
- oprjoin => 'eqjoinsel' },
- { oid => '93', descr => 'equal',
- oprname => '=', oprcanmerge => 't', oprcanhash => 't', oprleft => 'name',
- oprright => 'name', oprresult => 'bool', oprcom => '=(name,name)',
- oprnegate => '<>(name,name)', oprcode => 'nameeq', oprrest => 'eqsel',
- oprjoin => 'eqjoinsel' },
- { oid => '94', descr => 'equal',
- oprname => '=', oprcanmerge => 't', oprcanhash => 't', oprleft => 'int2',
- oprright => 'int2', oprresult => 'bool', oprcom => '=(int2,int2)',
- oprnegate => '<>(int2,int2)', oprcode => 'int2eq', oprrest => 'eqsel',
- oprjoin => 'eqjoinsel' },
- { oid => '95', descr => 'less than',
- oprname => '<', oprleft => 'int2', oprright => 'int2', oprresult => 'bool',
- oprcom => '>(int2,int2)', oprnegate => '>=(int2,int2)', oprcode => 'int2lt',
- oprrest => 'scalarltsel', oprjoin => 'scalarltjoinsel' },
- { oid => '96', oid_symbol => 'Int4EqualOperator', descr => 'equal',
- oprname => '=', oprcanmerge => 't', oprcanhash => 't', oprleft => 'int4',
- oprright => 'int4', oprresult => 'bool', oprcom => '=(int4,int4)',
- oprnegate => '<>(int4,int4)', oprcode => 'int4eq', oprrest => 'eqsel',
- oprjoin => 'eqjoinsel' },
- { oid => '97', oid_symbol => 'Int4LessOperator', descr => 'less than',
- oprname => '<', oprleft => 'int4', oprright => 'int4', oprresult => 'bool',
- oprcom => '>(int4,int4)', oprnegate => '>=(int4,int4)', oprcode => 'int4lt',
- oprrest => 'scalarltsel', oprjoin => 'scalarltjoinsel' },
- { oid => '98', oid_symbol => 'TextEqualOperator', descr => 'equal',
- oprname => '=', oprcanmerge => 't', oprcanhash => 't', oprleft => 'text',
- oprright => 'text', oprresult => 'bool', oprcom => '=(text,text)',
- oprnegate => '<>(text,text)', oprcode => 'texteq', oprrest => 'eqsel',
- oprjoin => 'eqjoinsel' },
- { oid => '3877', oid_symbol => 'TextPrefixOperator', descr => 'starts with',
- oprname => '^@', oprleft => 'text', oprright => 'text', oprresult => 'bool',
- oprcode => 'starts_with', oprrest => 'prefixsel',
- oprjoin => 'prefixjoinsel' },
- { oid => '254', oid_symbol => 'NameEqualTextOperator', descr => 'equal',
- oprname => '=', oprcanmerge => 't', oprcanhash => 't', oprleft => 'name',
- oprright => 'text', oprresult => 'bool', oprcom => '=(text,name)',
- oprnegate => '<>(name,text)', oprcode => 'nameeqtext', oprrest => 'eqsel',
- oprjoin => 'eqjoinsel' },
- { oid => '255', oid_symbol => 'NameLessTextOperator', descr => 'less than',
- oprname => '<', oprleft => 'name', oprright => 'text', oprresult => 'bool',
- oprcom => '>(text,name)', oprnegate => '>=(name,text)',
- oprcode => 'namelttext', oprrest => 'scalarltsel',
- oprjoin => 'scalarltjoinsel' },
- { oid => '256', descr => 'less than or equal',
- oprname => '<=', oprleft => 'name', oprright => 'text', oprresult => 'bool',
- oprcom => '>=(text,name)', oprnegate => '>(name,text)',
- oprcode => 'nameletext', oprrest => 'scalarlesel',
- oprjoin => 'scalarlejoinsel' },
- { oid => '257', oid_symbol => 'NameGreaterEqualTextOperator',
- descr => 'greater than or equal',
- oprname => '>=', oprleft => 'name', oprright => 'text', oprresult => 'bool',
- oprcom => '<=(text,name)', oprnegate => '<(name,text)',
- oprcode => 'namegetext', oprrest => 'scalargesel',
- oprjoin => 'scalargejoinsel' },
- { oid => '258', descr => 'greater than',
- oprname => '>', oprleft => 'name', oprright => 'text', oprresult => 'bool',
- oprcom => '<(text,name)', oprnegate => '<=(name,text)',
- oprcode => 'namegttext', oprrest => 'scalargtsel',
- oprjoin => 'scalargtjoinsel' },
- { oid => '259', descr => 'not equal',
- oprname => '<>', oprleft => 'name', oprright => 'text', oprresult => 'bool',
- oprcom => '<>(text,name)', oprnegate => '=(name,text)',
- oprcode => 'namenetext', oprrest => 'neqsel', oprjoin => 'neqjoinsel' },
- { oid => '260', descr => 'equal',
- oprname => '=', oprcanmerge => 't', oprcanhash => 't', oprleft => 'text',
- oprright => 'name', oprresult => 'bool', oprcom => '=(name,text)',
- oprnegate => '<>(text,name)', oprcode => 'texteqname', oprrest => 'eqsel',
- oprjoin => 'eqjoinsel' },
- { oid => '261', descr => 'less than',
- oprname => '<', oprleft => 'text', oprright => 'name', oprresult => 'bool',
- oprcom => '>(name,text)', oprnegate => '>=(text,name)',
- oprcode => 'textltname', oprrest => 'scalarltsel',
- oprjoin => 'scalarltjoinsel' },
- { oid => '262', descr => 'less than or equal',
- oprname => '<=', oprleft => 'text', oprright => 'name', oprresult => 'bool',
- oprcom => '>=(name,text)', oprnegate => '>(text,name)',
- oprcode => 'textlename', oprrest => 'scalarlesel',
- oprjoin => 'scalarlejoinsel' },
- { oid => '263', descr => 'greater than or equal',
- oprname => '>=', oprleft => 'text', oprright => 'name', oprresult => 'bool',
- oprcom => '<=(name,text)', oprnegate => '<(text,name)',
- oprcode => 'textgename', oprrest => 'scalargesel',
- oprjoin => 'scalargejoinsel' },
- { oid => '264', descr => 'greater than',
- oprname => '>', oprleft => 'text', oprright => 'name', oprresult => 'bool',
- oprcom => '<(name,text)', oprnegate => '<=(text,name)',
- oprcode => 'textgtname', oprrest => 'scalargtsel',
- oprjoin => 'scalargtjoinsel' },
- { oid => '265', descr => 'not equal',
- oprname => '<>', oprleft => 'text', oprright => 'name', oprresult => 'bool',
- oprcom => '<>(name,text)', oprnegate => '=(text,name)',
- oprcode => 'textnename', oprrest => 'neqsel', oprjoin => 'neqjoinsel' },
- { oid => '349', descr => 'append element onto end of array',
- oprname => '||', oprleft => 'anycompatiblearray', oprright => 'anycompatible',
- oprresult => 'anycompatiblearray', oprcode => 'array_append' },
- { oid => '374', descr => 'prepend element onto front of array',
- oprname => '||', oprleft => 'anycompatible', oprright => 'anycompatiblearray',
- oprresult => 'anycompatiblearray', oprcode => 'array_prepend' },
- { oid => '375', descr => 'concatenate',
- oprname => '||', oprleft => 'anycompatiblearray',
- oprright => 'anycompatiblearray', oprresult => 'anycompatiblearray',
- oprcode => 'array_cat' },
- { oid => '352', descr => 'equal',
- oprname => '=', oprcanhash => 't', oprleft => 'xid', oprright => 'xid',
- oprresult => 'bool', oprcom => '=(xid,xid)', oprnegate => '<>(xid,xid)',
- oprcode => 'xideq', oprrest => 'eqsel', oprjoin => 'eqjoinsel' },
- { oid => '353', descr => 'equal',
- oprname => '=', oprleft => 'xid', oprright => 'int4', oprresult => 'bool',
- oprnegate => '<>(xid,int4)', oprcode => 'xideqint4', oprrest => 'eqsel',
- oprjoin => 'eqjoinsel' },
- { oid => '3315', descr => 'not equal',
- oprname => '<>', oprleft => 'xid', oprright => 'xid', oprresult => 'bool',
- oprcom => '<>(xid,xid)', oprnegate => '=(xid,xid)', oprcode => 'xidneq',
- oprrest => 'neqsel', oprjoin => 'neqjoinsel' },
- { oid => '3316', descr => 'not equal',
- oprname => '<>', oprleft => 'xid', oprright => 'int4', oprresult => 'bool',
- oprnegate => '=(xid,int4)', oprcode => 'xidneqint4', oprrest => 'neqsel',
- oprjoin => 'neqjoinsel' },
- { oid => '5068', descr => 'equal',
- oprname => '=', oprcanmerge => 't', oprcanhash => 't', oprleft => 'xid8',
- oprright => 'xid8', oprresult => 'bool', oprcom => '=(xid8,xid8)',
- oprnegate => '<>(xid8,xid8)', oprcode => 'xid8eq', oprrest => 'eqsel',
- oprjoin => 'eqjoinsel' },
- { oid => '5072', descr => 'not equal',
- oprname => '<>', oprleft => 'xid8', oprright => 'xid8', oprresult => 'bool',
- oprcom => '<>(xid8,xid8)', oprnegate => '=(xid8,xid8)', oprcode => 'xid8ne',
- oprrest => 'neqsel', oprjoin => 'neqjoinsel' },
- { oid => '5073', descr => 'less than',
- oprname => '<', oprleft => 'xid8', oprright => 'xid8', oprresult => 'bool',
- oprcom => '>(xid8,xid8)', oprnegate => '>=(xid8,xid8)', oprcode => 'xid8lt',
- oprrest => 'scalarltsel', oprjoin => 'scalarltjoinsel' },
- { oid => '5074', descr => 'greater than',
- oprname => '>', oprleft => 'xid8', oprright => 'xid8', oprresult => 'bool',
- oprcom => '<(xid8,xid8)', oprnegate => '<=(xid8,xid8)', oprcode => 'xid8gt',
- oprrest => 'scalargtsel', oprjoin => 'scalargtjoinsel' },
- { oid => '5075', descr => 'less than or equal',
- oprname => '<=', oprleft => 'xid8', oprright => 'xid8', oprresult => 'bool',
- oprcom => '>=(xid8,xid8)', oprnegate => '>(xid8,xid8)', oprcode => 'xid8le',
- oprrest => 'scalarlesel', oprjoin => 'scalarlejoinsel' },
- { oid => '5076', descr => 'greater than or equal',
- oprname => '>=', oprleft => 'xid8', oprright => 'xid8', oprresult => 'bool',
- oprcom => '<=(xid8,xid8)', oprnegate => '<(xid8,xid8)', oprcode => 'xid8ge',
- oprrest => 'scalargesel', oprjoin => 'scalargejoinsel' },
- { oid => '385', descr => 'equal',
- oprname => '=', oprcanhash => 't', oprleft => 'cid', oprright => 'cid',
- oprresult => 'bool', oprcom => '=(cid,cid)', oprcode => 'cideq',
- oprrest => 'eqsel', oprjoin => 'eqjoinsel' },
- { oid => '387', oid_symbol => 'TIDEqualOperator', descr => 'equal',
- oprname => '=', oprcanmerge => 't', oprcanhash => 't', oprleft => 'tid',
- oprright => 'tid', oprresult => 'bool', oprcom => '=(tid,tid)',
- oprnegate => '<>(tid,tid)', oprcode => 'tideq', oprrest => 'eqsel',
- oprjoin => 'eqjoinsel' },
- { oid => '402', descr => 'not equal',
- oprname => '<>', oprleft => 'tid', oprright => 'tid', oprresult => 'bool',
- oprcom => '<>(tid,tid)', oprnegate => '=(tid,tid)', oprcode => 'tidne',
- oprrest => 'neqsel', oprjoin => 'neqjoinsel' },
- { oid => '2799', oid_symbol => 'TIDLessOperator', descr => 'less than',
- oprname => '<', oprleft => 'tid', oprright => 'tid', oprresult => 'bool',
- oprcom => '>(tid,tid)', oprnegate => '>=(tid,tid)', oprcode => 'tidlt',
- oprrest => 'scalarltsel', oprjoin => 'scalarltjoinsel' },
- { oid => '2800', oid_symbol => 'TIDGreaterOperator', descr => 'greater than',
- oprname => '>', oprleft => 'tid', oprright => 'tid', oprresult => 'bool',
- oprcom => '<(tid,tid)', oprnegate => '<=(tid,tid)', oprcode => 'tidgt',
- oprrest => 'scalargtsel', oprjoin => 'scalargtjoinsel' },
- { oid => '2801', oid_symbol => 'TIDLessEqOperator',
- descr => 'less than or equal',
- oprname => '<=', oprleft => 'tid', oprright => 'tid', oprresult => 'bool',
- oprcom => '>=(tid,tid)', oprnegate => '>(tid,tid)', oprcode => 'tidle',
- oprrest => 'scalarlesel', oprjoin => 'scalarlejoinsel' },
- { oid => '2802', oid_symbol => 'TIDGreaterEqOperator',
- descr => 'greater than or equal',
- oprname => '>=', oprleft => 'tid', oprright => 'tid', oprresult => 'bool',
- oprcom => '<=(tid,tid)', oprnegate => '<(tid,tid)', oprcode => 'tidge',
- oprrest => 'scalargesel', oprjoin => 'scalargejoinsel' },
- { oid => '410', descr => 'equal',
- oprname => '=', oprcanmerge => 't', oprcanhash => 't', oprleft => 'int8',
- oprright => 'int8', oprresult => 'bool', oprcom => '=(int8,int8)',
- oprnegate => '<>(int8,int8)', oprcode => 'int8eq', oprrest => 'eqsel',
- oprjoin => 'eqjoinsel' },
- { oid => '411', descr => 'not equal',
- oprname => '<>', oprleft => 'int8', oprright => 'int8', oprresult => 'bool',
- oprcom => '<>(int8,int8)', oprnegate => '=(int8,int8)', oprcode => 'int8ne',
- oprrest => 'neqsel', oprjoin => 'neqjoinsel' },
- { oid => '412', oid_symbol => 'Int8LessOperator', descr => 'less than',
- oprname => '<', oprleft => 'int8', oprright => 'int8', oprresult => 'bool',
- oprcom => '>(int8,int8)', oprnegate => '>=(int8,int8)', oprcode => 'int8lt',
- oprrest => 'scalarltsel', oprjoin => 'scalarltjoinsel' },
- { oid => '413', descr => 'greater than',
- oprname => '>', oprleft => 'int8', oprright => 'int8', oprresult => 'bool',
- oprcom => '<(int8,int8)', oprnegate => '<=(int8,int8)', oprcode => 'int8gt',
- oprrest => 'scalargtsel', oprjoin => 'scalargtjoinsel' },
- { oid => '414', descr => 'less than or equal',
- oprname => '<=', oprleft => 'int8', oprright => 'int8', oprresult => 'bool',
- oprcom => '>=(int8,int8)', oprnegate => '>(int8,int8)', oprcode => 'int8le',
- oprrest => 'scalarlesel', oprjoin => 'scalarlejoinsel' },
- { oid => '415', descr => 'greater than or equal',
- oprname => '>=', oprleft => 'int8', oprright => 'int8', oprresult => 'bool',
- oprcom => '<=(int8,int8)', oprnegate => '<(int8,int8)', oprcode => 'int8ge',
- oprrest => 'scalargesel', oprjoin => 'scalargejoinsel' },
- { oid => '416', descr => 'equal',
- oprname => '=', oprcanmerge => 't', oprcanhash => 't', oprleft => 'int8',
- oprright => 'int4', oprresult => 'bool', oprcom => '=(int4,int8)',
- oprnegate => '<>(int8,int4)', oprcode => 'int84eq', oprrest => 'eqsel',
- oprjoin => 'eqjoinsel' },
- { oid => '417', descr => 'not equal',
- oprname => '<>', oprleft => 'int8', oprright => 'int4', oprresult => 'bool',
- oprcom => '<>(int4,int8)', oprnegate => '=(int8,int4)', oprcode => 'int84ne',
- oprrest => 'neqsel', oprjoin => 'neqjoinsel' },
- { oid => '418', descr => 'less than',
- oprname => '<', oprleft => 'int8', oprright => 'int4', oprresult => 'bool',
- oprcom => '>(int4,int8)', oprnegate => '>=(int8,int4)', oprcode => 'int84lt',
- oprrest => 'scalarltsel', oprjoin => 'scalarltjoinsel' },
- { oid => '419', descr => 'greater than',
- oprname => '>', oprleft => 'int8', oprright => 'int4', oprresult => 'bool',
- oprcom => '<(int4,int8)', oprnegate => '<=(int8,int4)', oprcode => 'int84gt',
- oprrest => 'scalargtsel', oprjoin => 'scalargtjoinsel' },
- { oid => '420', descr => 'less than or equal',
- oprname => '<=', oprleft => 'int8', oprright => 'int4', oprresult => 'bool',
- oprcom => '>=(int4,int8)', oprnegate => '>(int8,int4)', oprcode => 'int84le',
- oprrest => 'scalarlesel', oprjoin => 'scalarlejoinsel' },
- { oid => '430', descr => 'greater than or equal',
- oprname => '>=', oprleft => 'int8', oprright => 'int4', oprresult => 'bool',
- oprcom => '<=(int4,int8)', oprnegate => '<(int8,int4)', oprcode => 'int84ge',
- oprrest => 'scalargesel', oprjoin => 'scalargejoinsel' },
- { oid => '439', descr => 'modulus',
- oprname => '%', oprleft => 'int8', oprright => 'int8', oprresult => 'int8',
- oprcode => 'int8mod' },
- { oid => '473', descr => 'absolute value',
- oprname => '@', oprkind => 'l', oprleft => '0', oprright => 'int8',
- oprresult => 'int8', oprcode => 'int8abs' },
- { oid => '484', descr => 'negate',
- oprname => '-', oprkind => 'l', oprleft => '0', oprright => 'int8',
- oprresult => 'int8', oprcode => 'int8um' },
- { oid => '485', descr => 'is left of',
- oprname => '<<', oprleft => 'polygon', oprright => 'polygon',
- oprresult => 'bool', oprcode => 'poly_left', oprrest => 'positionsel',
- oprjoin => 'positionjoinsel' },
- { oid => '486', descr => 'overlaps or is left of',
- oprname => '&<', oprleft => 'polygon', oprright => 'polygon',
- oprresult => 'bool', oprcode => 'poly_overleft', oprrest => 'positionsel',
- oprjoin => 'positionjoinsel' },
- { oid => '487', descr => 'overlaps or is right of',
- oprname => '&>', oprleft => 'polygon', oprright => 'polygon',
- oprresult => 'bool', oprcode => 'poly_overright', oprrest => 'positionsel',
- oprjoin => 'positionjoinsel' },
- { oid => '488', descr => 'is right of',
- oprname => '>>', oprleft => 'polygon', oprright => 'polygon',
- oprresult => 'bool', oprcode => 'poly_right', oprrest => 'positionsel',
- oprjoin => 'positionjoinsel' },
- { oid => '489', descr => 'is contained by',
- oprname => '<@', oprleft => 'polygon', oprright => 'polygon',
- oprresult => 'bool', oprcom => '@>(polygon,polygon)',
- oprcode => 'poly_contained', oprrest => 'contsel', oprjoin => 'contjoinsel' },
- { oid => '490', descr => 'contains',
- oprname => '@>', oprleft => 'polygon', oprright => 'polygon',
- oprresult => 'bool', oprcom => '<@(polygon,polygon)',
- oprcode => 'poly_contain', oprrest => 'contsel', oprjoin => 'contjoinsel' },
- { oid => '491', descr => 'same as',
- oprname => '~=', oprleft => 'polygon', oprright => 'polygon',
- oprresult => 'bool', oprcom => '~=(polygon,polygon)', oprcode => 'poly_same',
- oprrest => 'eqsel', oprjoin => 'eqjoinsel' },
- { oid => '492', descr => 'overlaps',
- oprname => '&&', oprleft => 'polygon', oprright => 'polygon',
- oprresult => 'bool', oprcom => '&&(polygon,polygon)',
- oprcode => 'poly_overlap', oprrest => 'areasel', oprjoin => 'areajoinsel' },
- { oid => '493', descr => 'is left of',
- oprname => '<<', oprleft => 'box', oprright => 'box', oprresult => 'bool',
- oprcode => 'box_left', oprrest => 'positionsel',
- oprjoin => 'positionjoinsel' },
- { oid => '494', descr => 'overlaps or is left of',
- oprname => '&<', oprleft => 'box', oprright => 'box', oprresult => 'bool',
- oprcode => 'box_overleft', oprrest => 'positionsel',
- oprjoin => 'positionjoinsel' },
- { oid => '495', descr => 'overlaps or is right of',
- oprname => '&>', oprleft => 'box', oprright => 'box', oprresult => 'bool',
- oprcode => 'box_overright', oprrest => 'positionsel',
- oprjoin => 'positionjoinsel' },
- { oid => '496', descr => 'is right of',
- oprname => '>>', oprleft => 'box', oprright => 'box', oprresult => 'bool',
- oprcode => 'box_right', oprrest => 'positionsel',
- oprjoin => 'positionjoinsel' },
- { oid => '497', descr => 'is contained by',
- oprname => '<@', oprleft => 'box', oprright => 'box', oprresult => 'bool',
- oprcom => '@>(box,box)', oprcode => 'box_contained', oprrest => 'contsel',
- oprjoin => 'contjoinsel' },
- { oid => '498', descr => 'contains',
- oprname => '@>', oprleft => 'box', oprright => 'box', oprresult => 'bool',
- oprcom => '<@(box,box)', oprcode => 'box_contain', oprrest => 'contsel',
- oprjoin => 'contjoinsel' },
- { oid => '499', descr => 'same as',
- oprname => '~=', oprleft => 'box', oprright => 'box', oprresult => 'bool',
- oprcom => '~=(box,box)', oprcode => 'box_same', oprrest => 'eqsel',
- oprjoin => 'eqjoinsel' },
- { oid => '500', descr => 'overlaps',
- oprname => '&&', oprleft => 'box', oprright => 'box', oprresult => 'bool',
- oprcom => '&&(box,box)', oprcode => 'box_overlap', oprrest => 'areasel',
- oprjoin => 'areajoinsel' },
- { oid => '501', descr => 'greater than or equal by area',
- oprname => '>=', oprleft => 'box', oprright => 'box', oprresult => 'bool',
- oprcom => '<=(box,box)', oprnegate => '<(box,box)', oprcode => 'box_ge',
- oprrest => 'areasel', oprjoin => 'areajoinsel' },
- { oid => '502', descr => 'greater than by area',
- oprname => '>', oprleft => 'box', oprright => 'box', oprresult => 'bool',
- oprcom => '<(box,box)', oprnegate => '<=(box,box)', oprcode => 'box_gt',
- oprrest => 'areasel', oprjoin => 'areajoinsel' },
- { oid => '503', descr => 'equal by area',
- oprname => '=', oprleft => 'box', oprright => 'box', oprresult => 'bool',
- oprcom => '=(box,box)', oprcode => 'box_eq', oprrest => 'eqsel',
- oprjoin => 'eqjoinsel' },
- { oid => '504', descr => 'less than by area',
- oprname => '<', oprleft => 'box', oprright => 'box', oprresult => 'bool',
- oprcom => '>(box,box)', oprnegate => '>=(box,box)', oprcode => 'box_lt',
- oprrest => 'areasel', oprjoin => 'areajoinsel' },
- { oid => '505', descr => 'less than or equal by area',
- oprname => '<=', oprleft => 'box', oprright => 'box', oprresult => 'bool',
- oprcom => '>=(box,box)', oprnegate => '>(box,box)', oprcode => 'box_le',
- oprrest => 'areasel', oprjoin => 'areajoinsel' },
- { oid => '506', descr => 'deprecated, use |>> instead',
- oprname => '>^', oprleft => 'point', oprright => 'point', oprresult => 'bool',
- oprcode => 'point_above', oprrest => 'positionsel',
- oprjoin => 'positionjoinsel' },
- { oid => '507', descr => 'is left of',
- oprname => '<<', oprleft => 'point', oprright => 'point', oprresult => 'bool',
- oprcode => 'point_left', oprrest => 'positionsel',
- oprjoin => 'positionjoinsel' },
- { oid => '508', descr => 'is right of',
- oprname => '>>', oprleft => 'point', oprright => 'point', oprresult => 'bool',
- oprcode => 'point_right', oprrest => 'positionsel',
- oprjoin => 'positionjoinsel' },
- { oid => '509', descr => 'deprecated, use <<| instead',
- oprname => '<^', oprleft => 'point', oprright => 'point', oprresult => 'bool',
- oprcode => 'point_below', oprrest => 'positionsel',
- oprjoin => 'positionjoinsel' },
- { oid => '510', descr => 'same as',
- oprname => '~=', oprleft => 'point', oprright => 'point', oprresult => 'bool',
- oprcom => '~=(point,point)', oprnegate => '<>(point,point)',
- oprcode => 'point_eq', oprrest => 'eqsel', oprjoin => 'eqjoinsel' },
- { oid => '511', descr => 'point inside box',
- oprname => '<@', oprleft => 'point', oprright => 'box', oprresult => 'bool',
- oprcom => '@>(box,point)', oprcode => 'on_pb', oprrest => 'contsel',
- oprjoin => 'contjoinsel' },
- { oid => '433', descr => 'contains',
- oprname => '@>', oprleft => 'box', oprright => 'point', oprresult => 'bool',
- oprcom => '<@(point,box)', oprcode => 'box_contain_pt', oprrest => 'contsel',
- oprjoin => 'contjoinsel' },
- { oid => '512', descr => 'point within closed path, or point on open path',
- oprname => '<@', oprleft => 'point', oprright => 'path', oprresult => 'bool',
- oprcom => '@>(path,point)', oprcode => 'on_ppath' },
- { oid => '513', descr => 'center of',
- oprname => '@@', oprkind => 'l', oprleft => '0', oprright => 'box',
- oprresult => 'point', oprcode => 'box_center' },
- { oid => '514', descr => 'multiply',
- oprname => '*', oprleft => 'int4', oprright => 'int4', oprresult => 'int4',
- oprcom => '*(int4,int4)', oprcode => 'int4mul' },
- { oid => '517', descr => 'distance between',
- oprname => '<->', oprleft => 'point', oprright => 'point',
- oprresult => 'float8', oprcom => '<->(point,point)',
- oprcode => 'point_distance' },
- { oid => '518', descr => 'not equal',
- oprname => '<>', oprleft => 'int4', oprright => 'int4', oprresult => 'bool',
- oprcom => '<>(int4,int4)', oprnegate => '=(int4,int4)', oprcode => 'int4ne',
- oprrest => 'neqsel', oprjoin => 'neqjoinsel' },
- { oid => '519', descr => 'not equal',
- oprname => '<>', oprleft => 'int2', oprright => 'int2', oprresult => 'bool',
- oprcom => '<>(int2,int2)', oprnegate => '=(int2,int2)', oprcode => 'int2ne',
- oprrest => 'neqsel', oprjoin => 'neqjoinsel' },
- { oid => '520', descr => 'greater than',
- oprname => '>', oprleft => 'int2', oprright => 'int2', oprresult => 'bool',
- oprcom => '<(int2,int2)', oprnegate => '<=(int2,int2)', oprcode => 'int2gt',
- oprrest => 'scalargtsel', oprjoin => 'scalargtjoinsel' },
- { oid => '521', descr => 'greater than',
- oprname => '>', oprleft => 'int4', oprright => 'int4', oprresult => 'bool',
- oprcom => '<(int4,int4)', oprnegate => '<=(int4,int4)', oprcode => 'int4gt',
- oprrest => 'scalargtsel', oprjoin => 'scalargtjoinsel' },
- { oid => '522', descr => 'less than or equal',
- oprname => '<=', oprleft => 'int2', oprright => 'int2', oprresult => 'bool',
- oprcom => '>=(int2,int2)', oprnegate => '>(int2,int2)', oprcode => 'int2le',
- oprrest => 'scalarlesel', oprjoin => 'scalarlejoinsel' },
- { oid => '523', descr => 'less than or equal',
- oprname => '<=', oprleft => 'int4', oprright => 'int4', oprresult => 'bool',
- oprcom => '>=(int4,int4)', oprnegate => '>(int4,int4)', oprcode => 'int4le',
- oprrest => 'scalarlesel', oprjoin => 'scalarlejoinsel' },
- { oid => '524', descr => 'greater than or equal',
- oprname => '>=', oprleft => 'int2', oprright => 'int2', oprresult => 'bool',
- oprcom => '<=(int2,int2)', oprnegate => '<(int2,int2)', oprcode => 'int2ge',
- oprrest => 'scalargesel', oprjoin => 'scalargejoinsel' },
- { oid => '525', descr => 'greater than or equal',
- oprname => '>=', oprleft => 'int4', oprright => 'int4', oprresult => 'bool',
- oprcom => '<=(int4,int4)', oprnegate => '<(int4,int4)', oprcode => 'int4ge',
- oprrest => 'scalargesel', oprjoin => 'scalargejoinsel' },
- { oid => '526', descr => 'multiply',
- oprname => '*', oprleft => 'int2', oprright => 'int2', oprresult => 'int2',
- oprcom => '*(int2,int2)', oprcode => 'int2mul' },
- { oid => '527', descr => 'divide',
- oprname => '/', oprleft => 'int2', oprright => 'int2', oprresult => 'int2',
- oprcode => 'int2div' },
- { oid => '528', descr => 'divide',
- oprname => '/', oprleft => 'int4', oprright => 'int4', oprresult => 'int4',
- oprcode => 'int4div' },
- { oid => '529', descr => 'modulus',
- oprname => '%', oprleft => 'int2', oprright => 'int2', oprresult => 'int2',
- oprcode => 'int2mod' },
- { oid => '530', descr => 'modulus',
- oprname => '%', oprleft => 'int4', oprright => 'int4', oprresult => 'int4',
- oprcode => 'int4mod' },
- { oid => '531', descr => 'not equal',
- oprname => '<>', oprleft => 'text', oprright => 'text', oprresult => 'bool',
- oprcom => '<>(text,text)', oprnegate => '=(text,text)', oprcode => 'textne',
- oprrest => 'neqsel', oprjoin => 'neqjoinsel' },
- { oid => '532', descr => 'equal',
- oprname => '=', oprcanmerge => 't', oprcanhash => 't', oprleft => 'int2',
- oprright => 'int4', oprresult => 'bool', oprcom => '=(int4,int2)',
- oprnegate => '<>(int2,int4)', oprcode => 'int24eq', oprrest => 'eqsel',
- oprjoin => 'eqjoinsel' },
- { oid => '533', descr => 'equal',
- oprname => '=', oprcanmerge => 't', oprcanhash => 't', oprleft => 'int4',
- oprright => 'int2', oprresult => 'bool', oprcom => '=(int2,int4)',
- oprnegate => '<>(int4,int2)', oprcode => 'int42eq', oprrest => 'eqsel',
- oprjoin => 'eqjoinsel' },
- { oid => '534', descr => 'less than',
- oprname => '<', oprleft => 'int2', oprright => 'int4', oprresult => 'bool',
- oprcom => '>(int4,int2)', oprnegate => '>=(int2,int4)', oprcode => 'int24lt',
- oprrest => 'scalarltsel', oprjoin => 'scalarltjoinsel' },
- { oid => '535', descr => 'less than',
- oprname => '<', oprleft => 'int4', oprright => 'int2', oprresult => 'bool',
- oprcom => '>(int2,int4)', oprnegate => '>=(int4,int2)', oprcode => 'int42lt',
- oprrest => 'scalarltsel', oprjoin => 'scalarltjoinsel' },
- { oid => '536', descr => 'greater than',
- oprname => '>', oprleft => 'int2', oprright => 'int4', oprresult => 'bool',
- oprcom => '<(int4,int2)', oprnegate => '<=(int2,int4)', oprcode => 'int24gt',
- oprrest => 'scalargtsel', oprjoin => 'scalargtjoinsel' },
- { oid => '537', descr => 'greater than',
- oprname => '>', oprleft => 'int4', oprright => 'int2', oprresult => 'bool',
- oprcom => '<(int2,int4)', oprnegate => '<=(int4,int2)', oprcode => 'int42gt',
- oprrest => 'scalargtsel', oprjoin => 'scalargtjoinsel' },
- { oid => '538', descr => 'not equal',
- oprname => '<>', oprleft => 'int2', oprright => 'int4', oprresult => 'bool',
- oprcom => '<>(int4,int2)', oprnegate => '=(int2,int4)', oprcode => 'int24ne',
- oprrest => 'neqsel', oprjoin => 'neqjoinsel' },
- { oid => '539', descr => 'not equal',
- oprname => '<>', oprleft => 'int4', oprright => 'int2', oprresult => 'bool',
- oprcom => '<>(int2,int4)', oprnegate => '=(int4,int2)', oprcode => 'int42ne',
- oprrest => 'neqsel', oprjoin => 'neqjoinsel' },
- { oid => '540', descr => 'less than or equal',
- oprname => '<=', oprleft => 'int2', oprright => 'int4', oprresult => 'bool',
- oprcom => '>=(int4,int2)', oprnegate => '>(int2,int4)', oprcode => 'int24le',
- oprrest => 'scalarlesel', oprjoin => 'scalarlejoinsel' },
- { oid => '541', descr => 'less than or equal',
- oprname => '<=', oprleft => 'int4', oprright => 'int2', oprresult => 'bool',
- oprcom => '>=(int2,int4)', oprnegate => '>(int4,int2)', oprcode => 'int42le',
- oprrest => 'scalarlesel', oprjoin => 'scalarlejoinsel' },
- { oid => '542', descr => 'greater than or equal',
- oprname => '>=', oprleft => 'int2', oprright => 'int4', oprresult => 'bool',
- oprcom => '<=(int4,int2)', oprnegate => '<(int2,int4)', oprcode => 'int24ge',
- oprrest => 'scalargesel', oprjoin => 'scalargejoinsel' },
- { oid => '543', descr => 'greater than or equal',
- oprname => '>=', oprleft => 'int4', oprright => 'int2', oprresult => 'bool',
- oprcom => '<=(int2,int4)', oprnegate => '<(int4,int2)', oprcode => 'int42ge',
- oprrest => 'scalargesel', oprjoin => 'scalargejoinsel' },
- { oid => '544', descr => 'multiply',
- oprname => '*', oprleft => 'int2', oprright => 'int4', oprresult => 'int4',
- oprcom => '*(int4,int2)', oprcode => 'int24mul' },
- { oid => '545', descr => 'multiply',
- oprname => '*', oprleft => 'int4', oprright => 'int2', oprresult => 'int4',
- oprcom => '*(int2,int4)', oprcode => 'int42mul' },
- { oid => '546', descr => 'divide',
- oprname => '/', oprleft => 'int2', oprright => 'int4', oprresult => 'int4',
- oprcode => 'int24div' },
- { oid => '547', descr => 'divide',
- oprname => '/', oprleft => 'int4', oprright => 'int2', oprresult => 'int4',
- oprcode => 'int42div' },
- { oid => '550', descr => 'add',
- oprname => '+', oprleft => 'int2', oprright => 'int2', oprresult => 'int2',
- oprcom => '+(int2,int2)', oprcode => 'int2pl' },
- { oid => '551', descr => 'add',
- oprname => '+', oprleft => 'int4', oprright => 'int4', oprresult => 'int4',
- oprcom => '+(int4,int4)', oprcode => 'int4pl' },
- { oid => '552', descr => 'add',
- oprname => '+', oprleft => 'int2', oprright => 'int4', oprresult => 'int4',
- oprcom => '+(int4,int2)', oprcode => 'int24pl' },
- { oid => '553', descr => 'add',
- oprname => '+', oprleft => 'int4', oprright => 'int2', oprresult => 'int4',
- oprcom => '+(int2,int4)', oprcode => 'int42pl' },
- { oid => '554', descr => 'subtract',
- oprname => '-', oprleft => 'int2', oprright => 'int2', oprresult => 'int2',
- oprcode => 'int2mi' },
- { oid => '555', descr => 'subtract',
- oprname => '-', oprleft => 'int4', oprright => 'int4', oprresult => 'int4',
- oprcode => 'int4mi' },
- { oid => '556', descr => 'subtract',
- oprname => '-', oprleft => 'int2', oprright => 'int4', oprresult => 'int4',
- oprcode => 'int24mi' },
- { oid => '557', descr => 'subtract',
- oprname => '-', oprleft => 'int4', oprright => 'int2', oprresult => 'int4',
- oprcode => 'int42mi' },
- { oid => '558', descr => 'negate',
- oprname => '-', oprkind => 'l', oprleft => '0', oprright => 'int4',
- oprresult => 'int4', oprcode => 'int4um' },
- { oid => '559', descr => 'negate',
- oprname => '-', oprkind => 'l', oprleft => '0', oprright => 'int2',
- oprresult => 'int2', oprcode => 'int2um' },
- { oid => '584', descr => 'negate',
- oprname => '-', oprkind => 'l', oprleft => '0', oprright => 'float4',
- oprresult => 'float4', oprcode => 'float4um' },
- { oid => '585', descr => 'negate',
- oprname => '-', oprkind => 'l', oprleft => '0', oprright => 'float8',
- oprresult => 'float8', oprcode => 'float8um' },
- { oid => '586', descr => 'add',
- oprname => '+', oprleft => 'float4', oprright => 'float4',
- oprresult => 'float4', oprcom => '+(float4,float4)', oprcode => 'float4pl' },
- { oid => '587', descr => 'subtract',
- oprname => '-', oprleft => 'float4', oprright => 'float4',
- oprresult => 'float4', oprcode => 'float4mi' },
- { oid => '588', descr => 'divide',
- oprname => '/', oprleft => 'float4', oprright => 'float4',
- oprresult => 'float4', oprcode => 'float4div' },
- { oid => '589', descr => 'multiply',
- oprname => '*', oprleft => 'float4', oprright => 'float4',
- oprresult => 'float4', oprcom => '*(float4,float4)', oprcode => 'float4mul' },
- { oid => '590', descr => 'absolute value',
- oprname => '@', oprkind => 'l', oprleft => '0', oprright => 'float4',
- oprresult => 'float4', oprcode => 'float4abs' },
- { oid => '591', descr => 'add',
- oprname => '+', oprleft => 'float8', oprright => 'float8',
- oprresult => 'float8', oprcom => '+(float8,float8)', oprcode => 'float8pl' },
- { oid => '592', descr => 'subtract',
- oprname => '-', oprleft => 'float8', oprright => 'float8',
- oprresult => 'float8', oprcode => 'float8mi' },
- { oid => '593', descr => 'divide',
- oprname => '/', oprleft => 'float8', oprright => 'float8',
- oprresult => 'float8', oprcode => 'float8div' },
- { oid => '594', descr => 'multiply',
- oprname => '*', oprleft => 'float8', oprright => 'float8',
- oprresult => 'float8', oprcom => '*(float8,float8)', oprcode => 'float8mul' },
- { oid => '595', descr => 'absolute value',
- oprname => '@', oprkind => 'l', oprleft => '0', oprright => 'float8',
- oprresult => 'float8', oprcode => 'float8abs' },
- { oid => '596', descr => 'square root',
- oprname => '|/', oprkind => 'l', oprleft => '0', oprright => 'float8',
- oprresult => 'float8', oprcode => 'dsqrt' },
- { oid => '597', descr => 'cube root',
- oprname => '||/', oprkind => 'l', oprleft => '0', oprright => 'float8',
- oprresult => 'float8', oprcode => 'dcbrt' },
- { oid => '607', descr => 'equal',
- oprname => '=', oprcanmerge => 't', oprcanhash => 't', oprleft => 'oid',
- oprright => 'oid', oprresult => 'bool', oprcom => '=(oid,oid)',
- oprnegate => '<>(oid,oid)', oprcode => 'oideq', oprrest => 'eqsel',
- oprjoin => 'eqjoinsel' },
- { oid => '608', descr => 'not equal',
- oprname => '<>', oprleft => 'oid', oprright => 'oid', oprresult => 'bool',
- oprcom => '<>(oid,oid)', oprnegate => '=(oid,oid)', oprcode => 'oidne',
- oprrest => 'neqsel', oprjoin => 'neqjoinsel' },
- { oid => '609', descr => 'less than',
- oprname => '<', oprleft => 'oid', oprright => 'oid', oprresult => 'bool',
- oprcom => '>(oid,oid)', oprnegate => '>=(oid,oid)', oprcode => 'oidlt',
- oprrest => 'scalarltsel', oprjoin => 'scalarltjoinsel' },
- { oid => '610', descr => 'greater than',
- oprname => '>', oprleft => 'oid', oprright => 'oid', oprresult => 'bool',
- oprcom => '<(oid,oid)', oprnegate => '<=(oid,oid)', oprcode => 'oidgt',
- oprrest => 'scalargtsel', oprjoin => 'scalargtjoinsel' },
- { oid => '611', descr => 'less than or equal',
- oprname => '<=', oprleft => 'oid', oprright => 'oid', oprresult => 'bool',
- oprcom => '>=(oid,oid)', oprnegate => '>(oid,oid)', oprcode => 'oidle',
- oprrest => 'scalarlesel', oprjoin => 'scalarlejoinsel' },
- { oid => '612', descr => 'greater than or equal',
- oprname => '>=', oprleft => 'oid', oprright => 'oid', oprresult => 'bool',
- oprcom => '<=(oid,oid)', oprnegate => '<(oid,oid)', oprcode => 'oidge',
- oprrest => 'scalargesel', oprjoin => 'scalargejoinsel' },
- { oid => '644', descr => 'not equal',
- oprname => '<>', oprleft => 'oidvector', oprright => 'oidvector',
- oprresult => 'bool', oprcom => '<>(oidvector,oidvector)',
- oprnegate => '=(oidvector,oidvector)', oprcode => 'oidvectorne',
- oprrest => 'neqsel', oprjoin => 'neqjoinsel' },
- { oid => '645', descr => 'less than',
- oprname => '<', oprleft => 'oidvector', oprright => 'oidvector',
- oprresult => 'bool', oprcom => '>(oidvector,oidvector)',
- oprnegate => '>=(oidvector,oidvector)', oprcode => 'oidvectorlt',
- oprrest => 'scalarltsel', oprjoin => 'scalarltjoinsel' },
- { oid => '646', descr => 'greater than',
- oprname => '>', oprleft => 'oidvector', oprright => 'oidvector',
- oprresult => 'bool', oprcom => '<(oidvector,oidvector)',
- oprnegate => '<=(oidvector,oidvector)', oprcode => 'oidvectorgt',
- oprrest => 'scalargtsel', oprjoin => 'scalargtjoinsel' },
- { oid => '647', descr => 'less than or equal',
- oprname => '<=', oprleft => 'oidvector', oprright => 'oidvector',
- oprresult => 'bool', oprcom => '>=(oidvector,oidvector)',
- oprnegate => '>(oidvector,oidvector)', oprcode => 'oidvectorle',
- oprrest => 'scalarlesel', oprjoin => 'scalarlejoinsel' },
- { oid => '648', descr => 'greater than or equal',
- oprname => '>=', oprleft => 'oidvector', oprright => 'oidvector',
- oprresult => 'bool', oprcom => '<=(oidvector,oidvector)',
- oprnegate => '<(oidvector,oidvector)', oprcode => 'oidvectorge',
- oprrest => 'scalargesel', oprjoin => 'scalargejoinsel' },
- { oid => '649', descr => 'equal',
- oprname => '=', oprcanmerge => 't', oprcanhash => 't', oprleft => 'oidvector',
- oprright => 'oidvector', oprresult => 'bool',
- oprcom => '=(oidvector,oidvector)', oprnegate => '<>(oidvector,oidvector)',
- oprcode => 'oidvectoreq', oprrest => 'eqsel', oprjoin => 'eqjoinsel' },
- { oid => '613', descr => 'distance between',
- oprname => '<->', oprleft => 'point', oprright => 'line',
- oprresult => 'float8', oprcom => '<->(line,point)', oprcode => 'dist_pl' },
- { oid => '760', descr => 'distance between',
- oprname => '<->', oprleft => 'line', oprright => 'point',
- oprresult => 'float8', oprcom => '<->(point,line)', oprcode => 'dist_lp' },
- { oid => '614', descr => 'distance between',
- oprname => '<->', oprleft => 'point', oprright => 'lseg',
- oprresult => 'float8', oprcom => '<->(lseg,point)', oprcode => 'dist_ps' },
- { oid => '761', descr => 'distance between',
- oprname => '<->', oprleft => 'lseg', oprright => 'point',
- oprresult => 'float8', oprcom => '<->(point,lseg)', oprcode => 'dist_sp' },
- { oid => '615', descr => 'distance between',
- oprname => '<->', oprleft => 'point', oprright => 'box',
- oprresult => 'float8', oprcom => '<->(box,point)', oprcode => 'dist_pb' },
- { oid => '606', descr => 'distance between',
- oprname => '<->', oprleft => 'box', oprright => 'point',
- oprresult => 'float8', oprcom => '<->(point,box)', oprcode => 'dist_bp' },
- { oid => '616', descr => 'distance between',
- oprname => '<->', oprleft => 'lseg', oprright => 'line',
- oprresult => 'float8', oprcom => '<->(line,lseg)', oprcode => 'dist_sl' },
- { oid => '762', descr => 'distance between',
- oprname => '<->', oprleft => 'line', oprright => 'lseg',
- oprresult => 'float8', oprcom => '<->(lseg,line)', oprcode => 'dist_ls' },
- { oid => '617', descr => 'distance between',
- oprname => '<->', oprleft => 'lseg', oprright => 'box', oprresult => 'float8',
- oprcom => '<->(box,lseg)', oprcode => 'dist_sb' },
- { oid => '763', descr => 'distance between',
- oprname => '<->', oprleft => 'box', oprright => 'lseg', oprresult => 'float8',
- oprcom => '<->(lseg,box)', oprcode => 'dist_bs' },
- { oid => '618', descr => 'distance between',
- oprname => '<->', oprleft => 'point', oprright => 'path',
- oprresult => 'float8', oprcom => '<->(path,point)', oprcode => 'dist_ppath' },
- { oid => '784', descr => 'distance between',
- oprname => '<->', oprleft => 'path', oprright => 'point',
- oprresult => 'float8', oprcom => '<->(point,path)', oprcode => 'dist_pathp' },
- { oid => '620', descr => 'equal',
- oprname => '=', oprcanmerge => 't', oprcanhash => 't', oprleft => 'float4',
- oprright => 'float4', oprresult => 'bool', oprcom => '=(float4,float4)',
- oprnegate => '<>(float4,float4)', oprcode => 'float4eq', oprrest => 'eqsel',
- oprjoin => 'eqjoinsel' },
- { oid => '621', descr => 'not equal',
- oprname => '<>', oprleft => 'float4', oprright => 'float4',
- oprresult => 'bool', oprcom => '<>(float4,float4)',
- oprnegate => '=(float4,float4)', oprcode => 'float4ne', oprrest => 'neqsel',
- oprjoin => 'neqjoinsel' },
- { oid => '622', descr => 'less than',
- oprname => '<', oprleft => 'float4', oprright => 'float4',
- oprresult => 'bool', oprcom => '>(float4,float4)',
- oprnegate => '>=(float4,float4)', oprcode => 'float4lt',
- oprrest => 'scalarltsel', oprjoin => 'scalarltjoinsel' },
- { oid => '623', descr => 'greater than',
- oprname => '>', oprleft => 'float4', oprright => 'float4',
- oprresult => 'bool', oprcom => '<(float4,float4)',
- oprnegate => '<=(float4,float4)', oprcode => 'float4gt',
- oprrest => 'scalargtsel', oprjoin => 'scalargtjoinsel' },
- { oid => '624', descr => 'less than or equal',
- oprname => '<=', oprleft => 'float4', oprright => 'float4',
- oprresult => 'bool', oprcom => '>=(float4,float4)',
- oprnegate => '>(float4,float4)', oprcode => 'float4le',
- oprrest => 'scalarlesel', oprjoin => 'scalarlejoinsel' },
- { oid => '625', descr => 'greater than or equal',
- oprname => '>=', oprleft => 'float4', oprright => 'float4',
- oprresult => 'bool', oprcom => '<=(float4,float4)',
- oprnegate => '<(float4,float4)', oprcode => 'float4ge',
- oprrest => 'scalargesel', oprjoin => 'scalargejoinsel' },
- { oid => '630', descr => 'not equal',
- oprname => '<>', oprleft => 'char', oprright => 'char', oprresult => 'bool',
- oprcom => '<>(char,char)', oprnegate => '=(char,char)', oprcode => 'charne',
- oprrest => 'neqsel', oprjoin => 'neqjoinsel' },
- { oid => '631', descr => 'less than',
- oprname => '<', oprleft => 'char', oprright => 'char', oprresult => 'bool',
- oprcom => '>(char,char)', oprnegate => '>=(char,char)', oprcode => 'charlt',
- oprrest => 'scalarltsel', oprjoin => 'scalarltjoinsel' },
- { oid => '632', descr => 'less than or equal',
- oprname => '<=', oprleft => 'char', oprright => 'char', oprresult => 'bool',
- oprcom => '>=(char,char)', oprnegate => '>(char,char)', oprcode => 'charle',
- oprrest => 'scalarlesel', oprjoin => 'scalarlejoinsel' },
- { oid => '633', descr => 'greater than',
- oprname => '>', oprleft => 'char', oprright => 'char', oprresult => 'bool',
- oprcom => '<(char,char)', oprnegate => '<=(char,char)', oprcode => 'chargt',
- oprrest => 'scalargtsel', oprjoin => 'scalargtjoinsel' },
- { oid => '634', descr => 'greater than or equal',
- oprname => '>=', oprleft => 'char', oprright => 'char', oprresult => 'bool',
- oprcom => '<=(char,char)', oprnegate => '<(char,char)', oprcode => 'charge',
- oprrest => 'scalargesel', oprjoin => 'scalargejoinsel' },
- { oid => '639', oid_symbol => 'OID_NAME_REGEXEQ_OP',
- descr => 'matches regular expression, case-sensitive',
- oprname => '~', oprleft => 'name', oprright => 'text', oprresult => 'bool',
- oprnegate => '!~(name,text)', oprcode => 'nameregexeq',
- oprrest => 'regexeqsel', oprjoin => 'regexeqjoinsel' },
- { oid => '640', descr => 'does not match regular expression, case-sensitive',
- oprname => '!~', oprleft => 'name', oprright => 'text', oprresult => 'bool',
- oprnegate => '~(name,text)', oprcode => 'nameregexne',
- oprrest => 'regexnesel', oprjoin => 'regexnejoinsel' },
- { oid => '641', oid_symbol => 'OID_TEXT_REGEXEQ_OP',
- descr => 'matches regular expression, case-sensitive',
- oprname => '~', oprleft => 'text', oprright => 'text', oprresult => 'bool',
- oprnegate => '!~(text,text)', oprcode => 'textregexeq',
- oprrest => 'regexeqsel', oprjoin => 'regexeqjoinsel' },
- { oid => '642', descr => 'does not match regular expression, case-sensitive',
- oprname => '!~', oprleft => 'text', oprright => 'text', oprresult => 'bool',
- oprnegate => '~(text,text)', oprcode => 'textregexne',
- oprrest => 'regexnesel', oprjoin => 'regexnejoinsel' },
- { oid => '643', descr => 'not equal',
- oprname => '<>', oprleft => 'name', oprright => 'name', oprresult => 'bool',
- oprcom => '<>(name,name)', oprnegate => '=(name,name)', oprcode => 'namene',
- oprrest => 'neqsel', oprjoin => 'neqjoinsel' },
- { oid => '654', descr => 'concatenate',
- oprname => '||', oprleft => 'text', oprright => 'text', oprresult => 'text',
- oprcode => 'textcat' },
- { oid => '660', descr => 'less than',
- oprname => '<', oprleft => 'name', oprright => 'name', oprresult => 'bool',
- oprcom => '>(name,name)', oprnegate => '>=(name,name)', oprcode => 'namelt',
- oprrest => 'scalarltsel', oprjoin => 'scalarltjoinsel' },
- { oid => '661', descr => 'less than or equal',
- oprname => '<=', oprleft => 'name', oprright => 'name', oprresult => 'bool',
- oprcom => '>=(name,name)', oprnegate => '>(name,name)', oprcode => 'namele',
- oprrest => 'scalarlesel', oprjoin => 'scalarlejoinsel' },
- { oid => '662', descr => 'greater than',
- oprname => '>', oprleft => 'name', oprright => 'name', oprresult => 'bool',
- oprcom => '<(name,name)', oprnegate => '<=(name,name)', oprcode => 'namegt',
- oprrest => 'scalargtsel', oprjoin => 'scalargtjoinsel' },
- { oid => '663', descr => 'greater than or equal',
- oprname => '>=', oprleft => 'name', oprright => 'name', oprresult => 'bool',
- oprcom => '<=(name,name)', oprnegate => '<(name,name)', oprcode => 'namege',
- oprrest => 'scalargesel', oprjoin => 'scalargejoinsel' },
- { oid => '664', oid_symbol => 'TextLessOperator', descr => 'less than',
- oprname => '<', oprleft => 'text', oprright => 'text', oprresult => 'bool',
- oprcom => '>(text,text)', oprnegate => '>=(text,text)', oprcode => 'text_lt',
- oprrest => 'scalarltsel', oprjoin => 'scalarltjoinsel' },
- { oid => '665', descr => 'less than or equal',
- oprname => '<=', oprleft => 'text', oprright => 'text', oprresult => 'bool',
- oprcom => '>=(text,text)', oprnegate => '>(text,text)', oprcode => 'text_le',
- oprrest => 'scalarlesel', oprjoin => 'scalarlejoinsel' },
- { oid => '666', descr => 'greater than',
- oprname => '>', oprleft => 'text', oprright => 'text', oprresult => 'bool',
- oprcom => '<(text,text)', oprnegate => '<=(text,text)', oprcode => 'text_gt',
- oprrest => 'scalargtsel', oprjoin => 'scalargtjoinsel' },
- { oid => '667', oid_symbol => 'TextGreaterEqualOperator',
- descr => 'greater than or equal',
- oprname => '>=', oprleft => 'text', oprright => 'text', oprresult => 'bool',
- oprcom => '<=(text,text)', oprnegate => '<(text,text)', oprcode => 'text_ge',
- oprrest => 'scalargesel', oprjoin => 'scalargejoinsel' },
- { oid => '670', descr => 'equal',
- oprname => '=', oprcanmerge => 't', oprcanhash => 't', oprleft => 'float8',
- oprright => 'float8', oprresult => 'bool', oprcom => '=(float8,float8)',
- oprnegate => '<>(float8,float8)', oprcode => 'float8eq', oprrest => 'eqsel',
- oprjoin => 'eqjoinsel' },
- { oid => '671', descr => 'not equal',
- oprname => '<>', oprleft => 'float8', oprright => 'float8',
- oprresult => 'bool', oprcom => '<>(float8,float8)',
- oprnegate => '=(float8,float8)', oprcode => 'float8ne', oprrest => 'neqsel',
- oprjoin => 'neqjoinsel' },
- { oid => '672', oid_symbol => 'Float8LessOperator', descr => 'less than',
- oprname => '<', oprleft => 'float8', oprright => 'float8',
- oprresult => 'bool', oprcom => '>(float8,float8)',
- oprnegate => '>=(float8,float8)', oprcode => 'float8lt',
- oprrest => 'scalarltsel', oprjoin => 'scalarltjoinsel' },
- { oid => '673', descr => 'less than or equal',
- oprname => '<=', oprleft => 'float8', oprright => 'float8',
- oprresult => 'bool', oprcom => '>=(float8,float8)',
- oprnegate => '>(float8,float8)', oprcode => 'float8le',
- oprrest => 'scalarlesel', oprjoin => 'scalarlejoinsel' },
- { oid => '674', descr => 'greater than',
- oprname => '>', oprleft => 'float8', oprright => 'float8',
- oprresult => 'bool', oprcom => '<(float8,float8)',
- oprnegate => '<=(float8,float8)', oprcode => 'float8gt',
- oprrest => 'scalargtsel', oprjoin => 'scalargtjoinsel' },
- { oid => '675', descr => 'greater than or equal',
- oprname => '>=', oprleft => 'float8', oprright => 'float8',
- oprresult => 'bool', oprcom => '<=(float8,float8)',
- oprnegate => '<(float8,float8)', oprcode => 'float8ge',
- oprrest => 'scalargesel', oprjoin => 'scalargejoinsel' },
- { oid => '682', descr => 'absolute value',
- oprname => '@', oprkind => 'l', oprleft => '0', oprright => 'int2',
- oprresult => 'int2', oprcode => 'int2abs' },
- { oid => '684', descr => 'add',
- oprname => '+', oprleft => 'int8', oprright => 'int8', oprresult => 'int8',
- oprcom => '+(int8,int8)', oprcode => 'int8pl' },
- { oid => '685', descr => 'subtract',
- oprname => '-', oprleft => 'int8', oprright => 'int8', oprresult => 'int8',
- oprcode => 'int8mi' },
- { oid => '686', descr => 'multiply',
- oprname => '*', oprleft => 'int8', oprright => 'int8', oprresult => 'int8',
- oprcom => '*(int8,int8)', oprcode => 'int8mul' },
- { oid => '687', descr => 'divide',
- oprname => '/', oprleft => 'int8', oprright => 'int8', oprresult => 'int8',
- oprcode => 'int8div' },
- { oid => '688', descr => 'add',
- oprname => '+', oprleft => 'int8', oprright => 'int4', oprresult => 'int8',
- oprcom => '+(int4,int8)', oprcode => 'int84pl' },
- { oid => '689', descr => 'subtract',
- oprname => '-', oprleft => 'int8', oprright => 'int4', oprresult => 'int8',
- oprcode => 'int84mi' },
- { oid => '690', descr => 'multiply',
- oprname => '*', oprleft => 'int8', oprright => 'int4', oprresult => 'int8',
- oprcom => '*(int4,int8)', oprcode => 'int84mul' },
- { oid => '691', descr => 'divide',
- oprname => '/', oprleft => 'int8', oprright => 'int4', oprresult => 'int8',
- oprcode => 'int84div' },
- { oid => '692', descr => 'add',
- oprname => '+', oprleft => 'int4', oprright => 'int8', oprresult => 'int8',
- oprcom => '+(int8,int4)', oprcode => 'int48pl' },
- { oid => '693', descr => 'subtract',
- oprname => '-', oprleft => 'int4', oprright => 'int8', oprresult => 'int8',
- oprcode => 'int48mi' },
- { oid => '694', descr => 'multiply',
- oprname => '*', oprleft => 'int4', oprright => 'int8', oprresult => 'int8',
- oprcom => '*(int8,int4)', oprcode => 'int48mul' },
- { oid => '695', descr => 'divide',
- oprname => '/', oprleft => 'int4', oprright => 'int8', oprresult => 'int8',
- oprcode => 'int48div' },
- { oid => '818', descr => 'add',
- oprname => '+', oprleft => 'int8', oprright => 'int2', oprresult => 'int8',
- oprcom => '+(int2,int8)', oprcode => 'int82pl' },
- { oid => '819', descr => 'subtract',
- oprname => '-', oprleft => 'int8', oprright => 'int2', oprresult => 'int8',
- oprcode => 'int82mi' },
- { oid => '820', descr => 'multiply',
- oprname => '*', oprleft => 'int8', oprright => 'int2', oprresult => 'int8',
- oprcom => '*(int2,int8)', oprcode => 'int82mul' },
- { oid => '821', descr => 'divide',
- oprname => '/', oprleft => 'int8', oprright => 'int2', oprresult => 'int8',
- oprcode => 'int82div' },
- { oid => '822', descr => 'add',
- oprname => '+', oprleft => 'int2', oprright => 'int8', oprresult => 'int8',
- oprcom => '+(int8,int2)', oprcode => 'int28pl' },
- { oid => '823', descr => 'subtract',
- oprname => '-', oprleft => 'int2', oprright => 'int8', oprresult => 'int8',
- oprcode => 'int28mi' },
- { oid => '824', descr => 'multiply',
- oprname => '*', oprleft => 'int2', oprright => 'int8', oprresult => 'int8',
- oprcom => '*(int8,int2)', oprcode => 'int28mul' },
- { oid => '825', descr => 'divide',
- oprname => '/', oprleft => 'int2', oprright => 'int8', oprresult => 'int8',
- oprcode => 'int28div' },
- { oid => '706', descr => 'distance between',
- oprname => '<->', oprleft => 'box', oprright => 'box', oprresult => 'float8',
- oprcom => '<->(box,box)', oprcode => 'box_distance' },
- { oid => '707', descr => 'distance between',
- oprname => '<->', oprleft => 'path', oprright => 'path',
- oprresult => 'float8', oprcom => '<->(path,path)',
- oprcode => 'path_distance' },
- { oid => '708', descr => 'distance between',
- oprname => '<->', oprleft => 'line', oprright => 'line',
- oprresult => 'float8', oprcom => '<->(line,line)',
- oprcode => 'line_distance' },
- { oid => '709', descr => 'distance between',
- oprname => '<->', oprleft => 'lseg', oprright => 'lseg',
- oprresult => 'float8', oprcom => '<->(lseg,lseg)',
- oprcode => 'lseg_distance' },
- { oid => '712', descr => 'distance between',
- oprname => '<->', oprleft => 'polygon', oprright => 'polygon',
- oprresult => 'float8', oprcom => '<->(polygon,polygon)',
- oprcode => 'poly_distance' },
- { oid => '713', descr => 'not equal',
- oprname => '<>', oprleft => 'point', oprright => 'point', oprresult => 'bool',
- oprcom => '<>(point,point)', oprnegate => '~=(point,point)',
- oprcode => 'point_ne', oprrest => 'neqsel', oprjoin => 'neqjoinsel' },
- # add translation/rotation/scaling operators for geometric types. - thomas 97/05/10
- { oid => '731', descr => 'add points (translate)',
- oprname => '+', oprleft => 'point', oprright => 'point', oprresult => 'point',
- oprcom => '+(point,point)', oprcode => 'point_add' },
- { oid => '732', descr => 'subtract points (translate)',
- oprname => '-', oprleft => 'point', oprright => 'point', oprresult => 'point',
- oprcode => 'point_sub' },
- { oid => '733', descr => 'multiply points (scale/rotate)',
- oprname => '*', oprleft => 'point', oprright => 'point', oprresult => 'point',
- oprcom => '*(point,point)', oprcode => 'point_mul' },
- { oid => '734', descr => 'divide points (scale/rotate)',
- oprname => '/', oprleft => 'point', oprright => 'point', oprresult => 'point',
- oprcode => 'point_div' },
- { oid => '735', descr => 'concatenate',
- oprname => '+', oprleft => 'path', oprright => 'path', oprresult => 'path',
- oprcom => '+(path,path)', oprcode => 'path_add' },
- { oid => '736', descr => 'add (translate path)',
- oprname => '+', oprleft => 'path', oprright => 'point', oprresult => 'path',
- oprcode => 'path_add_pt' },
- { oid => '737', descr => 'subtract (translate path)',
- oprname => '-', oprleft => 'path', oprright => 'point', oprresult => 'path',
- oprcode => 'path_sub_pt' },
- { oid => '738', descr => 'multiply (rotate/scale path)',
- oprname => '*', oprleft => 'path', oprright => 'point', oprresult => 'path',
- oprcode => 'path_mul_pt' },
- { oid => '739', descr => 'divide (rotate/scale path)',
- oprname => '/', oprleft => 'path', oprright => 'point', oprresult => 'path',
- oprcode => 'path_div_pt' },
- { oid => '755', descr => 'contains',
- oprname => '@>', oprleft => 'path', oprright => 'point', oprresult => 'bool',
- oprcom => '<@(point,path)', oprcode => 'path_contain_pt' },
- { oid => '756', descr => 'is contained by',
- oprname => '<@', oprleft => 'point', oprright => 'polygon',
- oprresult => 'bool', oprcom => '@>(polygon,point)',
- oprcode => 'pt_contained_poly', oprrest => 'contsel',
- oprjoin => 'contjoinsel' },
- { oid => '757', descr => 'contains',
- oprname => '@>', oprleft => 'polygon', oprright => 'point',
- oprresult => 'bool', oprcom => '<@(point,polygon)',
- oprcode => 'poly_contain_pt', oprrest => 'contsel',
- oprjoin => 'contjoinsel' },
- { oid => '758', descr => 'is contained by',
- oprname => '<@', oprleft => 'point', oprright => 'circle',
- oprresult => 'bool', oprcom => '@>(circle,point)',
- oprcode => 'pt_contained_circle', oprrest => 'contsel',
- oprjoin => 'contjoinsel' },
- { oid => '759', descr => 'contains',
- oprname => '@>', oprleft => 'circle', oprright => 'point',
- oprresult => 'bool', oprcom => '<@(point,circle)',
- oprcode => 'circle_contain_pt', oprrest => 'contsel',
- oprjoin => 'contjoinsel' },
- { oid => '773', descr => 'absolute value',
- oprname => '@', oprkind => 'l', oprleft => '0', oprright => 'int4',
- oprresult => 'int4', oprcode => 'int4abs' },
- # additional operators for geometric types - thomas 1997-07-09
- { oid => '792', descr => 'equal',
- oprname => '=', oprleft => 'path', oprright => 'path', oprresult => 'bool',
- oprcom => '=(path,path)', oprcode => 'path_n_eq', oprrest => 'eqsel',
- oprjoin => 'eqjoinsel' },
- { oid => '793', descr => 'less than',
- oprname => '<', oprleft => 'path', oprright => 'path', oprresult => 'bool',
- oprcom => '>(path,path)', oprcode => 'path_n_lt' },
- { oid => '794', descr => 'greater than',
- oprname => '>', oprleft => 'path', oprright => 'path', oprresult => 'bool',
- oprcom => '<(path,path)', oprcode => 'path_n_gt' },
- { oid => '795', descr => 'less than or equal',
- oprname => '<=', oprleft => 'path', oprright => 'path', oprresult => 'bool',
- oprcom => '>=(path,path)', oprcode => 'path_n_le' },
- { oid => '796', descr => 'greater than or equal',
- oprname => '>=', oprleft => 'path', oprright => 'path', oprresult => 'bool',
- oprcom => '<=(path,path)', oprcode => 'path_n_ge' },
- { oid => '797', descr => 'number of points',
- oprname => '#', oprkind => 'l', oprleft => '0', oprright => 'path',
- oprresult => 'int4', oprcode => 'path_npoints' },
- { oid => '798', descr => 'intersect',
- oprname => '?#', oprleft => 'path', oprright => 'path', oprresult => 'bool',
- oprcode => 'path_inter' },
- { oid => '799', descr => 'sum of path segment lengths',
- oprname => '@-@', oprkind => 'l', oprleft => '0', oprright => 'path',
- oprresult => 'float8', oprcode => 'path_length' },
- { oid => '800', descr => 'is above (allows touching)',
- oprname => '>^', oprleft => 'box', oprright => 'box', oprresult => 'bool',
- oprcode => 'box_above_eq', oprrest => 'positionsel',
- oprjoin => 'positionjoinsel' },
- { oid => '801', descr => 'is below (allows touching)',
- oprname => '<^', oprleft => 'box', oprright => 'box', oprresult => 'bool',
- oprcode => 'box_below_eq', oprrest => 'positionsel',
- oprjoin => 'positionjoinsel' },
- { oid => '802', descr => 'deprecated, use && instead',
- oprname => '?#', oprleft => 'box', oprright => 'box', oprresult => 'bool',
- oprcode => 'box_overlap', oprrest => 'areasel', oprjoin => 'areajoinsel' },
- { oid => '803', descr => 'box intersection',
- oprname => '#', oprleft => 'box', oprright => 'box', oprresult => 'box',
- oprcode => 'box_intersect' },
- { oid => '804', descr => 'add point to box (translate)',
- oprname => '+', oprleft => 'box', oprright => 'point', oprresult => 'box',
- oprcode => 'box_add' },
- { oid => '805', descr => 'subtract point from box (translate)',
- oprname => '-', oprleft => 'box', oprright => 'point', oprresult => 'box',
- oprcode => 'box_sub' },
- { oid => '806', descr => 'multiply box by point (scale)',
- oprname => '*', oprleft => 'box', oprright => 'point', oprresult => 'box',
- oprcode => 'box_mul' },
- { oid => '807', descr => 'divide box by point (scale)',
- oprname => '/', oprleft => 'box', oprright => 'point', oprresult => 'box',
- oprcode => 'box_div' },
- { oid => '808', descr => 'horizontally aligned',
- oprname => '?-', oprleft => 'point', oprright => 'point', oprresult => 'bool',
- oprcom => '?-(point,point)', oprcode => 'point_horiz' },
- { oid => '809', descr => 'vertically aligned',
- oprname => '?|', oprleft => 'point', oprright => 'point', oprresult => 'bool',
- oprcom => '?|(point,point)', oprcode => 'point_vert' },
- { oid => '843', descr => 'multiply',
- oprname => '*', oprleft => 'money', oprright => 'float4',
- oprresult => 'money', oprcom => '*(float4,money)',
- oprcode => 'cash_mul_flt4' },
- { oid => '844', descr => 'divide',
- oprname => '/', oprleft => 'money', oprright => 'float4',
- oprresult => 'money', oprcode => 'cash_div_flt4' },
- { oid => '845', descr => 'multiply',
- oprname => '*', oprleft => 'float4', oprright => 'money',
- oprresult => 'money', oprcom => '*(money,float4)',
- oprcode => 'flt4_mul_cash' },
- { oid => '900', descr => 'equal',
- oprname => '=', oprcanmerge => 't', oprleft => 'money', oprright => 'money',
- oprresult => 'bool', oprcom => '=(money,money)',
- oprnegate => '<>(money,money)', oprcode => 'cash_eq', oprrest => 'eqsel',
- oprjoin => 'eqjoinsel' },
- { oid => '901', descr => 'not equal',
- oprname => '<>', oprleft => 'money', oprright => 'money', oprresult => 'bool',
- oprcom => '<>(money,money)', oprnegate => '=(money,money)',
- oprcode => 'cash_ne', oprrest => 'neqsel', oprjoin => 'neqjoinsel' },
- { oid => '902', descr => 'less than',
- oprname => '<', oprleft => 'money', oprright => 'money', oprresult => 'bool',
- oprcom => '>(money,money)', oprnegate => '>=(money,money)',
- oprcode => 'cash_lt', oprrest => 'scalarltsel',
- oprjoin => 'scalarltjoinsel' },
- { oid => '903', descr => 'greater than',
- oprname => '>', oprleft => 'money', oprright => 'money', oprresult => 'bool',
- oprcom => '<(money,money)', oprnegate => '<=(money,money)',
- oprcode => 'cash_gt', oprrest => 'scalargtsel',
- oprjoin => 'scalargtjoinsel' },
- { oid => '904', descr => 'less than or equal',
- oprname => '<=', oprleft => 'money', oprright => 'money', oprresult => 'bool',
- oprcom => '>=(money,money)', oprnegate => '>(money,money)',
- oprcode => 'cash_le', oprrest => 'scalarlesel',
- oprjoin => 'scalarlejoinsel' },
- { oid => '905', descr => 'greater than or equal',
- oprname => '>=', oprleft => 'money', oprright => 'money', oprresult => 'bool',
- oprcom => '<=(money,money)', oprnegate => '<(money,money)',
- oprcode => 'cash_ge', oprrest => 'scalargesel',
- oprjoin => 'scalargejoinsel' },
- { oid => '906', descr => 'add',
- oprname => '+', oprleft => 'money', oprright => 'money', oprresult => 'money',
- oprcom => '+(money,money)', oprcode => 'cash_pl' },
- { oid => '907', descr => 'subtract',
- oprname => '-', oprleft => 'money', oprright => 'money', oprresult => 'money',
- oprcode => 'cash_mi' },
- { oid => '908', descr => 'multiply',
- oprname => '*', oprleft => 'money', oprright => 'float8',
- oprresult => 'money', oprcom => '*(float8,money)',
- oprcode => 'cash_mul_flt8' },
- { oid => '909', descr => 'divide',
- oprname => '/', oprleft => 'money', oprright => 'float8',
- oprresult => 'money', oprcode => 'cash_div_flt8' },
- { oid => '3346', descr => 'multiply',
- oprname => '*', oprleft => 'money', oprright => 'int8', oprresult => 'money',
- oprcom => '*(int8,money)', oprcode => 'cash_mul_int8' },
- { oid => '3347', descr => 'divide',
- oprname => '/', oprleft => 'money', oprright => 'int8', oprresult => 'money',
- oprcode => 'cash_div_int8' },
- { oid => '912', descr => 'multiply',
- oprname => '*', oprleft => 'money', oprright => 'int4', oprresult => 'money',
- oprcom => '*(int4,money)', oprcode => 'cash_mul_int4' },
- { oid => '913', descr => 'divide',
- oprname => '/', oprleft => 'money', oprright => 'int4', oprresult => 'money',
- oprcode => 'cash_div_int4' },
- { oid => '914', descr => 'multiply',
- oprname => '*', oprleft => 'money', oprright => 'int2', oprresult => 'money',
- oprcom => '*(int2,money)', oprcode => 'cash_mul_int2' },
- { oid => '915', descr => 'divide',
- oprname => '/', oprleft => 'money', oprright => 'int2', oprresult => 'money',
- oprcode => 'cash_div_int2' },
- { oid => '916', descr => 'multiply',
- oprname => '*', oprleft => 'float8', oprright => 'money',
- oprresult => 'money', oprcom => '*(money,float8)',
- oprcode => 'flt8_mul_cash' },
- { oid => '3349', descr => 'multiply',
- oprname => '*', oprleft => 'int8', oprright => 'money', oprresult => 'money',
- oprcom => '*(money,int8)', oprcode => 'int8_mul_cash' },
- { oid => '917', descr => 'multiply',
- oprname => '*', oprleft => 'int4', oprright => 'money', oprresult => 'money',
- oprcom => '*(money,int4)', oprcode => 'int4_mul_cash' },
- { oid => '918', descr => 'multiply',
- oprname => '*', oprleft => 'int2', oprright => 'money', oprresult => 'money',
- oprcom => '*(money,int2)', oprcode => 'int2_mul_cash' },
- { oid => '3825', descr => 'divide',
- oprname => '/', oprleft => 'money', oprright => 'money',
- oprresult => 'float8', oprcode => 'cash_div_cash' },
- { oid => '965', descr => 'exponentiation',
- oprname => '^', oprleft => 'float8', oprright => 'float8',
- oprresult => 'float8', oprcode => 'dpow' },
- { oid => '966', descr => 'add/update ACL item',
- oprname => '+', oprleft => '_aclitem', oprright => 'aclitem',
- oprresult => '_aclitem', oprcode => 'aclinsert' },
- { oid => '967', descr => 'remove ACL item',
- oprname => '-', oprleft => '_aclitem', oprright => 'aclitem',
- oprresult => '_aclitem', oprcode => 'aclremove' },
- { oid => '968', descr => 'contains',
- oprname => '@>', oprleft => '_aclitem', oprright => 'aclitem',
- oprresult => 'bool', oprcode => 'aclcontains' },
- { oid => '974', descr => 'equal',
- oprname => '=', oprcanhash => 't', oprleft => 'aclitem',
- oprright => 'aclitem', oprresult => 'bool', oprcom => '=(aclitem,aclitem)',
- oprcode => 'aclitemeq', oprrest => 'eqsel', oprjoin => 'eqjoinsel' },
- # additional geometric operators - thomas 1997-07-09
- { oid => '969', descr => 'center of',
- oprname => '@@', oprkind => 'l', oprleft => '0', oprright => 'lseg',
- oprresult => 'point', oprcode => 'lseg_center' },
- { oid => '971', descr => 'center of',
- oprname => '@@', oprkind => 'l', oprleft => '0', oprright => 'polygon',
- oprresult => 'point', oprcode => 'poly_center' },
- { oid => '1054', oid_symbol => 'BpcharEqualOperator', descr => 'equal',
- oprname => '=', oprcanmerge => 't', oprcanhash => 't', oprleft => 'bpchar',
- oprright => 'bpchar', oprresult => 'bool', oprcom => '=(bpchar,bpchar)',
- oprnegate => '<>(bpchar,bpchar)', oprcode => 'bpchareq', oprrest => 'eqsel',
- oprjoin => 'eqjoinsel' },
- { oid => '1055', oid_symbol => 'OID_BPCHAR_REGEXEQ_OP',
- descr => 'matches regular expression, case-sensitive',
- oprname => '~', oprleft => 'bpchar', oprright => 'text', oprresult => 'bool',
- oprnegate => '!~(bpchar,text)', oprcode => 'bpcharregexeq',
- oprrest => 'regexeqsel', oprjoin => 'regexeqjoinsel' },
- { oid => '1056', descr => 'does not match regular expression, case-sensitive',
- oprname => '!~', oprleft => 'bpchar', oprright => 'text', oprresult => 'bool',
- oprnegate => '~(bpchar,text)', oprcode => 'bpcharregexne',
- oprrest => 'regexnesel', oprjoin => 'regexnejoinsel' },
- { oid => '1057', descr => 'not equal',
- oprname => '<>', oprleft => 'bpchar', oprright => 'bpchar',
- oprresult => 'bool', oprcom => '<>(bpchar,bpchar)',
- oprnegate => '=(bpchar,bpchar)', oprcode => 'bpcharne', oprrest => 'neqsel',
- oprjoin => 'neqjoinsel' },
- { oid => '1058', oid_symbol => 'BpcharLessOperator', descr => 'less than',
- oprname => '<', oprleft => 'bpchar', oprright => 'bpchar',
- oprresult => 'bool', oprcom => '>(bpchar,bpchar)',
- oprnegate => '>=(bpchar,bpchar)', oprcode => 'bpcharlt',
- oprrest => 'scalarltsel', oprjoin => 'scalarltjoinsel' },
- { oid => '1059', descr => 'less than or equal',
- oprname => '<=', oprleft => 'bpchar', oprright => 'bpchar',
- oprresult => 'bool', oprcom => '>=(bpchar,bpchar)',
- oprnegate => '>(bpchar,bpchar)', oprcode => 'bpcharle',
- oprrest => 'scalarlesel', oprjoin => 'scalarlejoinsel' },
- { oid => '1060', descr => 'greater than',
- oprname => '>', oprleft => 'bpchar', oprright => 'bpchar',
- oprresult => 'bool', oprcom => '<(bpchar,bpchar)',
- oprnegate => '<=(bpchar,bpchar)', oprcode => 'bpchargt',
- oprrest => 'scalargtsel', oprjoin => 'scalargtjoinsel' },
- { oid => '1061', oid_symbol => 'BpcharGreaterEqualOperator',
- descr => 'greater than or equal',
- oprname => '>=', oprleft => 'bpchar', oprright => 'bpchar',
- oprresult => 'bool', oprcom => '<=(bpchar,bpchar)',
- oprnegate => '<(bpchar,bpchar)', oprcode => 'bpcharge',
- oprrest => 'scalargesel', oprjoin => 'scalargejoinsel' },
- # generic array comparison operators
- { oid => '1070', oid_symbol => 'ARRAY_EQ_OP', descr => 'equal',
- oprname => '=', oprcanmerge => 't', oprcanhash => 't', oprleft => 'anyarray',
- oprright => 'anyarray', oprresult => 'bool', oprcom => '=(anyarray,anyarray)',
- oprnegate => '<>(anyarray,anyarray)', oprcode => 'array_eq',
- oprrest => 'eqsel', oprjoin => 'eqjoinsel' },
- { oid => '1071', descr => 'not equal',
- oprname => '<>', oprleft => 'anyarray', oprright => 'anyarray',
- oprresult => 'bool', oprcom => '<>(anyarray,anyarray)',
- oprnegate => '=(anyarray,anyarray)', oprcode => 'array_ne',
- oprrest => 'neqsel', oprjoin => 'neqjoinsel' },
- { oid => '1072', oid_symbol => 'ARRAY_LT_OP', descr => 'less than',
- oprname => '<', oprleft => 'anyarray', oprright => 'anyarray',
- oprresult => 'bool', oprcom => '>(anyarray,anyarray)',
- oprnegate => '>=(anyarray,anyarray)', oprcode => 'array_lt',
- oprrest => 'scalarltsel', oprjoin => 'scalarltjoinsel' },
- { oid => '1073', oid_symbol => 'ARRAY_GT_OP', descr => 'greater than',
- oprname => '>', oprleft => 'anyarray', oprright => 'anyarray',
- oprresult => 'bool', oprcom => '<(anyarray,anyarray)',
- oprnegate => '<=(anyarray,anyarray)', oprcode => 'array_gt',
- oprrest => 'scalargtsel', oprjoin => 'scalargtjoinsel' },
- { oid => '1074', descr => 'less than or equal',
- oprname => '<=', oprleft => 'anyarray', oprright => 'anyarray',
- oprresult => 'bool', oprcom => '>=(anyarray,anyarray)',
- oprnegate => '>(anyarray,anyarray)', oprcode => 'array_le',
- oprrest => 'scalarlesel', oprjoin => 'scalarlejoinsel' },
- { oid => '1075', descr => 'greater than or equal',
- oprname => '>=', oprleft => 'anyarray', oprright => 'anyarray',
- oprresult => 'bool', oprcom => '<=(anyarray,anyarray)',
- oprnegate => '<(anyarray,anyarray)', oprcode => 'array_ge',
- oprrest => 'scalargesel', oprjoin => 'scalargejoinsel' },
- # date operators
- { oid => '1076', descr => 'add',
- oprname => '+', oprleft => 'date', oprright => 'interval',
- oprresult => 'timestamp', oprcom => '+(interval,date)',
- oprcode => 'date_pl_interval' },
- { oid => '1077', descr => 'subtract',
- oprname => '-', oprleft => 'date', oprright => 'interval',
- oprresult => 'timestamp', oprcode => 'date_mi_interval' },
- { oid => '1093', descr => 'equal',
- oprname => '=', oprcanmerge => 't', oprcanhash => 't', oprleft => 'date',
- oprright => 'date', oprresult => 'bool', oprcom => '=(date,date)',
- oprnegate => '<>(date,date)', oprcode => 'date_eq', oprrest => 'eqsel',
- oprjoin => 'eqjoinsel' },
- { oid => '1094', descr => 'not equal',
- oprname => '<>', oprleft => 'date', oprright => 'date', oprresult => 'bool',
- oprcom => '<>(date,date)', oprnegate => '=(date,date)', oprcode => 'date_ne',
- oprrest => 'neqsel', oprjoin => 'neqjoinsel' },
- { oid => '1095', descr => 'less than',
- oprname => '<', oprleft => 'date', oprright => 'date', oprresult => 'bool',
- oprcom => '>(date,date)', oprnegate => '>=(date,date)', oprcode => 'date_lt',
- oprrest => 'scalarltsel', oprjoin => 'scalarltjoinsel' },
- { oid => '1096', descr => 'less than or equal',
- oprname => '<=', oprleft => 'date', oprright => 'date', oprresult => 'bool',
- oprcom => '>=(date,date)', oprnegate => '>(date,date)', oprcode => 'date_le',
- oprrest => 'scalarlesel', oprjoin => 'scalarlejoinsel' },
- { oid => '1097', descr => 'greater than',
- oprname => '>', oprleft => 'date', oprright => 'date', oprresult => 'bool',
- oprcom => '<(date,date)', oprnegate => '<=(date,date)', oprcode => 'date_gt',
- oprrest => 'scalargtsel', oprjoin => 'scalargtjoinsel' },
- { oid => '1098', descr => 'greater than or equal',
- oprname => '>=', oprleft => 'date', oprright => 'date', oprresult => 'bool',
- oprcom => '<=(date,date)', oprnegate => '<(date,date)', oprcode => 'date_ge',
- oprrest => 'scalargesel', oprjoin => 'scalargejoinsel' },
- { oid => '1099', descr => 'subtract',
- oprname => '-', oprleft => 'date', oprright => 'date', oprresult => 'int4',
- oprcode => 'date_mi' },
- { oid => '1100', descr => 'add',
- oprname => '+', oprleft => 'date', oprright => 'int4', oprresult => 'date',
- oprcom => '+(int4,date)', oprcode => 'date_pli' },
- { oid => '1101', descr => 'subtract',
- oprname => '-', oprleft => 'date', oprright => 'int4', oprresult => 'date',
- oprcode => 'date_mii' },
- # time operators
- { oid => '1108', descr => 'equal',
- oprname => '=', oprcanmerge => 't', oprcanhash => 't', oprleft => 'time',
- oprright => 'time', oprresult => 'bool', oprcom => '=(time,time)',
- oprnegate => '<>(time,time)', oprcode => 'time_eq', oprrest => 'eqsel',
- oprjoin => 'eqjoinsel' },
- { oid => '1109', descr => 'not equal',
- oprname => '<>', oprleft => 'time', oprright => 'time', oprresult => 'bool',
- oprcom => '<>(time,time)', oprnegate => '=(time,time)', oprcode => 'time_ne',
- oprrest => 'neqsel', oprjoin => 'neqjoinsel' },
- { oid => '1110', descr => 'less than',
- oprname => '<', oprleft => 'time', oprright => 'time', oprresult => 'bool',
- oprcom => '>(time,time)', oprnegate => '>=(time,time)', oprcode => 'time_lt',
- oprrest => 'scalarltsel', oprjoin => 'scalarltjoinsel' },
- { oid => '1111', descr => 'less than or equal',
- oprname => '<=', oprleft => 'time', oprright => 'time', oprresult => 'bool',
- oprcom => '>=(time,time)', oprnegate => '>(time,time)', oprcode => 'time_le',
- oprrest => 'scalarlesel', oprjoin => 'scalarlejoinsel' },
- { oid => '1112', descr => 'greater than',
- oprname => '>', oprleft => 'time', oprright => 'time', oprresult => 'bool',
- oprcom => '<(time,time)', oprnegate => '<=(time,time)', oprcode => 'time_gt',
- oprrest => 'scalargtsel', oprjoin => 'scalargtjoinsel' },
- { oid => '1113', descr => 'greater than or equal',
- oprname => '>=', oprleft => 'time', oprright => 'time', oprresult => 'bool',
- oprcom => '<=(time,time)', oprnegate => '<(time,time)', oprcode => 'time_ge',
- oprrest => 'scalargesel', oprjoin => 'scalargejoinsel' },
- # timetz operators
- { oid => '1550', descr => 'equal',
- oprname => '=', oprcanmerge => 't', oprcanhash => 't', oprleft => 'timetz',
- oprright => 'timetz', oprresult => 'bool', oprcom => '=(timetz,timetz)',
- oprnegate => '<>(timetz,timetz)', oprcode => 'timetz_eq', oprrest => 'eqsel',
- oprjoin => 'eqjoinsel' },
- { oid => '1551', descr => 'not equal',
- oprname => '<>', oprleft => 'timetz', oprright => 'timetz',
- oprresult => 'bool', oprcom => '<>(timetz,timetz)',
- oprnegate => '=(timetz,timetz)', oprcode => 'timetz_ne', oprrest => 'neqsel',
- oprjoin => 'neqjoinsel' },
- { oid => '1552', descr => 'less than',
- oprname => '<', oprleft => 'timetz', oprright => 'timetz',
- oprresult => 'bool', oprcom => '>(timetz,timetz)',
- oprnegate => '>=(timetz,timetz)', oprcode => 'timetz_lt',
- oprrest => 'scalarltsel', oprjoin => 'scalarltjoinsel' },
- { oid => '1553', descr => 'less than or equal',
- oprname => '<=', oprleft => 'timetz', oprright => 'timetz',
- oprresult => 'bool', oprcom => '>=(timetz,timetz)',
- oprnegate => '>(timetz,timetz)', oprcode => 'timetz_le',
- oprrest => 'scalarlesel', oprjoin => 'scalarlejoinsel' },
- { oid => '1554', descr => 'greater than',
- oprname => '>', oprleft => 'timetz', oprright => 'timetz',
- oprresult => 'bool', oprcom => '<(timetz,timetz)',
- oprnegate => '<=(timetz,timetz)', oprcode => 'timetz_gt',
- oprrest => 'scalargtsel', oprjoin => 'scalargtjoinsel' },
- { oid => '1555', descr => 'greater than or equal',
- oprname => '>=', oprleft => 'timetz', oprright => 'timetz',
- oprresult => 'bool', oprcom => '<=(timetz,timetz)',
- oprnegate => '<(timetz,timetz)', oprcode => 'timetz_ge',
- oprrest => 'scalargesel', oprjoin => 'scalargejoinsel' },
- # float48 operators
- { oid => '1116', descr => 'add',
- oprname => '+', oprleft => 'float4', oprright => 'float8',
- oprresult => 'float8', oprcom => '+(float8,float4)', oprcode => 'float48pl' },
- { oid => '1117', descr => 'subtract',
- oprname => '-', oprleft => 'float4', oprright => 'float8',
- oprresult => 'float8', oprcode => 'float48mi' },
- { oid => '1118', descr => 'divide',
- oprname => '/', oprleft => 'float4', oprright => 'float8',
- oprresult => 'float8', oprcode => 'float48div' },
- { oid => '1119', descr => 'multiply',
- oprname => '*', oprleft => 'float4', oprright => 'float8',
- oprresult => 'float8', oprcom => '*(float8,float4)',
- oprcode => 'float48mul' },
- { oid => '1120', descr => 'equal',
- oprname => '=', oprcanmerge => 't', oprcanhash => 't', oprleft => 'float4',
- oprright => 'float8', oprresult => 'bool', oprcom => '=(float8,float4)',
- oprnegate => '<>(float4,float8)', oprcode => 'float48eq', oprrest => 'eqsel',
- oprjoin => 'eqjoinsel' },
- { oid => '1121', descr => 'not equal',
- oprname => '<>', oprleft => 'float4', oprright => 'float8',
- oprresult => 'bool', oprcom => '<>(float8,float4)',
- oprnegate => '=(float4,float8)', oprcode => 'float48ne', oprrest => 'neqsel',
- oprjoin => 'neqjoinsel' },
- { oid => '1122', descr => 'less than',
- oprname => '<', oprleft => 'float4', oprright => 'float8',
- oprresult => 'bool', oprcom => '>(float8,float4)',
- oprnegate => '>=(float4,float8)', oprcode => 'float48lt',
- oprrest => 'scalarltsel', oprjoin => 'scalarltjoinsel' },
- { oid => '1123', descr => 'greater than',
- oprname => '>', oprleft => 'float4', oprright => 'float8',
- oprresult => 'bool', oprcom => '<(float8,float4)',
- oprnegate => '<=(float4,float8)', oprcode => 'float48gt',
- oprrest => 'scalargtsel', oprjoin => 'scalargtjoinsel' },
- { oid => '1124', descr => 'less than or equal',
- oprname => '<=', oprleft => 'float4', oprright => 'float8',
- oprresult => 'bool', oprcom => '>=(float8,float4)',
- oprnegate => '>(float4,float8)', oprcode => 'float48le',
- oprrest => 'scalarlesel', oprjoin => 'scalarlejoinsel' },
- { oid => '1125', descr => 'greater than or equal',
- oprname => '>=', oprleft => 'float4', oprright => 'float8',
- oprresult => 'bool', oprcom => '<=(float8,float4)',
- oprnegate => '<(float4,float8)', oprcode => 'float48ge',
- oprrest => 'scalargesel', oprjoin => 'scalargejoinsel' },
- # float84 operators
- { oid => '1126', descr => 'add',
- oprname => '+', oprleft => 'float8', oprright => 'float4',
- oprresult => 'float8', oprcom => '+(float4,float8)', oprcode => 'float84pl' },
- { oid => '1127', descr => 'subtract',
- oprname => '-', oprleft => 'float8', oprright => 'float4',
- oprresult => 'float8', oprcode => 'float84mi' },
- { oid => '1128', descr => 'divide',
- oprname => '/', oprleft => 'float8', oprright => 'float4',
- oprresult => 'float8', oprcode => 'float84div' },
- { oid => '1129', descr => 'multiply',
- oprname => '*', oprleft => 'float8', oprright => 'float4',
- oprresult => 'float8', oprcom => '*(float4,float8)',
- oprcode => 'float84mul' },
- { oid => '1130', descr => 'equal',
- oprname => '=', oprcanmerge => 't', oprcanhash => 't', oprleft => 'float8',
- oprright => 'float4', oprresult => 'bool', oprcom => '=(float4,float8)',
- oprnegate => '<>(float8,float4)', oprcode => 'float84eq', oprrest => 'eqsel',
- oprjoin => 'eqjoinsel' },
- { oid => '1131', descr => 'not equal',
- oprname => '<>', oprleft => 'float8', oprright => 'float4',
- oprresult => 'bool', oprcom => '<>(float4,float8)',
- oprnegate => '=(float8,float4)', oprcode => 'float84ne', oprrest => 'neqsel',
- oprjoin => 'neqjoinsel' },
- { oid => '1132', descr => 'less than',
- oprname => '<', oprleft => 'float8', oprright => 'float4',
- oprresult => 'bool', oprcom => '>(float4,float8)',
- oprnegate => '>=(float8,float4)', oprcode => 'float84lt',
- oprrest => 'scalarltsel', oprjoin => 'scalarltjoinsel' },
- { oid => '1133', descr => 'greater than',
- oprname => '>', oprleft => 'float8', oprright => 'float4',
- oprresult => 'bool', oprcom => '<(float4,float8)',
- oprnegate => '<=(float8,float4)', oprcode => 'float84gt',
- oprrest => 'scalargtsel', oprjoin => 'scalargtjoinsel' },
- { oid => '1134', descr => 'less than or equal',
- oprname => '<=', oprleft => 'float8', oprright => 'float4',
- oprresult => 'bool', oprcom => '>=(float4,float8)',
- oprnegate => '>(float8,float4)', oprcode => 'float84le',
- oprrest => 'scalarlesel', oprjoin => 'scalarlejoinsel' },
- { oid => '1135', descr => 'greater than or equal',
- oprname => '>=', oprleft => 'float8', oprright => 'float4',
- oprresult => 'bool', oprcom => '<=(float4,float8)',
- oprnegate => '<(float8,float4)', oprcode => 'float84ge',
- oprrest => 'scalargesel', oprjoin => 'scalargejoinsel' },
- # LIKE hacks by Keith Parks.
- { oid => '1207', oid_symbol => 'OID_NAME_LIKE_OP',
- descr => 'matches LIKE expression',
- oprname => '~~', oprleft => 'name', oprright => 'text', oprresult => 'bool',
- oprnegate => '!~~(name,text)', oprcode => 'namelike', oprrest => 'likesel',
- oprjoin => 'likejoinsel' },
- { oid => '1208', descr => 'does not match LIKE expression',
- oprname => '!~~', oprleft => 'name', oprright => 'text', oprresult => 'bool',
- oprnegate => '~~(name,text)', oprcode => 'namenlike', oprrest => 'nlikesel',
- oprjoin => 'nlikejoinsel' },
- { oid => '1209', oid_symbol => 'OID_TEXT_LIKE_OP',
- descr => 'matches LIKE expression',
- oprname => '~~', oprleft => 'text', oprright => 'text', oprresult => 'bool',
- oprnegate => '!~~(text,text)', oprcode => 'textlike', oprrest => 'likesel',
- oprjoin => 'likejoinsel' },
- { oid => '1210', descr => 'does not match LIKE expression',
- oprname => '!~~', oprleft => 'text', oprright => 'text', oprresult => 'bool',
- oprnegate => '~~(text,text)', oprcode => 'textnlike', oprrest => 'nlikesel',
- oprjoin => 'nlikejoinsel' },
- { oid => '1211', oid_symbol => 'OID_BPCHAR_LIKE_OP',
- descr => 'matches LIKE expression',
- oprname => '~~', oprleft => 'bpchar', oprright => 'text', oprresult => 'bool',
- oprnegate => '!~~(bpchar,text)', oprcode => 'bpcharlike',
- oprrest => 'likesel', oprjoin => 'likejoinsel' },
- { oid => '1212', descr => 'does not match LIKE expression',
- oprname => '!~~', oprleft => 'bpchar', oprright => 'text',
- oprresult => 'bool', oprnegate => '~~(bpchar,text)', oprcode => 'bpcharnlike',
- oprrest => 'nlikesel', oprjoin => 'nlikejoinsel' },
- # case-insensitive regex hacks
- { oid => '1226', oid_symbol => 'OID_NAME_ICREGEXEQ_OP',
- descr => 'matches regular expression, case-insensitive',
- oprname => '~*', oprleft => 'name', oprright => 'text', oprresult => 'bool',
- oprnegate => '!~*(name,text)', oprcode => 'nameicregexeq',
- oprrest => 'icregexeqsel', oprjoin => 'icregexeqjoinsel' },
- { oid => '1227',
- descr => 'does not match regular expression, case-insensitive',
- oprname => '!~*', oprleft => 'name', oprright => 'text', oprresult => 'bool',
- oprnegate => '~*(name,text)', oprcode => 'nameicregexne',
- oprrest => 'icregexnesel', oprjoin => 'icregexnejoinsel' },
- { oid => '1228', oid_symbol => 'OID_TEXT_ICREGEXEQ_OP',
- descr => 'matches regular expression, case-insensitive',
- oprname => '~*', oprleft => 'text', oprright => 'text', oprresult => 'bool',
- oprnegate => '!~*(text,text)', oprcode => 'texticregexeq',
- oprrest => 'icregexeqsel', oprjoin => 'icregexeqjoinsel' },
- { oid => '1229',
- descr => 'does not match regular expression, case-insensitive',
- oprname => '!~*', oprleft => 'text', oprright => 'text', oprresult => 'bool',
- oprnegate => '~*(text,text)', oprcode => 'texticregexne',
- oprrest => 'icregexnesel', oprjoin => 'icregexnejoinsel' },
- { oid => '1234', oid_symbol => 'OID_BPCHAR_ICREGEXEQ_OP',
- descr => 'matches regular expression, case-insensitive',
- oprname => '~*', oprleft => 'bpchar', oprright => 'text', oprresult => 'bool',
- oprnegate => '!~*(bpchar,text)', oprcode => 'bpcharicregexeq',
- oprrest => 'icregexeqsel', oprjoin => 'icregexeqjoinsel' },
- { oid => '1235',
- descr => 'does not match regular expression, case-insensitive',
- oprname => '!~*', oprleft => 'bpchar', oprright => 'text',
- oprresult => 'bool', oprnegate => '~*(bpchar,text)',
- oprcode => 'bpcharicregexne', oprrest => 'icregexnesel',
- oprjoin => 'icregexnejoinsel' },
- # timestamptz operators
- { oid => '1320', descr => 'equal',
- oprname => '=', oprcanmerge => 't', oprcanhash => 't',
- oprleft => 'timestamptz', oprright => 'timestamptz', oprresult => 'bool',
- oprcom => '=(timestamptz,timestamptz)',
- oprnegate => '<>(timestamptz,timestamptz)', oprcode => 'timestamptz_eq',
- oprrest => 'eqsel', oprjoin => 'eqjoinsel' },
- { oid => '1321', descr => 'not equal',
- oprname => '<>', oprleft => 'timestamptz', oprright => 'timestamptz',
- oprresult => 'bool', oprcom => '<>(timestamptz,timestamptz)',
- oprnegate => '=(timestamptz,timestamptz)', oprcode => 'timestamptz_ne',
- oprrest => 'neqsel', oprjoin => 'neqjoinsel' },
- { oid => '1322', descr => 'less than',
- oprname => '<', oprleft => 'timestamptz', oprright => 'timestamptz',
- oprresult => 'bool', oprcom => '>(timestamptz,timestamptz)',
- oprnegate => '>=(timestamptz,timestamptz)', oprcode => 'timestamptz_lt',
- oprrest => 'scalarltsel', oprjoin => 'scalarltjoinsel' },
- { oid => '1323', descr => 'less than or equal',
- oprname => '<=', oprleft => 'timestamptz', oprright => 'timestamptz',
- oprresult => 'bool', oprcom => '>=(timestamptz,timestamptz)',
- oprnegate => '>(timestamptz,timestamptz)', oprcode => 'timestamptz_le',
- oprrest => 'scalarlesel', oprjoin => 'scalarlejoinsel' },
- { oid => '1324', descr => 'greater than',
- oprname => '>', oprleft => 'timestamptz', oprright => 'timestamptz',
- oprresult => 'bool', oprcom => '<(timestamptz,timestamptz)',
- oprnegate => '<=(timestamptz,timestamptz)', oprcode => 'timestamptz_gt',
- oprrest => 'scalargtsel', oprjoin => 'scalargtjoinsel' },
- { oid => '1325', descr => 'greater than or equal',
- oprname => '>=', oprleft => 'timestamptz', oprright => 'timestamptz',
- oprresult => 'bool', oprcom => '<=(timestamptz,timestamptz)',
- oprnegate => '<(timestamptz,timestamptz)', oprcode => 'timestamptz_ge',
- oprrest => 'scalargesel', oprjoin => 'scalargejoinsel' },
- { oid => '1327', descr => 'add',
- oprname => '+', oprleft => 'timestamptz', oprright => 'interval',
- oprresult => 'timestamptz', oprcom => '+(interval,timestamptz)',
- oprcode => 'timestamptz_pl_interval' },
- { oid => '1328', descr => 'subtract',
- oprname => '-', oprleft => 'timestamptz', oprright => 'timestamptz',
- oprresult => 'interval', oprcode => 'timestamptz_mi' },
- { oid => '1329', descr => 'subtract',
- oprname => '-', oprleft => 'timestamptz', oprright => 'interval',
- oprresult => 'timestamptz', oprcode => 'timestamptz_mi_interval' },
- # interval operators
- { oid => '1330', descr => 'equal',
- oprname => '=', oprcanmerge => 't', oprcanhash => 't', oprleft => 'interval',
- oprright => 'interval', oprresult => 'bool', oprcom => '=(interval,interval)',
- oprnegate => '<>(interval,interval)', oprcode => 'interval_eq',
- oprrest => 'eqsel', oprjoin => 'eqjoinsel' },
- { oid => '1331', descr => 'not equal',
- oprname => '<>', oprleft => 'interval', oprright => 'interval',
- oprresult => 'bool', oprcom => '<>(interval,interval)',
- oprnegate => '=(interval,interval)', oprcode => 'interval_ne',
- oprrest => 'neqsel', oprjoin => 'neqjoinsel' },
- { oid => '1332', descr => 'less than',
- oprname => '<', oprleft => 'interval', oprright => 'interval',
- oprresult => 'bool', oprcom => '>(interval,interval)',
- oprnegate => '>=(interval,interval)', oprcode => 'interval_lt',
- oprrest => 'scalarltsel', oprjoin => 'scalarltjoinsel' },
- { oid => '1333', descr => 'less than or equal',
- oprname => '<=', oprleft => 'interval', oprright => 'interval',
- oprresult => 'bool', oprcom => '>=(interval,interval)',
- oprnegate => '>(interval,interval)', oprcode => 'interval_le',
- oprrest => 'scalarlesel', oprjoin => 'scalarlejoinsel' },
- { oid => '1334', descr => 'greater than',
- oprname => '>', oprleft => 'interval', oprright => 'interval',
- oprresult => 'bool', oprcom => '<(interval,interval)',
- oprnegate => '<=(interval,interval)', oprcode => 'interval_gt',
- oprrest => 'scalargtsel', oprjoin => 'scalargtjoinsel' },
- { oid => '1335', descr => 'greater than or equal',
- oprname => '>=', oprleft => 'interval', oprright => 'interval',
- oprresult => 'bool', oprcom => '<=(interval,interval)',
- oprnegate => '<(interval,interval)', oprcode => 'interval_ge',
- oprrest => 'scalargesel', oprjoin => 'scalargejoinsel' },
- { oid => '1336', descr => 'negate',
- oprname => '-', oprkind => 'l', oprleft => '0', oprright => 'interval',
- oprresult => 'interval', oprcode => 'interval_um' },
- { oid => '1337', descr => 'add',
- oprname => '+', oprleft => 'interval', oprright => 'interval',
- oprresult => 'interval', oprcom => '+(interval,interval)',
- oprcode => 'interval_pl' },
- { oid => '1338', descr => 'subtract',
- oprname => '-', oprleft => 'interval', oprright => 'interval',
- oprresult => 'interval', oprcode => 'interval_mi' },
- { oid => '1360', descr => 'convert date and time to timestamp',
- oprname => '+', oprleft => 'date', oprright => 'time',
- oprresult => 'timestamp', oprcom => '+(time,date)',
- oprcode => 'datetime_pl' },
- { oid => '1361',
- descr => 'convert date and time with time zone to timestamp with time zone',
- oprname => '+', oprleft => 'date', oprright => 'timetz',
- oprresult => 'timestamptz', oprcom => '+(timetz,date)',
- oprcode => 'datetimetz_pl' },
- { oid => '1363', descr => 'convert time and date to timestamp',
- oprname => '+', oprleft => 'time', oprright => 'date',
- oprresult => 'timestamp', oprcom => '+(date,time)',
- oprcode => 'timedate_pl' },
- { oid => '1366',
- descr => 'convert time with time zone and date to timestamp with time zone',
- oprname => '+', oprleft => 'timetz', oprright => 'date',
- oprresult => 'timestamptz', oprcom => '+(date,timetz)',
- oprcode => 'timetzdate_pl' },
- { oid => '1399', descr => 'subtract',
- oprname => '-', oprleft => 'time', oprright => 'time',
- oprresult => 'interval', oprcode => 'time_mi_time' },
- # additional geometric operators - thomas 97/04/18
- { oid => '1420', descr => 'center of',
- oprname => '@@', oprkind => 'l', oprleft => '0', oprright => 'circle',
- oprresult => 'point', oprcode => 'circle_center' },
- { oid => '1500', descr => 'equal by area',
- oprname => '=', oprleft => 'circle', oprright => 'circle',
- oprresult => 'bool', oprcom => '=(circle,circle)',
- oprnegate => '<>(circle,circle)', oprcode => 'circle_eq', oprrest => 'eqsel',
- oprjoin => 'eqjoinsel' },
- { oid => '1501', descr => 'not equal by area',
- oprname => '<>', oprleft => 'circle', oprright => 'circle',
- oprresult => 'bool', oprcom => '<>(circle,circle)',
- oprnegate => '=(circle,circle)', oprcode => 'circle_ne', oprrest => 'neqsel',
- oprjoin => 'neqjoinsel' },
- { oid => '1502', descr => 'less than by area',
- oprname => '<', oprleft => 'circle', oprright => 'circle',
- oprresult => 'bool', oprcom => '>(circle,circle)',
- oprnegate => '>=(circle,circle)', oprcode => 'circle_lt',
- oprrest => 'areasel', oprjoin => 'areajoinsel' },
- { oid => '1503', descr => 'greater than by area',
- oprname => '>', oprleft => 'circle', oprright => 'circle',
- oprresult => 'bool', oprcom => '<(circle,circle)',
- oprnegate => '<=(circle,circle)', oprcode => 'circle_gt',
- oprrest => 'areasel', oprjoin => 'areajoinsel' },
- { oid => '1504', descr => 'less than or equal by area',
- oprname => '<=', oprleft => 'circle', oprright => 'circle',
- oprresult => 'bool', oprcom => '>=(circle,circle)',
- oprnegate => '>(circle,circle)', oprcode => 'circle_le', oprrest => 'areasel',
- oprjoin => 'areajoinsel' },
- { oid => '1505', descr => 'greater than or equal by area',
- oprname => '>=', oprleft => 'circle', oprright => 'circle',
- oprresult => 'bool', oprcom => '<=(circle,circle)',
- oprnegate => '<(circle,circle)', oprcode => 'circle_ge', oprrest => 'areasel',
- oprjoin => 'areajoinsel' },
- { oid => '1506', descr => 'is left of',
- oprname => '<<', oprleft => 'circle', oprright => 'circle',
- oprresult => 'bool', oprcode => 'circle_left', oprrest => 'positionsel',
- oprjoin => 'positionjoinsel' },
- { oid => '1507', descr => 'overlaps or is left of',
- oprname => '&<', oprleft => 'circle', oprright => 'circle',
- oprresult => 'bool', oprcode => 'circle_overleft', oprrest => 'positionsel',
- oprjoin => 'positionjoinsel' },
- { oid => '1508', descr => 'overlaps or is right of',
- oprname => '&>', oprleft => 'circle', oprright => 'circle',
- oprresult => 'bool', oprcode => 'circle_overright', oprrest => 'positionsel',
- oprjoin => 'positionjoinsel' },
- { oid => '1509', descr => 'is right of',
- oprname => '>>', oprleft => 'circle', oprright => 'circle',
- oprresult => 'bool', oprcode => 'circle_right', oprrest => 'positionsel',
- oprjoin => 'positionjoinsel' },
- { oid => '1510', descr => 'is contained by',
- oprname => '<@', oprleft => 'circle', oprright => 'circle',
- oprresult => 'bool', oprcom => '@>(circle,circle)',
- oprcode => 'circle_contained', oprrest => 'contsel',
- oprjoin => 'contjoinsel' },
- { oid => '1511', descr => 'contains',
- oprname => '@>', oprleft => 'circle', oprright => 'circle',
- oprresult => 'bool', oprcom => '<@(circle,circle)',
- oprcode => 'circle_contain', oprrest => 'contsel', oprjoin => 'contjoinsel' },
- { oid => '1512', descr => 'same as',
- oprname => '~=', oprleft => 'circle', oprright => 'circle',
- oprresult => 'bool', oprcom => '~=(circle,circle)', oprcode => 'circle_same',
- oprrest => 'eqsel', oprjoin => 'eqjoinsel' },
- { oid => '1513', descr => 'overlaps',
- oprname => '&&', oprleft => 'circle', oprright => 'circle',
- oprresult => 'bool', oprcom => '&&(circle,circle)',
- oprcode => 'circle_overlap', oprrest => 'areasel', oprjoin => 'areajoinsel' },
- { oid => '1514', descr => 'is above',
- oprname => '|>>', oprleft => 'circle', oprright => 'circle',
- oprresult => 'bool', oprcode => 'circle_above', oprrest => 'positionsel',
- oprjoin => 'positionjoinsel' },
- { oid => '1515', descr => 'is below',
- oprname => '<<|', oprleft => 'circle', oprright => 'circle',
- oprresult => 'bool', oprcode => 'circle_below', oprrest => 'positionsel',
- oprjoin => 'positionjoinsel' },
- { oid => '1516', descr => 'add',
- oprname => '+', oprleft => 'circle', oprright => 'point',
- oprresult => 'circle', oprcode => 'circle_add_pt' },
- { oid => '1517', descr => 'subtract',
- oprname => '-', oprleft => 'circle', oprright => 'point',
- oprresult => 'circle', oprcode => 'circle_sub_pt' },
- { oid => '1518', descr => 'multiply',
- oprname => '*', oprleft => 'circle', oprright => 'point',
- oprresult => 'circle', oprcode => 'circle_mul_pt' },
- { oid => '1519', descr => 'divide',
- oprname => '/', oprleft => 'circle', oprright => 'point',
- oprresult => 'circle', oprcode => 'circle_div_pt' },
- { oid => '1520', descr => 'distance between',
- oprname => '<->', oprleft => 'circle', oprright => 'circle',
- oprresult => 'float8', oprcom => '<->(circle,circle)',
- oprcode => 'circle_distance' },
- { oid => '1521', descr => 'number of points',
- oprname => '#', oprkind => 'l', oprleft => '0', oprright => 'polygon',
- oprresult => 'int4', oprcode => 'poly_npoints' },
- { oid => '1522', descr => 'distance between',
- oprname => '<->', oprleft => 'point', oprright => 'circle',
- oprresult => 'float8', oprcom => '<->(circle,point)', oprcode => 'dist_pc' },
- { oid => '3291', descr => 'distance between',
- oprname => '<->', oprleft => 'circle', oprright => 'point',
- oprresult => 'float8', oprcom => '<->(point,circle)',
- oprcode => 'dist_cpoint' },
- { oid => '3276', descr => 'distance between',
- oprname => '<->', oprleft => 'point', oprright => 'polygon',
- oprresult => 'float8', oprcom => '<->(polygon,point)',
- oprcode => 'dist_ppoly' },
- { oid => '3289', descr => 'distance between',
- oprname => '<->', oprleft => 'polygon', oprright => 'point',
- oprresult => 'float8', oprcom => '<->(point,polygon)',
- oprcode => 'dist_polyp' },
- { oid => '1523', descr => 'distance between',
- oprname => '<->', oprleft => 'circle', oprright => 'polygon',
- oprresult => 'float8', oprcom => '<->(polygon,circle)',
- oprcode => 'dist_cpoly' },
- { oid => '1383', descr => 'distance between',
- oprname => '<->', oprleft => 'polygon', oprright => 'circle',
- oprresult => 'float8', oprcom => '<->(circle,polygon)',
- oprcode => 'dist_polyc' },
- { oid => '1525', descr => 'intersect',
- oprname => '?#', oprleft => 'lseg', oprright => 'lseg', oprresult => 'bool',
- oprcom => '?#(lseg,lseg)', oprcode => 'lseg_intersect' },
- { oid => '1526', descr => 'parallel',
- oprname => '?||', oprleft => 'lseg', oprright => 'lseg', oprresult => 'bool',
- oprcom => '?||(lseg,lseg)', oprcode => 'lseg_parallel' },
- { oid => '1527', descr => 'perpendicular',
- oprname => '?-|', oprleft => 'lseg', oprright => 'lseg', oprresult => 'bool',
- oprcom => '?-|(lseg,lseg)', oprcode => 'lseg_perp' },
- { oid => '1528', descr => 'horizontal',
- oprname => '?-', oprkind => 'l', oprleft => '0', oprright => 'lseg',
- oprresult => 'bool', oprcode => 'lseg_horizontal' },
- { oid => '1529', descr => 'vertical',
- oprname => '?|', oprkind => 'l', oprleft => '0', oprright => 'lseg',
- oprresult => 'bool', oprcode => 'lseg_vertical' },
- { oid => '1535', descr => 'equal',
- oprname => '=', oprleft => 'lseg', oprright => 'lseg', oprresult => 'bool',
- oprcom => '=(lseg,lseg)', oprnegate => '<>(lseg,lseg)', oprcode => 'lseg_eq',
- oprrest => 'eqsel', oprjoin => 'eqjoinsel' },
- { oid => '1536', descr => 'intersection point',
- oprname => '#', oprleft => 'lseg', oprright => 'lseg', oprresult => 'point',
- oprcom => '#(lseg,lseg)', oprcode => 'lseg_interpt' },
- { oid => '1537', descr => 'intersect',
- oprname => '?#', oprleft => 'lseg', oprright => 'line', oprresult => 'bool',
- oprcode => 'inter_sl' },
- { oid => '1538', descr => 'intersect',
- oprname => '?#', oprleft => 'lseg', oprright => 'box', oprresult => 'bool',
- oprcode => 'inter_sb' },
- { oid => '1539', descr => 'intersect',
- oprname => '?#', oprleft => 'line', oprright => 'box', oprresult => 'bool',
- oprcode => 'inter_lb' },
- { oid => '1546', descr => 'point on line',
- oprname => '<@', oprleft => 'point', oprright => 'line', oprresult => 'bool',
- oprcode => 'on_pl' },
- { oid => '1547', descr => 'is contained by',
- oprname => '<@', oprleft => 'point', oprright => 'lseg', oprresult => 'bool',
- oprcode => 'on_ps' },
- { oid => '1548', descr => 'lseg on line',
- oprname => '<@', oprleft => 'lseg', oprright => 'line', oprresult => 'bool',
- oprcode => 'on_sl' },
- { oid => '1549', descr => 'is contained by',
- oprname => '<@', oprleft => 'lseg', oprright => 'box', oprresult => 'bool',
- oprcode => 'on_sb' },
- { oid => '1557', descr => 'closest point to A on B',
- oprname => '##', oprleft => 'point', oprright => 'line', oprresult => 'point',
- oprcode => 'close_pl' },
- { oid => '1558', descr => 'closest point to A on B',
- oprname => '##', oprleft => 'point', oprright => 'lseg', oprresult => 'point',
- oprcode => 'close_ps' },
- { oid => '1559', descr => 'closest point to A on B',
- oprname => '##', oprleft => 'point', oprright => 'box', oprresult => 'point',
- oprcode => 'close_pb' },
- { oid => '1567', descr => 'closest point to A on B',
- oprname => '##', oprleft => 'lseg', oprright => 'box', oprresult => 'point',
- oprcode => 'close_sb' },
- { oid => '1577', descr => 'closest point to A on B',
- oprname => '##', oprleft => 'line', oprright => 'lseg', oprresult => 'point',
- oprcode => 'close_ls' },
- { oid => '1578', descr => 'closest point to A on B',
- oprname => '##', oprleft => 'lseg', oprright => 'lseg', oprresult => 'point',
- oprcode => 'close_lseg' },
- { oid => '1583', descr => 'multiply',
- oprname => '*', oprleft => 'interval', oprright => 'float8',
- oprresult => 'interval', oprcom => '*(float8,interval)',
- oprcode => 'interval_mul' },
- { oid => '1584', descr => 'multiply',
- oprname => '*', oprleft => 'float8', oprright => 'interval',
- oprresult => 'interval', oprcom => '*(interval,float8)',
- oprcode => 'mul_d_interval' },
- { oid => '1585', descr => 'divide',
- oprname => '/', oprleft => 'interval', oprright => 'float8',
- oprresult => 'interval', oprcode => 'interval_div' },
- { oid => '1586', descr => 'not equal',
- oprname => '<>', oprleft => 'lseg', oprright => 'lseg', oprresult => 'bool',
- oprcom => '<>(lseg,lseg)', oprnegate => '=(lseg,lseg)', oprcode => 'lseg_ne',
- oprrest => 'neqsel', oprjoin => 'neqjoinsel' },
- { oid => '1587', descr => 'less than by length',
- oprname => '<', oprleft => 'lseg', oprright => 'lseg', oprresult => 'bool',
- oprcom => '>(lseg,lseg)', oprnegate => '>=(lseg,lseg)',
- oprcode => 'lseg_lt' },
- { oid => '1588', descr => 'less than or equal by length',
- oprname => '<=', oprleft => 'lseg', oprright => 'lseg', oprresult => 'bool',
- oprcom => '>=(lseg,lseg)', oprnegate => '>(lseg,lseg)',
- oprcode => 'lseg_le' },
- { oid => '1589', descr => 'greater than by length',
- oprname => '>', oprleft => 'lseg', oprright => 'lseg', oprresult => 'bool',
- oprcom => '<(lseg,lseg)', oprnegate => '<=(lseg,lseg)',
- oprcode => 'lseg_gt' },
- { oid => '1590', descr => 'greater than or equal by length',
- oprname => '>=', oprleft => 'lseg', oprright => 'lseg', oprresult => 'bool',
- oprcom => '<=(lseg,lseg)', oprnegate => '<(lseg,lseg)',
- oprcode => 'lseg_ge' },
- { oid => '1591', descr => 'distance between endpoints',
- oprname => '@-@', oprkind => 'l', oprleft => '0', oprright => 'lseg',
- oprresult => 'float8', oprcode => 'lseg_length' },
- { oid => '1611', descr => 'intersect',
- oprname => '?#', oprleft => 'line', oprright => 'line', oprresult => 'bool',
- oprcom => '?#(line,line)', oprcode => 'line_intersect' },
- { oid => '1612', descr => 'parallel',
- oprname => '?||', oprleft => 'line', oprright => 'line', oprresult => 'bool',
- oprcom => '?||(line,line)', oprcode => 'line_parallel' },
- { oid => '1613', descr => 'perpendicular',
- oprname => '?-|', oprleft => 'line', oprright => 'line', oprresult => 'bool',
- oprcom => '?-|(line,line)', oprcode => 'line_perp' },
- { oid => '1614', descr => 'horizontal',
- oprname => '?-', oprkind => 'l', oprleft => '0', oprright => 'line',
- oprresult => 'bool', oprcode => 'line_horizontal' },
- { oid => '1615', descr => 'vertical',
- oprname => '?|', oprkind => 'l', oprleft => '0', oprright => 'line',
- oprresult => 'bool', oprcode => 'line_vertical' },
- { oid => '1616', descr => 'equal',
- oprname => '=', oprleft => 'line', oprright => 'line', oprresult => 'bool',
- oprcom => '=(line,line)', oprcode => 'line_eq', oprrest => 'eqsel',
- oprjoin => 'eqjoinsel' },
- { oid => '1617', descr => 'intersection point',
- oprname => '#', oprleft => 'line', oprright => 'line', oprresult => 'point',
- oprcom => '#(line,line)', oprcode => 'line_interpt' },
- { oid => '4161', descr => 'is above',
- oprname => '|>>', oprleft => 'point', oprright => 'point',
- oprresult => 'bool', oprcode => 'point_above', oprrest => 'positionsel',
- oprjoin => 'positionjoinsel' },
- { oid => '4162', descr => 'is below',
- oprname => '<<|', oprleft => 'point', oprright => 'point',
- oprresult => 'bool', oprcode => 'point_below', oprrest => 'positionsel',
- oprjoin => 'positionjoinsel' },
- # MACADDR type
- { oid => '1220', descr => 'equal',
- oprname => '=', oprcanmerge => 't', oprcanhash => 't', oprleft => 'macaddr',
- oprright => 'macaddr', oprresult => 'bool', oprcom => '=(macaddr,macaddr)',
- oprnegate => '<>(macaddr,macaddr)', oprcode => 'macaddr_eq',
- oprrest => 'eqsel', oprjoin => 'eqjoinsel' },
- { oid => '1221', descr => 'not equal',
- oprname => '<>', oprleft => 'macaddr', oprright => 'macaddr',
- oprresult => 'bool', oprcom => '<>(macaddr,macaddr)',
- oprnegate => '=(macaddr,macaddr)', oprcode => 'macaddr_ne',
- oprrest => 'neqsel', oprjoin => 'neqjoinsel' },
- { oid => '1222', descr => 'less than',
- oprname => '<', oprleft => 'macaddr', oprright => 'macaddr',
- oprresult => 'bool', oprcom => '>(macaddr,macaddr)',
- oprnegate => '>=(macaddr,macaddr)', oprcode => 'macaddr_lt',
- oprrest => 'scalarltsel', oprjoin => 'scalarltjoinsel' },
- { oid => '1223', descr => 'less than or equal',
- oprname => '<=', oprleft => 'macaddr', oprright => 'macaddr',
- oprresult => 'bool', oprcom => '>=(macaddr,macaddr)',
- oprnegate => '>(macaddr,macaddr)', oprcode => 'macaddr_le',
- oprrest => 'scalarlesel', oprjoin => 'scalarlejoinsel' },
- { oid => '1224', descr => 'greater than',
- oprname => '>', oprleft => 'macaddr', oprright => 'macaddr',
- oprresult => 'bool', oprcom => '<(macaddr,macaddr)',
- oprnegate => '<=(macaddr,macaddr)', oprcode => 'macaddr_gt',
- oprrest => 'scalargtsel', oprjoin => 'scalargtjoinsel' },
- { oid => '1225', descr => 'greater than or equal',
- oprname => '>=', oprleft => 'macaddr', oprright => 'macaddr',
- oprresult => 'bool', oprcom => '<=(macaddr,macaddr)',
- oprnegate => '<(macaddr,macaddr)', oprcode => 'macaddr_ge',
- oprrest => 'scalargesel', oprjoin => 'scalargejoinsel' },
- { oid => '3147', descr => 'bitwise not',
- oprname => '~', oprkind => 'l', oprleft => '0', oprright => 'macaddr',
- oprresult => 'macaddr', oprcode => 'macaddr_not' },
- { oid => '3148', descr => 'bitwise and',
- oprname => '&', oprleft => 'macaddr', oprright => 'macaddr',
- oprresult => 'macaddr', oprcode => 'macaddr_and' },
- { oid => '3149', descr => 'bitwise or',
- oprname => '|', oprleft => 'macaddr', oprright => 'macaddr',
- oprresult => 'macaddr', oprcode => 'macaddr_or' },
- # MACADDR8 type
- { oid => '3362', descr => 'equal',
- oprname => '=', oprcanmerge => 't', oprcanhash => 't', oprleft => 'macaddr8',
- oprright => 'macaddr8', oprresult => 'bool', oprcom => '=(macaddr8,macaddr8)',
- oprnegate => '<>(macaddr8,macaddr8)', oprcode => 'macaddr8_eq',
- oprrest => 'eqsel', oprjoin => 'eqjoinsel' },
- { oid => '3363', descr => 'not equal',
- oprname => '<>', oprleft => 'macaddr8', oprright => 'macaddr8',
- oprresult => 'bool', oprcom => '<>(macaddr8,macaddr8)',
- oprnegate => '=(macaddr8,macaddr8)', oprcode => 'macaddr8_ne',
- oprrest => 'neqsel', oprjoin => 'neqjoinsel' },
- { oid => '3364', descr => 'less than',
- oprname => '<', oprleft => 'macaddr8', oprright => 'macaddr8',
- oprresult => 'bool', oprcom => '>(macaddr8,macaddr8)',
- oprnegate => '>=(macaddr8,macaddr8)', oprcode => 'macaddr8_lt',
- oprrest => 'scalarltsel', oprjoin => 'scalarltjoinsel' },
- { oid => '3365', descr => 'less than or equal',
- oprname => '<=', oprleft => 'macaddr8', oprright => 'macaddr8',
- oprresult => 'bool', oprcom => '>=(macaddr8,macaddr8)',
- oprnegate => '>(macaddr8,macaddr8)', oprcode => 'macaddr8_le',
- oprrest => 'scalarlesel', oprjoin => 'scalarlejoinsel' },
- { oid => '3366', descr => 'greater than',
- oprname => '>', oprleft => 'macaddr8', oprright => 'macaddr8',
- oprresult => 'bool', oprcom => '<(macaddr8,macaddr8)',
- oprnegate => '<=(macaddr8,macaddr8)', oprcode => 'macaddr8_gt',
- oprrest => 'scalargtsel', oprjoin => 'scalargtjoinsel' },
- { oid => '3367', descr => 'greater than or equal',
- oprname => '>=', oprleft => 'macaddr8', oprright => 'macaddr8',
- oprresult => 'bool', oprcom => '<=(macaddr8,macaddr8)',
- oprnegate => '<(macaddr8,macaddr8)', oprcode => 'macaddr8_ge',
- oprrest => 'scalargesel', oprjoin => 'scalargejoinsel' },
- { oid => '3368', descr => 'bitwise not',
- oprname => '~', oprkind => 'l', oprleft => '0', oprright => 'macaddr8',
- oprresult => 'macaddr8', oprcode => 'macaddr8_not' },
- { oid => '3369', descr => 'bitwise and',
- oprname => '&', oprleft => 'macaddr8', oprright => 'macaddr8',
- oprresult => 'macaddr8', oprcode => 'macaddr8_and' },
- { oid => '3370', descr => 'bitwise or',
- oprname => '|', oprleft => 'macaddr8', oprright => 'macaddr8',
- oprresult => 'macaddr8', oprcode => 'macaddr8_or' },
- # INET type (these also support CIDR via implicit cast)
- { oid => '1201', descr => 'equal',
- oprname => '=', oprcanmerge => 't', oprcanhash => 't', oprleft => 'inet',
- oprright => 'inet', oprresult => 'bool', oprcom => '=(inet,inet)',
- oprnegate => '<>(inet,inet)', oprcode => 'network_eq', oprrest => 'eqsel',
- oprjoin => 'eqjoinsel' },
- { oid => '1202', descr => 'not equal',
- oprname => '<>', oprleft => 'inet', oprright => 'inet', oprresult => 'bool',
- oprcom => '<>(inet,inet)', oprnegate => '=(inet,inet)',
- oprcode => 'network_ne', oprrest => 'neqsel', oprjoin => 'neqjoinsel' },
- { oid => '1203', descr => 'less than',
- oprname => '<', oprleft => 'inet', oprright => 'inet', oprresult => 'bool',
- oprcom => '>(inet,inet)', oprnegate => '>=(inet,inet)',
- oprcode => 'network_lt', oprrest => 'scalarltsel',
- oprjoin => 'scalarltjoinsel' },
- { oid => '1204', descr => 'less than or equal',
- oprname => '<=', oprleft => 'inet', oprright => 'inet', oprresult => 'bool',
- oprcom => '>=(inet,inet)', oprnegate => '>(inet,inet)',
- oprcode => 'network_le', oprrest => 'scalarlesel',
- oprjoin => 'scalarlejoinsel' },
- { oid => '1205', descr => 'greater than',
- oprname => '>', oprleft => 'inet', oprright => 'inet', oprresult => 'bool',
- oprcom => '<(inet,inet)', oprnegate => '<=(inet,inet)',
- oprcode => 'network_gt', oprrest => 'scalargtsel',
- oprjoin => 'scalargtjoinsel' },
- { oid => '1206', descr => 'greater than or equal',
- oprname => '>=', oprleft => 'inet', oprright => 'inet', oprresult => 'bool',
- oprcom => '<=(inet,inet)', oprnegate => '<(inet,inet)',
- oprcode => 'network_ge', oprrest => 'scalargesel',
- oprjoin => 'scalargejoinsel' },
- { oid => '931', oid_symbol => 'OID_INET_SUB_OP', descr => 'is subnet',
- oprname => '<<', oprleft => 'inet', oprright => 'inet', oprresult => 'bool',
- oprcom => '>>(inet,inet)', oprcode => 'network_sub', oprrest => 'networksel',
- oprjoin => 'networkjoinsel' },
- { oid => '932', oid_symbol => 'OID_INET_SUBEQ_OP',
- descr => 'is subnet or equal',
- oprname => '<<=', oprleft => 'inet', oprright => 'inet', oprresult => 'bool',
- oprcom => '>>=(inet,inet)', oprcode => 'network_subeq',
- oprrest => 'networksel', oprjoin => 'networkjoinsel' },
- { oid => '933', oid_symbol => 'OID_INET_SUP_OP', descr => 'is supernet',
- oprname => '>>', oprleft => 'inet', oprright => 'inet', oprresult => 'bool',
- oprcom => '<<(inet,inet)', oprcode => 'network_sup', oprrest => 'networksel',
- oprjoin => 'networkjoinsel' },
- { oid => '934', oid_symbol => 'OID_INET_SUPEQ_OP',
- descr => 'is supernet or equal',
- oprname => '>>=', oprleft => 'inet', oprright => 'inet', oprresult => 'bool',
- oprcom => '<<=(inet,inet)', oprcode => 'network_supeq',
- oprrest => 'networksel', oprjoin => 'networkjoinsel' },
- { oid => '3552', oid_symbol => 'OID_INET_OVERLAP_OP',
- descr => 'overlaps (is subnet or supernet)',
- oprname => '&&', oprleft => 'inet', oprright => 'inet', oprresult => 'bool',
- oprcom => '&&(inet,inet)', oprcode => 'network_overlap',
- oprrest => 'networksel', oprjoin => 'networkjoinsel' },
- { oid => '2634', descr => 'bitwise not',
- oprname => '~', oprkind => 'l', oprleft => '0', oprright => 'inet',
- oprresult => 'inet', oprcode => 'inetnot' },
- { oid => '2635', descr => 'bitwise and',
- oprname => '&', oprleft => 'inet', oprright => 'inet', oprresult => 'inet',
- oprcode => 'inetand' },
- { oid => '2636', descr => 'bitwise or',
- oprname => '|', oprleft => 'inet', oprright => 'inet', oprresult => 'inet',
- oprcode => 'inetor' },
- { oid => '2637', descr => 'add',
- oprname => '+', oprleft => 'inet', oprright => 'int8', oprresult => 'inet',
- oprcom => '+(int8,inet)', oprcode => 'inetpl' },
- { oid => '2638', descr => 'add',
- oprname => '+', oprleft => 'int8', oprright => 'inet', oprresult => 'inet',
- oprcom => '+(inet,int8)', oprcode => 'int8pl_inet' },
- { oid => '2639', descr => 'subtract',
- oprname => '-', oprleft => 'inet', oprright => 'int8', oprresult => 'inet',
- oprcode => 'inetmi_int8' },
- { oid => '2640', descr => 'subtract',
- oprname => '-', oprleft => 'inet', oprright => 'inet', oprresult => 'int8',
- oprcode => 'inetmi' },
- # case-insensitive LIKE hacks
- { oid => '1625', oid_symbol => 'OID_NAME_ICLIKE_OP',
- descr => 'matches LIKE expression, case-insensitive',
- oprname => '~~*', oprleft => 'name', oprright => 'text', oprresult => 'bool',
- oprnegate => '!~~*(name,text)', oprcode => 'nameiclike',
- oprrest => 'iclikesel', oprjoin => 'iclikejoinsel' },
- { oid => '1626', descr => 'does not match LIKE expression, case-insensitive',
- oprname => '!~~*', oprleft => 'name', oprright => 'text', oprresult => 'bool',
- oprnegate => '~~*(name,text)', oprcode => 'nameicnlike',
- oprrest => 'icnlikesel', oprjoin => 'icnlikejoinsel' },
- { oid => '1627', oid_symbol => 'OID_TEXT_ICLIKE_OP',
- descr => 'matches LIKE expression, case-insensitive',
- oprname => '~~*', oprleft => 'text', oprright => 'text', oprresult => 'bool',
- oprnegate => '!~~*(text,text)', oprcode => 'texticlike',
- oprrest => 'iclikesel', oprjoin => 'iclikejoinsel' },
- { oid => '1628', descr => 'does not match LIKE expression, case-insensitive',
- oprname => '!~~*', oprleft => 'text', oprright => 'text', oprresult => 'bool',
- oprnegate => '~~*(text,text)', oprcode => 'texticnlike',
- oprrest => 'icnlikesel', oprjoin => 'icnlikejoinsel' },
- { oid => '1629', oid_symbol => 'OID_BPCHAR_ICLIKE_OP',
- descr => 'matches LIKE expression, case-insensitive',
- oprname => '~~*', oprleft => 'bpchar', oprright => 'text',
- oprresult => 'bool', oprnegate => '!~~*(bpchar,text)',
- oprcode => 'bpchariclike', oprrest => 'iclikesel',
- oprjoin => 'iclikejoinsel' },
- { oid => '1630', descr => 'does not match LIKE expression, case-insensitive',
- oprname => '!~~*', oprleft => 'bpchar', oprright => 'text',
- oprresult => 'bool', oprnegate => '~~*(bpchar,text)',
- oprcode => 'bpcharicnlike', oprrest => 'icnlikesel',
- oprjoin => 'icnlikejoinsel' },
- # NUMERIC type - OID's 1700-1799
- { oid => '1751', descr => 'negate',
- oprname => '-', oprkind => 'l', oprleft => '0', oprright => 'numeric',
- oprresult => 'numeric', oprcode => 'numeric_uminus' },
- { oid => '1752', descr => 'equal',
- oprname => '=', oprcanmerge => 't', oprcanhash => 't', oprleft => 'numeric',
- oprright => 'numeric', oprresult => 'bool', oprcom => '=(numeric,numeric)',
- oprnegate => '<>(numeric,numeric)', oprcode => 'numeric_eq',
- oprrest => 'eqsel', oprjoin => 'eqjoinsel' },
- { oid => '1753', descr => 'not equal',
- oprname => '<>', oprleft => 'numeric', oprright => 'numeric',
- oprresult => 'bool', oprcom => '<>(numeric,numeric)',
- oprnegate => '=(numeric,numeric)', oprcode => 'numeric_ne',
- oprrest => 'neqsel', oprjoin => 'neqjoinsel' },
- { oid => '1754', descr => 'less than',
- oprname => '<', oprleft => 'numeric', oprright => 'numeric',
- oprresult => 'bool', oprcom => '>(numeric,numeric)',
- oprnegate => '>=(numeric,numeric)', oprcode => 'numeric_lt',
- oprrest => 'scalarltsel', oprjoin => 'scalarltjoinsel' },
- { oid => '1755', descr => 'less than or equal',
- oprname => '<=', oprleft => 'numeric', oprright => 'numeric',
- oprresult => 'bool', oprcom => '>=(numeric,numeric)',
- oprnegate => '>(numeric,numeric)', oprcode => 'numeric_le',
- oprrest => 'scalarlesel', oprjoin => 'scalarlejoinsel' },
- { oid => '1756', descr => 'greater than',
- oprname => '>', oprleft => 'numeric', oprright => 'numeric',
- oprresult => 'bool', oprcom => '<(numeric,numeric)',
- oprnegate => '<=(numeric,numeric)', oprcode => 'numeric_gt',
- oprrest => 'scalargtsel', oprjoin => 'scalargtjoinsel' },
- { oid => '1757', descr => 'greater than or equal',
- oprname => '>=', oprleft => 'numeric', oprright => 'numeric',
- oprresult => 'bool', oprcom => '<=(numeric,numeric)',
- oprnegate => '<(numeric,numeric)', oprcode => 'numeric_ge',
- oprrest => 'scalargesel', oprjoin => 'scalargejoinsel' },
- { oid => '1758', descr => 'add',
- oprname => '+', oprleft => 'numeric', oprright => 'numeric',
- oprresult => 'numeric', oprcom => '+(numeric,numeric)',
- oprcode => 'numeric_add' },
- { oid => '1759', descr => 'subtract',
- oprname => '-', oprleft => 'numeric', oprright => 'numeric',
- oprresult => 'numeric', oprcode => 'numeric_sub' },
- { oid => '1760', descr => 'multiply',
- oprname => '*', oprleft => 'numeric', oprright => 'numeric',
- oprresult => 'numeric', oprcom => '*(numeric,numeric)',
- oprcode => 'numeric_mul' },
- { oid => '1761', descr => 'divide',
- oprname => '/', oprleft => 'numeric', oprright => 'numeric',
- oprresult => 'numeric', oprcode => 'numeric_div' },
- { oid => '1762', descr => 'modulus',
- oprname => '%', oprleft => 'numeric', oprright => 'numeric',
- oprresult => 'numeric', oprcode => 'numeric_mod' },
- { oid => '1038', descr => 'exponentiation',
- oprname => '^', oprleft => 'numeric', oprright => 'numeric',
- oprresult => 'numeric', oprcode => 'numeric_power' },
- { oid => '1763', descr => 'absolute value',
- oprname => '@', oprkind => 'l', oprleft => '0', oprright => 'numeric',
- oprresult => 'numeric', oprcode => 'numeric_abs' },
- { oid => '1784', descr => 'equal',
- oprname => '=', oprcanmerge => 't', oprleft => 'bit', oprright => 'bit',
- oprresult => 'bool', oprcom => '=(bit,bit)', oprnegate => '<>(bit,bit)',
- oprcode => 'biteq', oprrest => 'eqsel', oprjoin => 'eqjoinsel' },
- { oid => '1785', descr => 'not equal',
- oprname => '<>', oprleft => 'bit', oprright => 'bit', oprresult => 'bool',
- oprcom => '<>(bit,bit)', oprnegate => '=(bit,bit)', oprcode => 'bitne',
- oprrest => 'neqsel', oprjoin => 'neqjoinsel' },
- { oid => '1786', descr => 'less than',
- oprname => '<', oprleft => 'bit', oprright => 'bit', oprresult => 'bool',
- oprcom => '>(bit,bit)', oprnegate => '>=(bit,bit)', oprcode => 'bitlt',
- oprrest => 'scalarltsel', oprjoin => 'scalarltjoinsel' },
- { oid => '1787', descr => 'greater than',
- oprname => '>', oprleft => 'bit', oprright => 'bit', oprresult => 'bool',
- oprcom => '<(bit,bit)', oprnegate => '<=(bit,bit)', oprcode => 'bitgt',
- oprrest => 'scalargtsel', oprjoin => 'scalargtjoinsel' },
- { oid => '1788', descr => 'less than or equal',
- oprname => '<=', oprleft => 'bit', oprright => 'bit', oprresult => 'bool',
- oprcom => '>=(bit,bit)', oprnegate => '>(bit,bit)', oprcode => 'bitle',
- oprrest => 'scalarlesel', oprjoin => 'scalarlejoinsel' },
- { oid => '1789', descr => 'greater than or equal',
- oprname => '>=', oprleft => 'bit', oprright => 'bit', oprresult => 'bool',
- oprcom => '<=(bit,bit)', oprnegate => '<(bit,bit)', oprcode => 'bitge',
- oprrest => 'scalargesel', oprjoin => 'scalargejoinsel' },
- { oid => '1791', descr => 'bitwise and',
- oprname => '&', oprleft => 'bit', oprright => 'bit', oprresult => 'bit',
- oprcom => '&(bit,bit)', oprcode => 'bitand' },
- { oid => '1792', descr => 'bitwise or',
- oprname => '|', oprleft => 'bit', oprright => 'bit', oprresult => 'bit',
- oprcom => '|(bit,bit)', oprcode => 'bitor' },
- { oid => '1793', descr => 'bitwise exclusive or',
- oprname => '#', oprleft => 'bit', oprright => 'bit', oprresult => 'bit',
- oprcom => '#(bit,bit)', oprcode => 'bitxor' },
- { oid => '1794', descr => 'bitwise not',
- oprname => '~', oprkind => 'l', oprleft => '0', oprright => 'bit',
- oprresult => 'bit', oprcode => 'bitnot' },
- { oid => '1795', descr => 'bitwise shift left',
- oprname => '<<', oprleft => 'bit', oprright => 'int4', oprresult => 'bit',
- oprcode => 'bitshiftleft' },
- { oid => '1796', descr => 'bitwise shift right',
- oprname => '>>', oprleft => 'bit', oprright => 'int4', oprresult => 'bit',
- oprcode => 'bitshiftright' },
- { oid => '1797', descr => 'concatenate',
- oprname => '||', oprleft => 'varbit', oprright => 'varbit',
- oprresult => 'varbit', oprcode => 'bitcat' },
- { oid => '1800', descr => 'add',
- oprname => '+', oprleft => 'time', oprright => 'interval',
- oprresult => 'time', oprcom => '+(interval,time)',
- oprcode => 'time_pl_interval' },
- { oid => '1801', descr => 'subtract',
- oprname => '-', oprleft => 'time', oprright => 'interval',
- oprresult => 'time', oprcode => 'time_mi_interval' },
- { oid => '1802', descr => 'add',
- oprname => '+', oprleft => 'timetz', oprright => 'interval',
- oprresult => 'timetz', oprcom => '+(interval,timetz)',
- oprcode => 'timetz_pl_interval' },
- { oid => '1803', descr => 'subtract',
- oprname => '-', oprleft => 'timetz', oprright => 'interval',
- oprresult => 'timetz', oprcode => 'timetz_mi_interval' },
- { oid => '1804', descr => 'equal',
- oprname => '=', oprcanmerge => 't', oprleft => 'varbit', oprright => 'varbit',
- oprresult => 'bool', oprcom => '=(varbit,varbit)',
- oprnegate => '<>(varbit,varbit)', oprcode => 'varbiteq', oprrest => 'eqsel',
- oprjoin => 'eqjoinsel' },
- { oid => '1805', descr => 'not equal',
- oprname => '<>', oprleft => 'varbit', oprright => 'varbit',
- oprresult => 'bool', oprcom => '<>(varbit,varbit)',
- oprnegate => '=(varbit,varbit)', oprcode => 'varbitne', oprrest => 'neqsel',
- oprjoin => 'neqjoinsel' },
- { oid => '1806', descr => 'less than',
- oprname => '<', oprleft => 'varbit', oprright => 'varbit',
- oprresult => 'bool', oprcom => '>(varbit,varbit)',
- oprnegate => '>=(varbit,varbit)', oprcode => 'varbitlt',
- oprrest => 'scalarltsel', oprjoin => 'scalarltjoinsel' },
- { oid => '1807', descr => 'greater than',
- oprname => '>', oprleft => 'varbit', oprright => 'varbit',
- oprresult => 'bool', oprcom => '<(varbit,varbit)',
- oprnegate => '<=(varbit,varbit)', oprcode => 'varbitgt',
- oprrest => 'scalargtsel', oprjoin => 'scalargtjoinsel' },
- { oid => '1808', descr => 'less than or equal',
- oprname => '<=', oprleft => 'varbit', oprright => 'varbit',
- oprresult => 'bool', oprcom => '>=(varbit,varbit)',
- oprnegate => '>(varbit,varbit)', oprcode => 'varbitle',
- oprrest => 'scalarlesel', oprjoin => 'scalarlejoinsel' },
- { oid => '1809', descr => 'greater than or equal',
- oprname => '>=', oprleft => 'varbit', oprright => 'varbit',
- oprresult => 'bool', oprcom => '<=(varbit,varbit)',
- oprnegate => '<(varbit,varbit)', oprcode => 'varbitge',
- oprrest => 'scalargesel', oprjoin => 'scalargejoinsel' },
- { oid => '1849', descr => 'add',
- oprname => '+', oprleft => 'interval', oprright => 'time',
- oprresult => 'time', oprcom => '+(time,interval)',
- oprcode => 'interval_pl_time' },
- { oid => '1862', descr => 'equal',
- oprname => '=', oprcanmerge => 't', oprcanhash => 't', oprleft => 'int2',
- oprright => 'int8', oprresult => 'bool', oprcom => '=(int8,int2)',
- oprnegate => '<>(int2,int8)', oprcode => 'int28eq', oprrest => 'eqsel',
- oprjoin => 'eqjoinsel' },
- { oid => '1863', descr => 'not equal',
- oprname => '<>', oprleft => 'int2', oprright => 'int8', oprresult => 'bool',
- oprcom => '<>(int8,int2)', oprnegate => '=(int2,int8)', oprcode => 'int28ne',
- oprrest => 'neqsel', oprjoin => 'neqjoinsel' },
- { oid => '1864', descr => 'less than',
- oprname => '<', oprleft => 'int2', oprright => 'int8', oprresult => 'bool',
- oprcom => '>(int8,int2)', oprnegate => '>=(int2,int8)', oprcode => 'int28lt',
- oprrest => 'scalarltsel', oprjoin => 'scalarltjoinsel' },
- { oid => '1865', descr => 'greater than',
- oprname => '>', oprleft => 'int2', oprright => 'int8', oprresult => 'bool',
- oprcom => '<(int8,int2)', oprnegate => '<=(int2,int8)', oprcode => 'int28gt',
- oprrest => 'scalargtsel', oprjoin => 'scalargtjoinsel' },
- { oid => '1866', descr => 'less than or equal',
- oprname => '<=', oprleft => 'int2', oprright => 'int8', oprresult => 'bool',
- oprcom => '>=(int8,int2)', oprnegate => '>(int2,int8)', oprcode => 'int28le',
- oprrest => 'scalarlesel', oprjoin => 'scalarlejoinsel' },
- { oid => '1867', descr => 'greater than or equal',
- oprname => '>=', oprleft => 'int2', oprright => 'int8', oprresult => 'bool',
- oprcom => '<=(int8,int2)', oprnegate => '<(int2,int8)', oprcode => 'int28ge',
- oprrest => 'scalargesel', oprjoin => 'scalargejoinsel' },
- { oid => '1868', descr => 'equal',
- oprname => '=', oprcanmerge => 't', oprcanhash => 't', oprleft => 'int8',
- oprright => 'int2', oprresult => 'bool', oprcom => '=(int2,int8)',
- oprnegate => '<>(int8,int2)', oprcode => 'int82eq', oprrest => 'eqsel',
- oprjoin => 'eqjoinsel' },
- { oid => '1869', descr => 'not equal',
- oprname => '<>', oprleft => 'int8', oprright => 'int2', oprresult => 'bool',
- oprcom => '<>(int2,int8)', oprnegate => '=(int8,int2)', oprcode => 'int82ne',
- oprrest => 'neqsel', oprjoin => 'neqjoinsel' },
- { oid => '1870', descr => 'less than',
- oprname => '<', oprleft => 'int8', oprright => 'int2', oprresult => 'bool',
- oprcom => '>(int2,int8)', oprnegate => '>=(int8,int2)', oprcode => 'int82lt',
- oprrest => 'scalarltsel', oprjoin => 'scalarltjoinsel' },
- { oid => '1871', descr => 'greater than',
- oprname => '>', oprleft => 'int8', oprright => 'int2', oprresult => 'bool',
- oprcom => '<(int2,int8)', oprnegate => '<=(int8,int2)', oprcode => 'int82gt',
- oprrest => 'scalargtsel', oprjoin => 'scalargtjoinsel' },
- { oid => '1872', descr => 'less than or equal',
- oprname => '<=', oprleft => 'int8', oprright => 'int2', oprresult => 'bool',
- oprcom => '>=(int2,int8)', oprnegate => '>(int8,int2)', oprcode => 'int82le',
- oprrest => 'scalarlesel', oprjoin => 'scalarlejoinsel' },
- { oid => '1873', descr => 'greater than or equal',
- oprname => '>=', oprleft => 'int8', oprright => 'int2', oprresult => 'bool',
- oprcom => '<=(int2,int8)', oprnegate => '<(int8,int2)', oprcode => 'int82ge',
- oprrest => 'scalargesel', oprjoin => 'scalargejoinsel' },
- { oid => '1874', descr => 'bitwise and',
- oprname => '&', oprleft => 'int2', oprright => 'int2', oprresult => 'int2',
- oprcom => '&(int2,int2)', oprcode => 'int2and' },
- { oid => '1875', descr => 'bitwise or',
- oprname => '|', oprleft => 'int2', oprright => 'int2', oprresult => 'int2',
- oprcom => '|(int2,int2)', oprcode => 'int2or' },
- { oid => '1876', descr => 'bitwise exclusive or',
- oprname => '#', oprleft => 'int2', oprright => 'int2', oprresult => 'int2',
- oprcom => '#(int2,int2)', oprcode => 'int2xor' },
- { oid => '1877', descr => 'bitwise not',
- oprname => '~', oprkind => 'l', oprleft => '0', oprright => 'int2',
- oprresult => 'int2', oprcode => 'int2not' },
- { oid => '1878', descr => 'bitwise shift left',
- oprname => '<<', oprleft => 'int2', oprright => 'int4', oprresult => 'int2',
- oprcode => 'int2shl' },
- { oid => '1879', descr => 'bitwise shift right',
- oprname => '>>', oprleft => 'int2', oprright => 'int4', oprresult => 'int2',
- oprcode => 'int2shr' },
- { oid => '1880', descr => 'bitwise and',
- oprname => '&', oprleft => 'int4', oprright => 'int4', oprresult => 'int4',
- oprcom => '&(int4,int4)', oprcode => 'int4and' },
- { oid => '1881', descr => 'bitwise or',
- oprname => '|', oprleft => 'int4', oprright => 'int4', oprresult => 'int4',
- oprcom => '|(int4,int4)', oprcode => 'int4or' },
- { oid => '1882', descr => 'bitwise exclusive or',
- oprname => '#', oprleft => 'int4', oprright => 'int4', oprresult => 'int4',
- oprcom => '#(int4,int4)', oprcode => 'int4xor' },
- { oid => '1883', descr => 'bitwise not',
- oprname => '~', oprkind => 'l', oprleft => '0', oprright => 'int4',
- oprresult => 'int4', oprcode => 'int4not' },
- { oid => '1884', descr => 'bitwise shift left',
- oprname => '<<', oprleft => 'int4', oprright => 'int4', oprresult => 'int4',
- oprcode => 'int4shl' },
- { oid => '1885', descr => 'bitwise shift right',
- oprname => '>>', oprleft => 'int4', oprright => 'int4', oprresult => 'int4',
- oprcode => 'int4shr' },
- { oid => '1886', descr => 'bitwise and',
- oprname => '&', oprleft => 'int8', oprright => 'int8', oprresult => 'int8',
- oprcom => '&(int8,int8)', oprcode => 'int8and' },
- { oid => '1887', descr => 'bitwise or',
- oprname => '|', oprleft => 'int8', oprright => 'int8', oprresult => 'int8',
- oprcom => '|(int8,int8)', oprcode => 'int8or' },
- { oid => '1888', descr => 'bitwise exclusive or',
- oprname => '#', oprleft => 'int8', oprright => 'int8', oprresult => 'int8',
- oprcom => '#(int8,int8)', oprcode => 'int8xor' },
- { oid => '1889', descr => 'bitwise not',
- oprname => '~', oprkind => 'l', oprleft => '0', oprright => 'int8',
- oprresult => 'int8', oprcode => 'int8not' },
- { oid => '1890', descr => 'bitwise shift left',
- oprname => '<<', oprleft => 'int8', oprright => 'int4', oprresult => 'int8',
- oprcode => 'int8shl' },
- { oid => '1891', descr => 'bitwise shift right',
- oprname => '>>', oprleft => 'int8', oprright => 'int4', oprresult => 'int8',
- oprcode => 'int8shr' },
- { oid => '1916', descr => 'unary plus',
- oprname => '+', oprkind => 'l', oprleft => '0', oprright => 'int8',
- oprresult => 'int8', oprcode => 'int8up' },
- { oid => '1917', descr => 'unary plus',
- oprname => '+', oprkind => 'l', oprleft => '0', oprright => 'int2',
- oprresult => 'int2', oprcode => 'int2up' },
- { oid => '1918', descr => 'unary plus',
- oprname => '+', oprkind => 'l', oprleft => '0', oprright => 'int4',
- oprresult => 'int4', oprcode => 'int4up' },
- { oid => '1919', descr => 'unary plus',
- oprname => '+', oprkind => 'l', oprleft => '0', oprright => 'float4',
- oprresult => 'float4', oprcode => 'float4up' },
- { oid => '1920', descr => 'unary plus',
- oprname => '+', oprkind => 'l', oprleft => '0', oprright => 'float8',
- oprresult => 'float8', oprcode => 'float8up' },
- { oid => '1921', descr => 'unary plus',
- oprname => '+', oprkind => 'l', oprleft => '0', oprright => 'numeric',
- oprresult => 'numeric', oprcode => 'numeric_uplus' },
- # bytea operators
- { oid => '1955', oid_symbol => 'ByteaEqualOperator', descr => 'equal',
- oprname => '=', oprcanmerge => 't', oprcanhash => 't', oprleft => 'bytea',
- oprright => 'bytea', oprresult => 'bool', oprcom => '=(bytea,bytea)',
- oprnegate => '<>(bytea,bytea)', oprcode => 'byteaeq', oprrest => 'eqsel',
- oprjoin => 'eqjoinsel' },
- { oid => '1956', descr => 'not equal',
- oprname => '<>', oprleft => 'bytea', oprright => 'bytea', oprresult => 'bool',
- oprcom => '<>(bytea,bytea)', oprnegate => '=(bytea,bytea)',
- oprcode => 'byteane', oprrest => 'neqsel', oprjoin => 'neqjoinsel' },
- { oid => '1957', oid_symbol => 'ByteaLessOperator', descr => 'less than',
- oprname => '<', oprleft => 'bytea', oprright => 'bytea', oprresult => 'bool',
- oprcom => '>(bytea,bytea)', oprnegate => '>=(bytea,bytea)',
- oprcode => 'bytealt', oprrest => 'scalarltsel',
- oprjoin => 'scalarltjoinsel' },
- { oid => '1958', descr => 'less than or equal',
- oprname => '<=', oprleft => 'bytea', oprright => 'bytea', oprresult => 'bool',
- oprcom => '>=(bytea,bytea)', oprnegate => '>(bytea,bytea)',
- oprcode => 'byteale', oprrest => 'scalarlesel',
- oprjoin => 'scalarlejoinsel' },
- { oid => '1959', descr => 'greater than',
- oprname => '>', oprleft => 'bytea', oprright => 'bytea', oprresult => 'bool',
- oprcom => '<(bytea,bytea)', oprnegate => '<=(bytea,bytea)',
- oprcode => 'byteagt', oprrest => 'scalargtsel',
- oprjoin => 'scalargtjoinsel' },
- { oid => '1960', oid_symbol => 'ByteaGreaterEqualOperator',
- descr => 'greater than or equal',
- oprname => '>=', oprleft => 'bytea', oprright => 'bytea', oprresult => 'bool',
- oprcom => '<=(bytea,bytea)', oprnegate => '<(bytea,bytea)',
- oprcode => 'byteage', oprrest => 'scalargesel',
- oprjoin => 'scalargejoinsel' },
- { oid => '2016', oid_symbol => 'OID_BYTEA_LIKE_OP',
- descr => 'matches LIKE expression',
- oprname => '~~', oprleft => 'bytea', oprright => 'bytea', oprresult => 'bool',
- oprnegate => '!~~(bytea,bytea)', oprcode => 'bytealike', oprrest => 'likesel',
- oprjoin => 'likejoinsel' },
- { oid => '2017', descr => 'does not match LIKE expression',
- oprname => '!~~', oprleft => 'bytea', oprright => 'bytea',
- oprresult => 'bool', oprnegate => '~~(bytea,bytea)', oprcode => 'byteanlike',
- oprrest => 'nlikesel', oprjoin => 'nlikejoinsel' },
- { oid => '2018', descr => 'concatenate',
- oprname => '||', oprleft => 'bytea', oprright => 'bytea',
- oprresult => 'bytea', oprcode => 'byteacat' },
- # timestamp operators
- { oid => '2060', descr => 'equal',
- oprname => '=', oprcanmerge => 't', oprcanhash => 't', oprleft => 'timestamp',
- oprright => 'timestamp', oprresult => 'bool',
- oprcom => '=(timestamp,timestamp)', oprnegate => '<>(timestamp,timestamp)',
- oprcode => 'timestamp_eq', oprrest => 'eqsel', oprjoin => 'eqjoinsel' },
- { oid => '2061', descr => 'not equal',
- oprname => '<>', oprleft => 'timestamp', oprright => 'timestamp',
- oprresult => 'bool', oprcom => '<>(timestamp,timestamp)',
- oprnegate => '=(timestamp,timestamp)', oprcode => 'timestamp_ne',
- oprrest => 'neqsel', oprjoin => 'neqjoinsel' },
- { oid => '2062', descr => 'less than',
- oprname => '<', oprleft => 'timestamp', oprright => 'timestamp',
- oprresult => 'bool', oprcom => '>(timestamp,timestamp)',
- oprnegate => '>=(timestamp,timestamp)', oprcode => 'timestamp_lt',
- oprrest => 'scalarltsel', oprjoin => 'scalarltjoinsel' },
- { oid => '2063', descr => 'less than or equal',
- oprname => '<=', oprleft => 'timestamp', oprright => 'timestamp',
- oprresult => 'bool', oprcom => '>=(timestamp,timestamp)',
- oprnegate => '>(timestamp,timestamp)', oprcode => 'timestamp_le',
- oprrest => 'scalarlesel', oprjoin => 'scalarlejoinsel' },
- { oid => '2064', descr => 'greater than',
- oprname => '>', oprleft => 'timestamp', oprright => 'timestamp',
- oprresult => 'bool', oprcom => '<(timestamp,timestamp)',
- oprnegate => '<=(timestamp,timestamp)', oprcode => 'timestamp_gt',
- oprrest => 'scalargtsel', oprjoin => 'scalargtjoinsel' },
- { oid => '2065', descr => 'greater than or equal',
- oprname => '>=', oprleft => 'timestamp', oprright => 'timestamp',
- oprresult => 'bool', oprcom => '<=(timestamp,timestamp)',
- oprnegate => '<(timestamp,timestamp)', oprcode => 'timestamp_ge',
- oprrest => 'scalargesel', oprjoin => 'scalargejoinsel' },
- { oid => '2066', descr => 'add',
- oprname => '+', oprleft => 'timestamp', oprright => 'interval',
- oprresult => 'timestamp', oprcom => '+(interval,timestamp)',
- oprcode => 'timestamp_pl_interval' },
- { oid => '2067', descr => 'subtract',
- oprname => '-', oprleft => 'timestamp', oprright => 'timestamp',
- oprresult => 'interval', oprcode => 'timestamp_mi' },
- { oid => '2068', descr => 'subtract',
- oprname => '-', oprleft => 'timestamp', oprright => 'interval',
- oprresult => 'timestamp', oprcode => 'timestamp_mi_interval' },
- # character-by-character (not collation order) comparison operators for character types
- { oid => '2314', oid_symbol => 'TextPatternLessOperator',
- descr => 'less than',
- oprname => '~<~', oprleft => 'text', oprright => 'text', oprresult => 'bool',
- oprcom => '~>~(text,text)', oprnegate => '~>=~(text,text)',
- oprcode => 'text_pattern_lt', oprrest => 'scalarltsel',
- oprjoin => 'scalarltjoinsel' },
- { oid => '2315', descr => 'less than or equal',
- oprname => '~<=~', oprleft => 'text', oprright => 'text', oprresult => 'bool',
- oprcom => '~>=~(text,text)', oprnegate => '~>~(text,text)',
- oprcode => 'text_pattern_le', oprrest => 'scalarlesel',
- oprjoin => 'scalarlejoinsel' },
- { oid => '2317', oid_symbol => 'TextPatternGreaterEqualOperator',
- descr => 'greater than or equal',
- oprname => '~>=~', oprleft => 'text', oprright => 'text', oprresult => 'bool',
- oprcom => '~<=~(text,text)', oprnegate => '~<~(text,text)',
- oprcode => 'text_pattern_ge', oprrest => 'scalargesel',
- oprjoin => 'scalargejoinsel' },
- { oid => '2318', descr => 'greater than',
- oprname => '~>~', oprleft => 'text', oprright => 'text', oprresult => 'bool',
- oprcom => '~<~(text,text)', oprnegate => '~<=~(text,text)',
- oprcode => 'text_pattern_gt', oprrest => 'scalargtsel',
- oprjoin => 'scalargtjoinsel' },
- { oid => '2326', oid_symbol => 'BpcharPatternLessOperator',
- descr => 'less than',
- oprname => '~<~', oprleft => 'bpchar', oprright => 'bpchar',
- oprresult => 'bool', oprcom => '~>~(bpchar,bpchar)',
- oprnegate => '~>=~(bpchar,bpchar)', oprcode => 'bpchar_pattern_lt',
- oprrest => 'scalarltsel', oprjoin => 'scalarltjoinsel' },
- { oid => '2327', descr => 'less than or equal',
- oprname => '~<=~', oprleft => 'bpchar', oprright => 'bpchar',
- oprresult => 'bool', oprcom => '~>=~(bpchar,bpchar)',
- oprnegate => '~>~(bpchar,bpchar)', oprcode => 'bpchar_pattern_le',
- oprrest => 'scalarlesel', oprjoin => 'scalarlejoinsel' },
- { oid => '2329', oid_symbol => 'BpcharPatternGreaterEqualOperator',
- descr => 'greater than or equal',
- oprname => '~>=~', oprleft => 'bpchar', oprright => 'bpchar',
- oprresult => 'bool', oprcom => '~<=~(bpchar,bpchar)',
- oprnegate => '~<~(bpchar,bpchar)', oprcode => 'bpchar_pattern_ge',
- oprrest => 'scalargesel', oprjoin => 'scalargejoinsel' },
- { oid => '2330', descr => 'greater than',
- oprname => '~>~', oprleft => 'bpchar', oprright => 'bpchar',
- oprresult => 'bool', oprcom => '~<~(bpchar,bpchar)',
- oprnegate => '~<=~(bpchar,bpchar)', oprcode => 'bpchar_pattern_gt',
- oprrest => 'scalargtsel', oprjoin => 'scalargtjoinsel' },
- # crosstype operations for date vs. timestamp and timestamptz
- { oid => '2345', descr => 'less than',
- oprname => '<', oprleft => 'date', oprright => 'timestamp',
- oprresult => 'bool', oprcom => '>(timestamp,date)',
- oprnegate => '>=(date,timestamp)', oprcode => 'date_lt_timestamp',
- oprrest => 'scalarltsel', oprjoin => 'scalarltjoinsel' },
- { oid => '2346', descr => 'less than or equal',
- oprname => '<=', oprleft => 'date', oprright => 'timestamp',
- oprresult => 'bool', oprcom => '>=(timestamp,date)',
- oprnegate => '>(date,timestamp)', oprcode => 'date_le_timestamp',
- oprrest => 'scalarlesel', oprjoin => 'scalarlejoinsel' },
- { oid => '2347', descr => 'equal',
- oprname => '=', oprcanmerge => 't', oprleft => 'date',
- oprright => 'timestamp', oprresult => 'bool', oprcom => '=(timestamp,date)',
- oprnegate => '<>(date,timestamp)', oprcode => 'date_eq_timestamp',
- oprrest => 'eqsel', oprjoin => 'eqjoinsel' },
- { oid => '2348', descr => 'greater than or equal',
- oprname => '>=', oprleft => 'date', oprright => 'timestamp',
- oprresult => 'bool', oprcom => '<=(timestamp,date)',
- oprnegate => '<(date,timestamp)', oprcode => 'date_ge_timestamp',
- oprrest => 'scalargesel', oprjoin => 'scalargejoinsel' },
- { oid => '2349', descr => 'greater than',
- oprname => '>', oprleft => 'date', oprright => 'timestamp',
- oprresult => 'bool', oprcom => '<(timestamp,date)',
- oprnegate => '<=(date,timestamp)', oprcode => 'date_gt_timestamp',
- oprrest => 'scalargtsel', oprjoin => 'scalargtjoinsel' },
- { oid => '2350', descr => 'not equal',
- oprname => '<>', oprleft => 'date', oprright => 'timestamp',
- oprresult => 'bool', oprcom => '<>(timestamp,date)',
- oprnegate => '=(date,timestamp)', oprcode => 'date_ne_timestamp',
- oprrest => 'neqsel', oprjoin => 'neqjoinsel' },
- { oid => '2358', descr => 'less than',
- oprname => '<', oprleft => 'date', oprright => 'timestamptz',
- oprresult => 'bool', oprcom => '>(timestamptz,date)',
- oprnegate => '>=(date,timestamptz)', oprcode => 'date_lt_timestamptz',
- oprrest => 'scalarltsel', oprjoin => 'scalarltjoinsel' },
- { oid => '2359', descr => 'less than or equal',
- oprname => '<=', oprleft => 'date', oprright => 'timestamptz',
- oprresult => 'bool', oprcom => '>=(timestamptz,date)',
- oprnegate => '>(date,timestamptz)', oprcode => 'date_le_timestamptz',
- oprrest => 'scalarlesel', oprjoin => 'scalarlejoinsel' },
- { oid => '2360', descr => 'equal',
- oprname => '=', oprcanmerge => 't', oprleft => 'date',
- oprright => 'timestamptz', oprresult => 'bool',
- oprcom => '=(timestamptz,date)', oprnegate => '<>(date,timestamptz)',
- oprcode => 'date_eq_timestamptz', oprrest => 'eqsel',
- oprjoin => 'eqjoinsel' },
- { oid => '2361', descr => 'greater than or equal',
- oprname => '>=', oprleft => 'date', oprright => 'timestamptz',
- oprresult => 'bool', oprcom => '<=(timestamptz,date)',
- oprnegate => '<(date,timestamptz)', oprcode => 'date_ge_timestamptz',
- oprrest => 'scalargesel', oprjoin => 'scalargejoinsel' },
- { oid => '2362', descr => 'greater than',
- oprname => '>', oprleft => 'date', oprright => 'timestamptz',
- oprresult => 'bool', oprcom => '<(timestamptz,date)',
- oprnegate => '<=(date,timestamptz)', oprcode => 'date_gt_timestamptz',
- oprrest => 'scalargtsel', oprjoin => 'scalargtjoinsel' },
- { oid => '2363', descr => 'not equal',
- oprname => '<>', oprleft => 'date', oprright => 'timestamptz',
- oprresult => 'bool', oprcom => '<>(timestamptz,date)',
- oprnegate => '=(date,timestamptz)', oprcode => 'date_ne_timestamptz',
- oprrest => 'neqsel', oprjoin => 'neqjoinsel' },
- { oid => '2371', descr => 'less than',
- oprname => '<', oprleft => 'timestamp', oprright => 'date',
- oprresult => 'bool', oprcom => '>(date,timestamp)',
- oprnegate => '>=(timestamp,date)', oprcode => 'timestamp_lt_date',
- oprrest => 'scalarltsel', oprjoin => 'scalarltjoinsel' },
- { oid => '2372', descr => 'less than or equal',
- oprname => '<=', oprleft => 'timestamp', oprright => 'date',
- oprresult => 'bool', oprcom => '>=(date,timestamp)',
- oprnegate => '>(timestamp,date)', oprcode => 'timestamp_le_date',
- oprrest => 'scalarlesel', oprjoin => 'scalarlejoinsel' },
- { oid => '2373', descr => 'equal',
- oprname => '=', oprcanmerge => 't', oprleft => 'timestamp',
- oprright => 'date', oprresult => 'bool', oprcom => '=(date,timestamp)',
- oprnegate => '<>(timestamp,date)', oprcode => 'timestamp_eq_date',
- oprrest => 'eqsel', oprjoin => 'eqjoinsel' },
- { oid => '2374', descr => 'greater than or equal',
- oprname => '>=', oprleft => 'timestamp', oprright => 'date',
- oprresult => 'bool', oprcom => '<=(date,timestamp)',
- oprnegate => '<(timestamp,date)', oprcode => 'timestamp_ge_date',
- oprrest => 'scalargesel', oprjoin => 'scalargejoinsel' },
- { oid => '2375', descr => 'greater than',
- oprname => '>', oprleft => 'timestamp', oprright => 'date',
- oprresult => 'bool', oprcom => '<(date,timestamp)',
- oprnegate => '<=(timestamp,date)', oprcode => 'timestamp_gt_date',
- oprrest => 'scalargtsel', oprjoin => 'scalargtjoinsel' },
- { oid => '2376', descr => 'not equal',
- oprname => '<>', oprleft => 'timestamp', oprright => 'date',
- oprresult => 'bool', oprcom => '<>(date,timestamp)',
- oprnegate => '=(timestamp,date)', oprcode => 'timestamp_ne_date',
- oprrest => 'neqsel', oprjoin => 'neqjoinsel' },
- { oid => '2384', descr => 'less than',
- oprname => '<', oprleft => 'timestamptz', oprright => 'date',
- oprresult => 'bool', oprcom => '>(date,timestamptz)',
- oprnegate => '>=(timestamptz,date)', oprcode => 'timestamptz_lt_date',
- oprrest => 'scalarltsel', oprjoin => 'scalarltjoinsel' },
- { oid => '2385', descr => 'less than or equal',
- oprname => '<=', oprleft => 'timestamptz', oprright => 'date',
- oprresult => 'bool', oprcom => '>=(date,timestamptz)',
- oprnegate => '>(timestamptz,date)', oprcode => 'timestamptz_le_date',
- oprrest => 'scalarlesel', oprjoin => 'scalarlejoinsel' },
- { oid => '2386', descr => 'equal',
- oprname => '=', oprcanmerge => 't', oprleft => 'timestamptz',
- oprright => 'date', oprresult => 'bool', oprcom => '=(date,timestamptz)',
- oprnegate => '<>(timestamptz,date)', oprcode => 'timestamptz_eq_date',
- oprrest => 'eqsel', oprjoin => 'eqjoinsel' },
- { oid => '2387', descr => 'greater than or equal',
- oprname => '>=', oprleft => 'timestamptz', oprright => 'date',
- oprresult => 'bool', oprcom => '<=(date,timestamptz)',
- oprnegate => '<(timestamptz,date)', oprcode => 'timestamptz_ge_date',
- oprrest => 'scalargesel', oprjoin => 'scalargejoinsel' },
- { oid => '2388', descr => 'greater than',
- oprname => '>', oprleft => 'timestamptz', oprright => 'date',
- oprresult => 'bool', oprcom => '<(date,timestamptz)',
- oprnegate => '<=(timestamptz,date)', oprcode => 'timestamptz_gt_date',
- oprrest => 'scalargtsel', oprjoin => 'scalargtjoinsel' },
- { oid => '2389', descr => 'not equal',
- oprname => '<>', oprleft => 'timestamptz', oprright => 'date',
- oprresult => 'bool', oprcom => '<>(date,timestamptz)',
- oprnegate => '=(timestamptz,date)', oprcode => 'timestamptz_ne_date',
- oprrest => 'neqsel', oprjoin => 'neqjoinsel' },
- # crosstype operations for timestamp vs. timestamptz
- { oid => '2534', descr => 'less than',
- oprname => '<', oprleft => 'timestamp', oprright => 'timestamptz',
- oprresult => 'bool', oprcom => '>(timestamptz,timestamp)',
- oprnegate => '>=(timestamp,timestamptz)',
- oprcode => 'timestamp_lt_timestamptz', oprrest => 'scalarltsel',
- oprjoin => 'scalarltjoinsel' },
- { oid => '2535', descr => 'less than or equal',
- oprname => '<=', oprleft => 'timestamp', oprright => 'timestamptz',
- oprresult => 'bool', oprcom => '>=(timestamptz,timestamp)',
- oprnegate => '>(timestamp,timestamptz)',
- oprcode => 'timestamp_le_timestamptz', oprrest => 'scalarlesel',
- oprjoin => 'scalarlejoinsel' },
- { oid => '2536', descr => 'equal',
- oprname => '=', oprcanmerge => 't', oprleft => 'timestamp',
- oprright => 'timestamptz', oprresult => 'bool',
- oprcom => '=(timestamptz,timestamp)',
- oprnegate => '<>(timestamp,timestamptz)',
- oprcode => 'timestamp_eq_timestamptz', oprrest => 'eqsel',
- oprjoin => 'eqjoinsel' },
- { oid => '2537', descr => 'greater than or equal',
- oprname => '>=', oprleft => 'timestamp', oprright => 'timestamptz',
- oprresult => 'bool', oprcom => '<=(timestamptz,timestamp)',
- oprnegate => '<(timestamp,timestamptz)',
- oprcode => 'timestamp_ge_timestamptz', oprrest => 'scalargesel',
- oprjoin => 'scalargejoinsel' },
- { oid => '2538', descr => 'greater than',
- oprname => '>', oprleft => 'timestamp', oprright => 'timestamptz',
- oprresult => 'bool', oprcom => '<(timestamptz,timestamp)',
- oprnegate => '<=(timestamp,timestamptz)',
- oprcode => 'timestamp_gt_timestamptz', oprrest => 'scalargtsel',
- oprjoin => 'scalargtjoinsel' },
- { oid => '2539', descr => 'not equal',
- oprname => '<>', oprleft => 'timestamp', oprright => 'timestamptz',
- oprresult => 'bool', oprcom => '<>(timestamptz,timestamp)',
- oprnegate => '=(timestamp,timestamptz)',
- oprcode => 'timestamp_ne_timestamptz', oprrest => 'neqsel',
- oprjoin => 'neqjoinsel' },
- { oid => '2540', descr => 'less than',
- oprname => '<', oprleft => 'timestamptz', oprright => 'timestamp',
- oprresult => 'bool', oprcom => '>(timestamp,timestamptz)',
- oprnegate => '>=(timestamptz,timestamp)',
- oprcode => 'timestamptz_lt_timestamp', oprrest => 'scalarltsel',
- oprjoin => 'scalarltjoinsel' },
- { oid => '2541', descr => 'less than or equal',
- oprname => '<=', oprleft => 'timestamptz', oprright => 'timestamp',
- oprresult => 'bool', oprcom => '>=(timestamp,timestamptz)',
- oprnegate => '>(timestamptz,timestamp)',
- oprcode => 'timestamptz_le_timestamp', oprrest => 'scalarlesel',
- oprjoin => 'scalarlejoinsel' },
- { oid => '2542', descr => 'equal',
- oprname => '=', oprcanmerge => 't', oprleft => 'timestamptz',
- oprright => 'timestamp', oprresult => 'bool',
- oprcom => '=(timestamp,timestamptz)',
- oprnegate => '<>(timestamptz,timestamp)',
- oprcode => 'timestamptz_eq_timestamp', oprrest => 'eqsel',
- oprjoin => 'eqjoinsel' },
- { oid => '2543', descr => 'greater than or equal',
- oprname => '>=', oprleft => 'timestamptz', oprright => 'timestamp',
- oprresult => 'bool', oprcom => '<=(timestamp,timestamptz)',
- oprnegate => '<(timestamptz,timestamp)',
- oprcode => 'timestamptz_ge_timestamp', oprrest => 'scalargesel',
- oprjoin => 'scalargejoinsel' },
- { oid => '2544', descr => 'greater than',
- oprname => '>', oprleft => 'timestamptz', oprright => 'timestamp',
- oprresult => 'bool', oprcom => '<(timestamp,timestamptz)',
- oprnegate => '<=(timestamptz,timestamp)',
- oprcode => 'timestamptz_gt_timestamp', oprrest => 'scalargtsel',
- oprjoin => 'scalargtjoinsel' },
- { oid => '2545', descr => 'not equal',
- oprname => '<>', oprleft => 'timestamptz', oprright => 'timestamp',
- oprresult => 'bool', oprcom => '<>(timestamp,timestamptz)',
- oprnegate => '=(timestamptz,timestamp)',
- oprcode => 'timestamptz_ne_timestamp', oprrest => 'neqsel',
- oprjoin => 'neqjoinsel' },
- # formerly-missing interval + datetime operators
- { oid => '2551', descr => 'add',
- oprname => '+', oprleft => 'interval', oprright => 'date',
- oprresult => 'timestamp', oprcom => '+(date,interval)',
- oprcode => 'interval_pl_date' },
- { oid => '2552', descr => 'add',
- oprname => '+', oprleft => 'interval', oprright => 'timetz',
- oprresult => 'timetz', oprcom => '+(timetz,interval)',
- oprcode => 'interval_pl_timetz' },
- { oid => '2553', descr => 'add',
- oprname => '+', oprleft => 'interval', oprright => 'timestamp',
- oprresult => 'timestamp', oprcom => '+(timestamp,interval)',
- oprcode => 'interval_pl_timestamp' },
- { oid => '2554', descr => 'add',
- oprname => '+', oprleft => 'interval', oprright => 'timestamptz',
- oprresult => 'timestamptz', oprcom => '+(timestamptz,interval)',
- oprcode => 'interval_pl_timestamptz' },
- { oid => '2555', descr => 'add',
- oprname => '+', oprleft => 'int4', oprright => 'date', oprresult => 'date',
- oprcom => '+(date,int4)', oprcode => 'integer_pl_date' },
- # new operators for Y-direction rtree opfamilies
- { oid => '2570', descr => 'is below',
- oprname => '<<|', oprleft => 'box', oprright => 'box', oprresult => 'bool',
- oprcode => 'box_below', oprrest => 'positionsel',
- oprjoin => 'positionjoinsel' },
- { oid => '2571', descr => 'overlaps or is below',
- oprname => '&<|', oprleft => 'box', oprright => 'box', oprresult => 'bool',
- oprcode => 'box_overbelow', oprrest => 'positionsel',
- oprjoin => 'positionjoinsel' },
- { oid => '2572', descr => 'overlaps or is above',
- oprname => '|&>', oprleft => 'box', oprright => 'box', oprresult => 'bool',
- oprcode => 'box_overabove', oprrest => 'positionsel',
- oprjoin => 'positionjoinsel' },
- { oid => '2573', descr => 'is above',
- oprname => '|>>', oprleft => 'box', oprright => 'box', oprresult => 'bool',
- oprcode => 'box_above', oprrest => 'positionsel',
- oprjoin => 'positionjoinsel' },
- { oid => '2574', descr => 'is below',
- oprname => '<<|', oprleft => 'polygon', oprright => 'polygon',
- oprresult => 'bool', oprcode => 'poly_below', oprrest => 'positionsel',
- oprjoin => 'positionjoinsel' },
- { oid => '2575', descr => 'overlaps or is below',
- oprname => '&<|', oprleft => 'polygon', oprright => 'polygon',
- oprresult => 'bool', oprcode => 'poly_overbelow', oprrest => 'positionsel',
- oprjoin => 'positionjoinsel' },
- { oid => '2576', descr => 'overlaps or is above',
- oprname => '|&>', oprleft => 'polygon', oprright => 'polygon',
- oprresult => 'bool', oprcode => 'poly_overabove', oprrest => 'positionsel',
- oprjoin => 'positionjoinsel' },
- { oid => '2577', descr => 'is above',
- oprname => '|>>', oprleft => 'polygon', oprright => 'polygon',
- oprresult => 'bool', oprcode => 'poly_above', oprrest => 'positionsel',
- oprjoin => 'positionjoinsel' },
- { oid => '2589', descr => 'overlaps or is below',
- oprname => '&<|', oprleft => 'circle', oprright => 'circle',
- oprresult => 'bool', oprcode => 'circle_overbelow', oprrest => 'positionsel',
- oprjoin => 'positionjoinsel' },
- { oid => '2590', descr => 'overlaps or is above',
- oprname => '|&>', oprleft => 'circle', oprright => 'circle',
- oprresult => 'bool', oprcode => 'circle_overabove', oprrest => 'positionsel',
- oprjoin => 'positionjoinsel' },
- # overlap/contains/contained for arrays
- { oid => '2750', oid_symbol => 'OID_ARRAY_OVERLAP_OP', descr => 'overlaps',
- oprname => '&&', oprleft => 'anyarray', oprright => 'anyarray',
- oprresult => 'bool', oprcom => '&&(anyarray,anyarray)',
- oprcode => 'arrayoverlap', oprrest => 'arraycontsel',
- oprjoin => 'arraycontjoinsel' },
- { oid => '2751', oid_symbol => 'OID_ARRAY_CONTAINS_OP', descr => 'contains',
- oprname => '@>', oprleft => 'anyarray', oprright => 'anyarray',
- oprresult => 'bool', oprcom => '<@(anyarray,anyarray)',
- oprcode => 'arraycontains', oprrest => 'arraycontsel',
- oprjoin => 'arraycontjoinsel' },
- { oid => '2752', oid_symbol => 'OID_ARRAY_CONTAINED_OP',
- descr => 'is contained by',
- oprname => '<@', oprleft => 'anyarray', oprright => 'anyarray',
- oprresult => 'bool', oprcom => '@>(anyarray,anyarray)',
- oprcode => 'arraycontained', oprrest => 'arraycontsel',
- oprjoin => 'arraycontjoinsel' },
- # capturing operators to preserve pre-8.3 behavior of text concatenation
- { oid => '2779', descr => 'concatenate',
- oprname => '||', oprleft => 'text', oprright => 'anynonarray',
- oprresult => 'text', oprcode => 'textanycat' },
- { oid => '2780', descr => 'concatenate',
- oprname => '||', oprleft => 'anynonarray', oprright => 'text',
- oprresult => 'text', oprcode => 'anytextcat' },
- # uuid operators
- { oid => '2972', descr => 'equal',
- oprname => '=', oprcanmerge => 't', oprcanhash => 't', oprleft => 'uuid',
- oprright => 'uuid', oprresult => 'bool', oprcom => '=(uuid,uuid)',
- oprnegate => '<>(uuid,uuid)', oprcode => 'uuid_eq', oprrest => 'eqsel',
- oprjoin => 'eqjoinsel' },
- { oid => '2973', descr => 'not equal',
- oprname => '<>', oprleft => 'uuid', oprright => 'uuid', oprresult => 'bool',
- oprcom => '<>(uuid,uuid)', oprnegate => '=(uuid,uuid)', oprcode => 'uuid_ne',
- oprrest => 'neqsel', oprjoin => 'neqjoinsel' },
- { oid => '2974', descr => 'less than',
- oprname => '<', oprleft => 'uuid', oprright => 'uuid', oprresult => 'bool',
- oprcom => '>(uuid,uuid)', oprnegate => '>=(uuid,uuid)', oprcode => 'uuid_lt',
- oprrest => 'scalarltsel', oprjoin => 'scalarltjoinsel' },
- { oid => '2975', descr => 'greater than',
- oprname => '>', oprleft => 'uuid', oprright => 'uuid', oprresult => 'bool',
- oprcom => '<(uuid,uuid)', oprnegate => '<=(uuid,uuid)', oprcode => 'uuid_gt',
- oprrest => 'scalargtsel', oprjoin => 'scalargtjoinsel' },
- { oid => '2976', descr => 'less than or equal',
- oprname => '<=', oprleft => 'uuid', oprright => 'uuid', oprresult => 'bool',
- oprcom => '>=(uuid,uuid)', oprnegate => '>(uuid,uuid)', oprcode => 'uuid_le',
- oprrest => 'scalarlesel', oprjoin => 'scalarlejoinsel' },
- { oid => '2977', descr => 'greater than or equal',
- oprname => '>=', oprleft => 'uuid', oprright => 'uuid', oprresult => 'bool',
- oprcom => '<=(uuid,uuid)', oprnegate => '<(uuid,uuid)', oprcode => 'uuid_ge',
- oprrest => 'scalargesel', oprjoin => 'scalargejoinsel' },
- # pg_lsn operators
- { oid => '3222', descr => 'equal',
- oprname => '=', oprcanmerge => 't', oprcanhash => 't', oprleft => 'pg_lsn',
- oprright => 'pg_lsn', oprresult => 'bool', oprcom => '=(pg_lsn,pg_lsn)',
- oprnegate => '<>(pg_lsn,pg_lsn)', oprcode => 'pg_lsn_eq', oprrest => 'eqsel',
- oprjoin => 'eqjoinsel' },
- { oid => '3223', descr => 'not equal',
- oprname => '<>', oprleft => 'pg_lsn', oprright => 'pg_lsn',
- oprresult => 'bool', oprcom => '<>(pg_lsn,pg_lsn)',
- oprnegate => '=(pg_lsn,pg_lsn)', oprcode => 'pg_lsn_ne', oprrest => 'neqsel',
- oprjoin => 'neqjoinsel' },
- { oid => '3224', descr => 'less than',
- oprname => '<', oprleft => 'pg_lsn', oprright => 'pg_lsn',
- oprresult => 'bool', oprcom => '>(pg_lsn,pg_lsn)',
- oprnegate => '>=(pg_lsn,pg_lsn)', oprcode => 'pg_lsn_lt',
- oprrest => 'scalarltsel', oprjoin => 'scalarltjoinsel' },
- { oid => '3225', descr => 'greater than',
- oprname => '>', oprleft => 'pg_lsn', oprright => 'pg_lsn',
- oprresult => 'bool', oprcom => '<(pg_lsn,pg_lsn)',
- oprnegate => '<=(pg_lsn,pg_lsn)', oprcode => 'pg_lsn_gt',
- oprrest => 'scalargtsel', oprjoin => 'scalargtjoinsel' },
- { oid => '3226', descr => 'less than or equal',
- oprname => '<=', oprleft => 'pg_lsn', oprright => 'pg_lsn',
- oprresult => 'bool', oprcom => '>=(pg_lsn,pg_lsn)',
- oprnegate => '>(pg_lsn,pg_lsn)', oprcode => 'pg_lsn_le',
- oprrest => 'scalarlesel', oprjoin => 'scalarlejoinsel' },
- { oid => '3227', descr => 'greater than or equal',
- oprname => '>=', oprleft => 'pg_lsn', oprright => 'pg_lsn',
- oprresult => 'bool', oprcom => '<=(pg_lsn,pg_lsn)',
- oprnegate => '<(pg_lsn,pg_lsn)', oprcode => 'pg_lsn_ge',
- oprrest => 'scalargesel', oprjoin => 'scalargejoinsel' },
- { oid => '3228', descr => 'minus',
- oprname => '-', oprleft => 'pg_lsn', oprright => 'pg_lsn',
- oprresult => 'numeric', oprcode => 'pg_lsn_mi' },
- { oid => '5025', descr => 'add',
- oprname => '+', oprleft => 'pg_lsn', oprright => 'numeric',
- oprresult => 'pg_lsn', oprcom => '+(numeric,pg_lsn)',
- oprcode => 'pg_lsn_pli' },
- { oid => '5026', descr => 'add',
- oprname => '+', oprleft => 'numeric', oprright => 'pg_lsn',
- oprresult => 'pg_lsn', oprcom => '+(pg_lsn,numeric)',
- oprcode => 'numeric_pl_pg_lsn' },
- { oid => '5027', descr => 'subtract',
- oprname => '-', oprleft => 'pg_lsn', oprright => 'numeric',
- oprresult => 'pg_lsn', oprcode => 'pg_lsn_mii' },
- # enum operators
- { oid => '3516', descr => 'equal',
- oprname => '=', oprcanmerge => 't', oprcanhash => 't', oprleft => 'anyenum',
- oprright => 'anyenum', oprresult => 'bool', oprcom => '=(anyenum,anyenum)',
- oprnegate => '<>(anyenum,anyenum)', oprcode => 'enum_eq', oprrest => 'eqsel',
- oprjoin => 'eqjoinsel' },
- { oid => '3517', descr => 'not equal',
- oprname => '<>', oprleft => 'anyenum', oprright => 'anyenum',
- oprresult => 'bool', oprcom => '<>(anyenum,anyenum)',
- oprnegate => '=(anyenum,anyenum)', oprcode => 'enum_ne', oprrest => 'neqsel',
- oprjoin => 'neqjoinsel' },
- { oid => '3518', descr => 'less than',
- oprname => '<', oprleft => 'anyenum', oprright => 'anyenum',
- oprresult => 'bool', oprcom => '>(anyenum,anyenum)',
- oprnegate => '>=(anyenum,anyenum)', oprcode => 'enum_lt',
- oprrest => 'scalarltsel', oprjoin => 'scalarltjoinsel' },
- { oid => '3519', descr => 'greater than',
- oprname => '>', oprleft => 'anyenum', oprright => 'anyenum',
- oprresult => 'bool', oprcom => '<(anyenum,anyenum)',
- oprnegate => '<=(anyenum,anyenum)', oprcode => 'enum_gt',
- oprrest => 'scalargtsel', oprjoin => 'scalargtjoinsel' },
- { oid => '3520', descr => 'less than or equal',
- oprname => '<=', oprleft => 'anyenum', oprright => 'anyenum',
- oprresult => 'bool', oprcom => '>=(anyenum,anyenum)',
- oprnegate => '>(anyenum,anyenum)', oprcode => 'enum_le',
- oprrest => 'scalarlesel', oprjoin => 'scalarlejoinsel' },
- { oid => '3521', descr => 'greater than or equal',
- oprname => '>=', oprleft => 'anyenum', oprright => 'anyenum',
- oprresult => 'bool', oprcom => '<=(anyenum,anyenum)',
- oprnegate => '<(anyenum,anyenum)', oprcode => 'enum_ge',
- oprrest => 'scalargesel', oprjoin => 'scalargejoinsel' },
- # tsearch operations
- { oid => '3627', descr => 'less than',
- oprname => '<', oprleft => 'tsvector', oprright => 'tsvector',
- oprresult => 'bool', oprcom => '>(tsvector,tsvector)',
- oprnegate => '>=(tsvector,tsvector)', oprcode => 'tsvector_lt',
- oprrest => 'scalarltsel', oprjoin => 'scalarltjoinsel' },
- { oid => '3628', descr => 'less than or equal',
- oprname => '<=', oprleft => 'tsvector', oprright => 'tsvector',
- oprresult => 'bool', oprcom => '>=(tsvector,tsvector)',
- oprnegate => '>(tsvector,tsvector)', oprcode => 'tsvector_le',
- oprrest => 'scalarlesel', oprjoin => 'scalarlejoinsel' },
- { oid => '3629', descr => 'equal',
- oprname => '=', oprcanmerge => 't', oprleft => 'tsvector',
- oprright => 'tsvector', oprresult => 'bool', oprcom => '=(tsvector,tsvector)',
- oprnegate => '<>(tsvector,tsvector)', oprcode => 'tsvector_eq',
- oprrest => 'eqsel', oprjoin => 'eqjoinsel' },
- { oid => '3630', descr => 'not equal',
- oprname => '<>', oprleft => 'tsvector', oprright => 'tsvector',
- oprresult => 'bool', oprcom => '<>(tsvector,tsvector)',
- oprnegate => '=(tsvector,tsvector)', oprcode => 'tsvector_ne',
- oprrest => 'neqsel', oprjoin => 'neqjoinsel' },
- { oid => '3631', descr => 'greater than or equal',
- oprname => '>=', oprleft => 'tsvector', oprright => 'tsvector',
- oprresult => 'bool', oprcom => '<=(tsvector,tsvector)',
- oprnegate => '<(tsvector,tsvector)', oprcode => 'tsvector_ge',
- oprrest => 'scalargesel', oprjoin => 'scalargejoinsel' },
- { oid => '3632', descr => 'greater than',
- oprname => '>', oprleft => 'tsvector', oprright => 'tsvector',
- oprresult => 'bool', oprcom => '<(tsvector,tsvector)',
- oprnegate => '<=(tsvector,tsvector)', oprcode => 'tsvector_gt',
- oprrest => 'scalargtsel', oprjoin => 'scalargtjoinsel' },
- { oid => '3633', descr => 'concatenate',
- oprname => '||', oprleft => 'tsvector', oprright => 'tsvector',
- oprresult => 'tsvector', oprcode => 'tsvector_concat' },
- { oid => '3636', descr => 'text search match',
- oprname => '@@', oprleft => 'tsvector', oprright => 'tsquery',
- oprresult => 'bool', oprcom => '@@(tsquery,tsvector)',
- oprcode => 'ts_match_vq', oprrest => 'tsmatchsel',
- oprjoin => 'tsmatchjoinsel' },
- { oid => '3637', descr => 'text search match',
- oprname => '@@', oprleft => 'tsquery', oprright => 'tsvector',
- oprresult => 'bool', oprcom => '@@(tsvector,tsquery)',
- oprcode => 'ts_match_qv', oprrest => 'tsmatchsel',
- oprjoin => 'tsmatchjoinsel' },
- { oid => '3660', descr => 'deprecated, use @@ instead',
- oprname => '@@@', oprleft => 'tsvector', oprright => 'tsquery',
- oprresult => 'bool', oprcom => '@@@(tsquery,tsvector)',
- oprcode => 'ts_match_vq', oprrest => 'tsmatchsel',
- oprjoin => 'tsmatchjoinsel' },
- { oid => '3661', descr => 'deprecated, use @@ instead',
- oprname => '@@@', oprleft => 'tsquery', oprright => 'tsvector',
- oprresult => 'bool', oprcom => '@@@(tsvector,tsquery)',
- oprcode => 'ts_match_qv', oprrest => 'tsmatchsel',
- oprjoin => 'tsmatchjoinsel' },
- { oid => '3674', descr => 'less than',
- oprname => '<', oprleft => 'tsquery', oprright => 'tsquery',
- oprresult => 'bool', oprcom => '>(tsquery,tsquery)',
- oprnegate => '>=(tsquery,tsquery)', oprcode => 'tsquery_lt',
- oprrest => 'scalarltsel', oprjoin => 'scalarltjoinsel' },
- { oid => '3675', descr => 'less than or equal',
- oprname => '<=', oprleft => 'tsquery', oprright => 'tsquery',
- oprresult => 'bool', oprcom => '>=(tsquery,tsquery)',
- oprnegate => '>(tsquery,tsquery)', oprcode => 'tsquery_le',
- oprrest => 'scalarlesel', oprjoin => 'scalarlejoinsel' },
- { oid => '3676', descr => 'equal',
- oprname => '=', oprcanmerge => 't', oprleft => 'tsquery',
- oprright => 'tsquery', oprresult => 'bool', oprcom => '=(tsquery,tsquery)',
- oprnegate => '<>(tsquery,tsquery)', oprcode => 'tsquery_eq',
- oprrest => 'eqsel', oprjoin => 'eqjoinsel' },
- { oid => '3677', descr => 'not equal',
- oprname => '<>', oprleft => 'tsquery', oprright => 'tsquery',
- oprresult => 'bool', oprcom => '<>(tsquery,tsquery)',
- oprnegate => '=(tsquery,tsquery)', oprcode => 'tsquery_ne',
- oprrest => 'neqsel', oprjoin => 'neqjoinsel' },
- { oid => '3678', descr => 'greater than or equal',
- oprname => '>=', oprleft => 'tsquery', oprright => 'tsquery',
- oprresult => 'bool', oprcom => '<=(tsquery,tsquery)',
- oprnegate => '<(tsquery,tsquery)', oprcode => 'tsquery_ge',
- oprrest => 'scalargesel', oprjoin => 'scalargejoinsel' },
- { oid => '3679', descr => 'greater than',
- oprname => '>', oprleft => 'tsquery', oprright => 'tsquery',
- oprresult => 'bool', oprcom => '<(tsquery,tsquery)',
- oprnegate => '<=(tsquery,tsquery)', oprcode => 'tsquery_gt',
- oprrest => 'scalargtsel', oprjoin => 'scalargtjoinsel' },
- { oid => '3680', descr => 'AND-concatenate',
- oprname => '&&', oprleft => 'tsquery', oprright => 'tsquery',
- oprresult => 'tsquery', oprcode => 'tsquery_and' },
- { oid => '3681', descr => 'OR-concatenate',
- oprname => '||', oprleft => 'tsquery', oprright => 'tsquery',
- oprresult => 'tsquery', oprcode => 'tsquery_or' },
- { oid => '5005', descr => 'phrase-concatenate',
- oprname => '<->', oprleft => 'tsquery', oprright => 'tsquery',
- oprresult => 'tsquery', oprcode => 'tsquery_phrase(tsquery,tsquery)' },
- { oid => '3682', descr => 'NOT tsquery',
- oprname => '!!', oprkind => 'l', oprleft => '0', oprright => 'tsquery',
- oprresult => 'tsquery', oprcode => 'tsquery_not' },
- { oid => '3693', descr => 'contains',
- oprname => '@>', oprleft => 'tsquery', oprright => 'tsquery',
- oprresult => 'bool', oprcom => '<@(tsquery,tsquery)',
- oprcode => 'tsq_mcontains', oprrest => 'matchingsel',
- oprjoin => 'matchingjoinsel' },
- { oid => '3694', descr => 'is contained by',
- oprname => '<@', oprleft => 'tsquery', oprright => 'tsquery',
- oprresult => 'bool', oprcom => '@>(tsquery,tsquery)',
- oprcode => 'tsq_mcontained', oprrest => 'matchingsel',
- oprjoin => 'matchingjoinsel' },
- { oid => '3762', descr => 'text search match',
- oprname => '@@', oprleft => 'text', oprright => 'text', oprresult => 'bool',
- oprcode => 'ts_match_tt', oprrest => 'matchingsel',
- oprjoin => 'matchingjoinsel' },
- { oid => '3763', descr => 'text search match',
- oprname => '@@', oprleft => 'text', oprright => 'tsquery',
- oprresult => 'bool', oprcode => 'ts_match_tq', oprrest => 'matchingsel',
- oprjoin => 'matchingjoinsel' },
- # generic record comparison operators
- { oid => '2988', oid_symbol => 'RECORD_EQ_OP', descr => 'equal',
- oprname => '=', oprcanmerge => 't', oprcanhash => 't', oprleft => 'record',
- oprright => 'record', oprresult => 'bool', oprcom => '=(record,record)',
- oprnegate => '<>(record,record)', oprcode => 'record_eq', oprrest => 'eqsel',
- oprjoin => 'eqjoinsel' },
- { oid => '2989', descr => 'not equal',
- oprname => '<>', oprleft => 'record', oprright => 'record',
- oprresult => 'bool', oprcom => '<>(record,record)',
- oprnegate => '=(record,record)', oprcode => 'record_ne', oprrest => 'neqsel',
- oprjoin => 'neqjoinsel' },
- { oid => '2990', oid_symbol => 'RECORD_LT_OP', descr => 'less than',
- oprname => '<', oprleft => 'record', oprright => 'record',
- oprresult => 'bool', oprcom => '>(record,record)',
- oprnegate => '>=(record,record)', oprcode => 'record_lt',
- oprrest => 'scalarltsel', oprjoin => 'scalarltjoinsel' },
- { oid => '2991', oid_symbol => 'RECORD_GT_OP', descr => 'greater than',
- oprname => '>', oprleft => 'record', oprright => 'record',
- oprresult => 'bool', oprcom => '<(record,record)',
- oprnegate => '<=(record,record)', oprcode => 'record_gt',
- oprrest => 'scalargtsel', oprjoin => 'scalargtjoinsel' },
- { oid => '2992', descr => 'less than or equal',
- oprname => '<=', oprleft => 'record', oprright => 'record',
- oprresult => 'bool', oprcom => '>=(record,record)',
- oprnegate => '>(record,record)', oprcode => 'record_le',
- oprrest => 'scalarlesel', oprjoin => 'scalarlejoinsel' },
- { oid => '2993', descr => 'greater than or equal',
- oprname => '>=', oprleft => 'record', oprright => 'record',
- oprresult => 'bool', oprcom => '<=(record,record)',
- oprnegate => '<(record,record)', oprcode => 'record_ge',
- oprrest => 'scalargesel', oprjoin => 'scalargejoinsel' },
- # byte-oriented tests for identical rows and fast sorting
- { oid => '3188', descr => 'identical',
- oprname => '*=', oprcanmerge => 't', oprleft => 'record',
- oprright => 'record', oprresult => 'bool', oprcom => '*=(record,record)',
- oprnegate => '*<>(record,record)', oprcode => 'record_image_eq',
- oprrest => 'eqsel', oprjoin => 'eqjoinsel' },
- { oid => '3189', descr => 'not identical',
- oprname => '*<>', oprleft => 'record', oprright => 'record',
- oprresult => 'bool', oprcom => '*<>(record,record)',
- oprnegate => '*=(record,record)', oprcode => 'record_image_ne',
- oprrest => 'neqsel', oprjoin => 'neqjoinsel' },
- { oid => '3190', descr => 'less than',
- oprname => '*<', oprleft => 'record', oprright => 'record',
- oprresult => 'bool', oprcom => '*>(record,record)',
- oprnegate => '*>=(record,record)', oprcode => 'record_image_lt',
- oprrest => 'scalarltsel', oprjoin => 'scalarltjoinsel' },
- { oid => '3191', descr => 'greater than',
- oprname => '*>', oprleft => 'record', oprright => 'record',
- oprresult => 'bool', oprcom => '*<(record,record)',
- oprnegate => '*<=(record,record)', oprcode => 'record_image_gt',
- oprrest => 'scalargtsel', oprjoin => 'scalargtjoinsel' },
- { oid => '3192', descr => 'less than or equal',
- oprname => '*<=', oprleft => 'record', oprright => 'record',
- oprresult => 'bool', oprcom => '*>=(record,record)',
- oprnegate => '*>(record,record)', oprcode => 'record_image_le',
- oprrest => 'scalarlesel', oprjoin => 'scalarlejoinsel' },
- { oid => '3193', descr => 'greater than or equal',
- oprname => '*>=', oprleft => 'record', oprright => 'record',
- oprresult => 'bool', oprcom => '*<=(record,record)',
- oprnegate => '*<(record,record)', oprcode => 'record_image_ge',
- oprrest => 'scalargesel', oprjoin => 'scalargejoinsel' },
- # generic range type operators
- { oid => '3882', descr => 'equal',
- oprname => '=', oprcanmerge => 't', oprcanhash => 't', oprleft => 'anyrange',
- oprright => 'anyrange', oprresult => 'bool', oprcom => '=(anyrange,anyrange)',
- oprnegate => '<>(anyrange,anyrange)', oprcode => 'range_eq',
- oprrest => 'eqsel', oprjoin => 'eqjoinsel' },
- { oid => '3883', descr => 'not equal',
- oprname => '<>', oprleft => 'anyrange', oprright => 'anyrange',
- oprresult => 'bool', oprcom => '<>(anyrange,anyrange)',
- oprnegate => '=(anyrange,anyrange)', oprcode => 'range_ne',
- oprrest => 'neqsel', oprjoin => 'neqjoinsel' },
- { oid => '3884', oid_symbol => 'OID_RANGE_LESS_OP', descr => 'less than',
- oprname => '<', oprleft => 'anyrange', oprright => 'anyrange',
- oprresult => 'bool', oprcom => '>(anyrange,anyrange)',
- oprnegate => '>=(anyrange,anyrange)', oprcode => 'range_lt',
- oprrest => 'rangesel', oprjoin => 'scalarltjoinsel' },
- { oid => '3885', oid_symbol => 'OID_RANGE_LESS_EQUAL_OP',
- descr => 'less than or equal',
- oprname => '<=', oprleft => 'anyrange', oprright => 'anyrange',
- oprresult => 'bool', oprcom => '>=(anyrange,anyrange)',
- oprnegate => '>(anyrange,anyrange)', oprcode => 'range_le',
- oprrest => 'rangesel', oprjoin => 'scalarlejoinsel' },
- { oid => '3886', oid_symbol => 'OID_RANGE_GREATER_EQUAL_OP',
- descr => 'greater than or equal',
- oprname => '>=', oprleft => 'anyrange', oprright => 'anyrange',
- oprresult => 'bool', oprcom => '<=(anyrange,anyrange)',
- oprnegate => '<(anyrange,anyrange)', oprcode => 'range_ge',
- oprrest => 'rangesel', oprjoin => 'scalargejoinsel' },
- { oid => '3887', oid_symbol => 'OID_RANGE_GREATER_OP',
- descr => 'greater than',
- oprname => '>', oprleft => 'anyrange', oprright => 'anyrange',
- oprresult => 'bool', oprcom => '<(anyrange,anyrange)',
- oprnegate => '<=(anyrange,anyrange)', oprcode => 'range_gt',
- oprrest => 'rangesel', oprjoin => 'scalargtjoinsel' },
- { oid => '3888', oid_symbol => 'OID_RANGE_OVERLAP_OP', descr => 'overlaps',
- oprname => '&&', oprleft => 'anyrange', oprright => 'anyrange',
- oprresult => 'bool', oprcom => '&&(anyrange,anyrange)',
- oprcode => 'range_overlaps', oprrest => 'rangesel',
- oprjoin => 'areajoinsel' },
- { oid => '3889', oid_symbol => 'OID_RANGE_CONTAINS_ELEM_OP',
- descr => 'contains',
- oprname => '@>', oprleft => 'anyrange', oprright => 'anyelement',
- oprresult => 'bool', oprcom => '<@(anyelement,anyrange)',
- oprcode => 'range_contains_elem', oprrest => 'rangesel',
- oprjoin => 'contjoinsel' },
- { oid => '3890', oid_symbol => 'OID_RANGE_CONTAINS_OP', descr => 'contains',
- oprname => '@>', oprleft => 'anyrange', oprright => 'anyrange',
- oprresult => 'bool', oprcom => '<@(anyrange,anyrange)',
- oprcode => 'range_contains', oprrest => 'rangesel',
- oprjoin => 'contjoinsel' },
- { oid => '3891', oid_symbol => 'OID_RANGE_ELEM_CONTAINED_OP',
- descr => 'is contained by',
- oprname => '<@', oprleft => 'anyelement', oprright => 'anyrange',
- oprresult => 'bool', oprcom => '@>(anyrange,anyelement)',
- oprcode => 'elem_contained_by_range', oprrest => 'rangesel',
- oprjoin => 'contjoinsel' },
- { oid => '3892', oid_symbol => 'OID_RANGE_CONTAINED_OP',
- descr => 'is contained by',
- oprname => '<@', oprleft => 'anyrange', oprright => 'anyrange',
- oprresult => 'bool', oprcom => '@>(anyrange,anyrange)',
- oprcode => 'range_contained_by', oprrest => 'rangesel',
- oprjoin => 'contjoinsel' },
- { oid => '3893', oid_symbol => 'OID_RANGE_LEFT_OP', descr => 'is left of',
- oprname => '<<', oprleft => 'anyrange', oprright => 'anyrange',
- oprresult => 'bool', oprcom => '>>(anyrange,anyrange)',
- oprcode => 'range_before', oprrest => 'rangesel',
- oprjoin => 'scalarltjoinsel' },
- { oid => '3894', oid_symbol => 'OID_RANGE_RIGHT_OP', descr => 'is right of',
- oprname => '>>', oprleft => 'anyrange', oprright => 'anyrange',
- oprresult => 'bool', oprcom => '<<(anyrange,anyrange)',
- oprcode => 'range_after', oprrest => 'rangesel',
- oprjoin => 'scalargtjoinsel' },
- { oid => '3895', oid_symbol => 'OID_RANGE_OVERLAPS_LEFT_OP',
- descr => 'overlaps or is left of',
- oprname => '&<', oprleft => 'anyrange', oprright => 'anyrange',
- oprresult => 'bool', oprcode => 'range_overleft', oprrest => 'rangesel',
- oprjoin => 'scalarltjoinsel' },
- { oid => '3896', oid_symbol => 'OID_RANGE_OVERLAPS_RIGHT_OP',
- descr => 'overlaps or is right of',
- oprname => '&>', oprleft => 'anyrange', oprright => 'anyrange',
- oprresult => 'bool', oprcode => 'range_overright', oprrest => 'rangesel',
- oprjoin => 'scalargtjoinsel' },
- { oid => '3897', descr => 'is adjacent to',
- oprname => '-|-', oprleft => 'anyrange', oprright => 'anyrange',
- oprresult => 'bool', oprcom => '-|-(anyrange,anyrange)',
- oprcode => 'range_adjacent', oprrest => 'matchingsel',
- oprjoin => 'matchingjoinsel' },
- { oid => '3898', descr => 'range union',
- oprname => '+', oprleft => 'anyrange', oprright => 'anyrange',
- oprresult => 'anyrange', oprcom => '+(anyrange,anyrange)',
- oprcode => 'range_union' },
- { oid => '3899', descr => 'range difference',
- oprname => '-', oprleft => 'anyrange', oprright => 'anyrange',
- oprresult => 'anyrange', oprcode => 'range_minus' },
- { oid => '3900', descr => 'range intersection',
- oprname => '*', oprleft => 'anyrange', oprright => 'anyrange',
- oprresult => 'anyrange', oprcom => '*(anyrange,anyrange)',
- oprcode => 'range_intersect' },
- { oid => '3962', descr => 'get json object field',
- oprname => '->', oprleft => 'json', oprright => 'text', oprresult => 'json',
- oprcode => 'json_object_field' },
- { oid => '3963', descr => 'get json object field as text',
- oprname => '->>', oprleft => 'json', oprright => 'text', oprresult => 'text',
- oprcode => 'json_object_field_text' },
- { oid => '3964', descr => 'get json array element',
- oprname => '->', oprleft => 'json', oprright => 'int4', oprresult => 'json',
- oprcode => 'json_array_element' },
- { oid => '3965', descr => 'get json array element as text',
- oprname => '->>', oprleft => 'json', oprright => 'int4', oprresult => 'text',
- oprcode => 'json_array_element_text' },
- { oid => '3966', descr => 'get value from json with path elements',
- oprname => '#>', oprleft => 'json', oprright => '_text', oprresult => 'json',
- oprcode => 'json_extract_path' },
- { oid => '3967', descr => 'get value from json as text with path elements',
- oprname => '#>>', oprleft => 'json', oprright => '_text', oprresult => 'text',
- oprcode => 'json_extract_path_text' },
- { oid => '3211', descr => 'get jsonb object field',
- oprname => '->', oprleft => 'jsonb', oprright => 'text', oprresult => 'jsonb',
- oprcode => 'jsonb_object_field' },
- { oid => '3477', descr => 'get jsonb object field as text',
- oprname => '->>', oprleft => 'jsonb', oprright => 'text', oprresult => 'text',
- oprcode => 'jsonb_object_field_text' },
- { oid => '3212', descr => 'get jsonb array element',
- oprname => '->', oprleft => 'jsonb', oprright => 'int4', oprresult => 'jsonb',
- oprcode => 'jsonb_array_element' },
- { oid => '3481', descr => 'get jsonb array element as text',
- oprname => '->>', oprleft => 'jsonb', oprright => 'int4', oprresult => 'text',
- oprcode => 'jsonb_array_element_text' },
- { oid => '3213', descr => 'get value from jsonb with path elements',
- oprname => '#>', oprleft => 'jsonb', oprright => '_text',
- oprresult => 'jsonb', oprcode => 'jsonb_extract_path' },
- { oid => '3206', descr => 'get value from jsonb as text with path elements',
- oprname => '#>>', oprleft => 'jsonb', oprright => '_text',
- oprresult => 'text', oprcode => 'jsonb_extract_path_text' },
- { oid => '3240', descr => 'equal',
- oprname => '=', oprcanmerge => 't', oprcanhash => 't', oprleft => 'jsonb',
- oprright => 'jsonb', oprresult => 'bool', oprcom => '=(jsonb,jsonb)',
- oprnegate => '<>(jsonb,jsonb)', oprcode => 'jsonb_eq', oprrest => 'eqsel',
- oprjoin => 'eqjoinsel' },
- { oid => '3241', descr => 'not equal',
- oprname => '<>', oprleft => 'jsonb', oprright => 'jsonb', oprresult => 'bool',
- oprcom => '<>(jsonb,jsonb)', oprnegate => '=(jsonb,jsonb)',
- oprcode => 'jsonb_ne', oprrest => 'neqsel', oprjoin => 'neqjoinsel' },
- { oid => '3242', descr => 'less than',
- oprname => '<', oprleft => 'jsonb', oprright => 'jsonb', oprresult => 'bool',
- oprcom => '>(jsonb,jsonb)', oprnegate => '>=(jsonb,jsonb)',
- oprcode => 'jsonb_lt', oprrest => 'scalarltsel',
- oprjoin => 'scalarltjoinsel' },
- { oid => '3243', descr => 'greater than',
- oprname => '>', oprleft => 'jsonb', oprright => 'jsonb', oprresult => 'bool',
- oprcom => '<(jsonb,jsonb)', oprnegate => '<=(jsonb,jsonb)',
- oprcode => 'jsonb_gt', oprrest => 'scalargtsel',
- oprjoin => 'scalargtjoinsel' },
- { oid => '3244', descr => 'less than or equal',
- oprname => '<=', oprleft => 'jsonb', oprright => 'jsonb', oprresult => 'bool',
- oprcom => '>=(jsonb,jsonb)', oprnegate => '>(jsonb,jsonb)',
- oprcode => 'jsonb_le', oprrest => 'scalarlesel',
- oprjoin => 'scalarlejoinsel' },
- { oid => '3245', descr => 'greater than or equal',
- oprname => '>=', oprleft => 'jsonb', oprright => 'jsonb', oprresult => 'bool',
- oprcom => '<=(jsonb,jsonb)', oprnegate => '<(jsonb,jsonb)',
- oprcode => 'jsonb_ge', oprrest => 'scalargesel',
- oprjoin => 'scalargejoinsel' },
- { oid => '3246', descr => 'contains',
- oprname => '@>', oprleft => 'jsonb', oprright => 'jsonb', oprresult => 'bool',
- oprcom => '<@(jsonb,jsonb)', oprcode => 'jsonb_contains',
- oprrest => 'matchingsel', oprjoin => 'matchingjoinsel' },
- { oid => '3247', descr => 'key exists',
- oprname => '?', oprleft => 'jsonb', oprright => 'text', oprresult => 'bool',
- oprcode => 'jsonb_exists', oprrest => 'matchingsel',
- oprjoin => 'matchingjoinsel' },
- { oid => '3248', descr => 'any key exists',
- oprname => '?|', oprleft => 'jsonb', oprright => '_text', oprresult => 'bool',
- oprcode => 'jsonb_exists_any', oprrest => 'matchingsel',
- oprjoin => 'matchingjoinsel' },
- { oid => '3249', descr => 'all keys exist',
- oprname => '?&', oprleft => 'jsonb', oprright => '_text', oprresult => 'bool',
- oprcode => 'jsonb_exists_all', oprrest => 'matchingsel',
- oprjoin => 'matchingjoinsel' },
- { oid => '3250', descr => 'is contained by',
- oprname => '<@', oprleft => 'jsonb', oprright => 'jsonb', oprresult => 'bool',
- oprcom => '@>(jsonb,jsonb)', oprcode => 'jsonb_contained',
- oprrest => 'matchingsel', oprjoin => 'matchingjoinsel' },
- { oid => '3284', descr => 'concatenate',
- oprname => '||', oprleft => 'jsonb', oprright => 'jsonb',
- oprresult => 'jsonb', oprcode => 'jsonb_concat' },
- { oid => '3285', descr => 'delete object field',
- oprname => '-', oprleft => 'jsonb', oprright => 'text', oprresult => 'jsonb',
- oprcode => 'jsonb_delete(jsonb,text)' },
- { oid => '3398', descr => 'delete object fields',
- oprname => '-', oprleft => 'jsonb', oprright => '_text', oprresult => 'jsonb',
- oprcode => 'jsonb_delete(jsonb,_text)' },
- { oid => '3286', descr => 'delete array element',
- oprname => '-', oprleft => 'jsonb', oprright => 'int4', oprresult => 'jsonb',
- oprcode => 'jsonb_delete(jsonb,int4)' },
- { oid => '3287', descr => 'delete path',
- oprname => '#-', oprleft => 'jsonb', oprright => '_text',
- oprresult => 'jsonb', oprcode => 'jsonb_delete_path' },
- { oid => '4012', descr => 'jsonpath exists',
- oprname => '@?', oprleft => 'jsonb', oprright => 'jsonpath',
- oprresult => 'bool', oprcode => 'jsonb_path_exists_opr(jsonb,jsonpath)',
- oprrest => 'matchingsel', oprjoin => 'matchingjoinsel' },
- { oid => '4013', descr => 'jsonpath match',
- oprname => '@@', oprleft => 'jsonb', oprright => 'jsonpath',
- oprresult => 'bool', oprcode => 'jsonb_path_match_opr(jsonb,jsonpath)',
- oprrest => 'matchingsel', oprjoin => 'matchingjoinsel' },
- { oid => '2860', descr => 'equal',
- oprname => '=', oprcanmerge => 't', oprcanhash => 't',
- oprleft => 'anymultirange', oprright => 'anymultirange', oprresult => 'bool',
- oprcom => '=(anymultirange,anymultirange)',
- oprnegate => '<>(anymultirange,anymultirange)', oprcode => 'multirange_eq',
- oprrest => 'eqsel', oprjoin => 'eqjoinsel' },
- { oid => '2861', descr => 'not equal',
- oprname => '<>', oprleft => 'anymultirange', oprright => 'anymultirange',
- oprresult => 'bool', oprcom => '<>(anymultirange,anymultirange)',
- oprnegate => '=(anymultirange,anymultirange)', oprcode => 'multirange_ne',
- oprrest => 'neqsel', oprjoin => 'neqjoinsel' },
- { oid => '2862', oid_symbol => 'OID_MULTIRANGE_LESS_OP', descr => 'less than',
- oprname => '<', oprleft => 'anymultirange', oprright => 'anymultirange',
- oprresult => 'bool', oprcom => '>(anymultirange,anymultirange)',
- oprnegate => '>=(anymultirange,anymultirange)', oprcode => 'multirange_lt',
- oprrest => 'multirangesel', oprjoin => 'scalarltjoinsel' },
- { oid => '2863', oid_symbol => 'OID_MULTIRANGE_LESS_EQUAL_OP',
- descr => 'less than or equal',
- oprname => '<=', oprleft => 'anymultirange', oprright => 'anymultirange',
- oprresult => 'bool', oprcom => '>=(anymultirange,anymultirange)',
- oprnegate => '>(anymultirange,anymultirange)', oprcode => 'multirange_le',
- oprrest => 'multirangesel', oprjoin => 'scalarlejoinsel' },
- { oid => '2864', oid_symbol => 'OID_MULTIRANGE_GREATER_EQUAL_OP',
- descr => 'greater than or equal',
- oprname => '>=', oprleft => 'anymultirange', oprright => 'anymultirange',
- oprresult => 'bool', oprcom => '<=(anymultirange,anymultirange)',
- oprnegate => '<(anymultirange,anymultirange)', oprcode => 'multirange_ge',
- oprrest => 'multirangesel', oprjoin => 'scalargejoinsel' },
- { oid => '2865', oid_symbol => 'OID_MULTIRANGE_GREATER_OP',
- descr => 'greater than',
- oprname => '>', oprleft => 'anymultirange', oprright => 'anymultirange',
- oprresult => 'bool', oprcom => '<(anymultirange,anymultirange)',
- oprnegate => '<=(anymultirange,anymultirange)', oprcode => 'multirange_gt',
- oprrest => 'multirangesel', oprjoin => 'scalargtjoinsel' },
- { oid => '2866', oid_symbol => 'OID_RANGE_OVERLAPS_MULTIRANGE_OP',
- descr => 'overlaps',
- oprname => '&&', oprleft => 'anyrange', oprright => 'anymultirange',
- oprresult => 'bool', oprcom => '&&(anymultirange,anyrange)',
- oprcode => 'range_overlaps_multirange', oprrest => 'multirangesel',
- oprjoin => 'areajoinsel' },
- { oid => '2867', oid_symbol => 'OID_MULTIRANGE_OVERLAPS_RANGE_OP',
- descr => 'overlaps',
- oprname => '&&', oprleft => 'anymultirange', oprright => 'anyrange',
- oprresult => 'bool', oprcom => '&&(anyrange,anymultirange)',
- oprcode => 'multirange_overlaps_range', oprrest => 'multirangesel',
- oprjoin => 'areajoinsel' },
- { oid => '2868', oid_symbol => 'OID_MULTIRANGE_OVERLAPS_MULTIRANGE_OP',
- descr => 'overlaps',
- oprname => '&&', oprleft => 'anymultirange', oprright => 'anymultirange',
- oprresult => 'bool', oprcom => '&&(anymultirange,anymultirange)',
- oprcode => 'multirange_overlaps_multirange', oprrest => 'multirangesel',
- oprjoin => 'areajoinsel' },
- { oid => '2869', oid_symbol => 'OID_MULTIRANGE_CONTAINS_ELEM_OP',
- descr => 'contains',
- oprname => '@>', oprleft => 'anymultirange', oprright => 'anyelement',
- oprresult => 'bool', oprcom => '<@(anyelement,anymultirange)',
- oprcode => 'multirange_contains_elem', oprrest => 'multirangesel',
- oprjoin => 'contjoinsel' },
- { oid => '2870', oid_symbol => 'OID_MULTIRANGE_CONTAINS_RANGE_OP',
- descr => 'contains',
- oprname => '@>', oprleft => 'anymultirange', oprright => 'anyrange',
- oprresult => 'bool', oprcom => '<@(anyrange,anymultirange)',
- oprcode => 'multirange_contains_range', oprrest => 'multirangesel',
- oprjoin => 'contjoinsel' },
- { oid => '2871', oid_symbol => 'OID_MULTIRANGE_CONTAINS_MULTIRANGE_OP',
- descr => 'contains',
- oprname => '@>', oprleft => 'anymultirange', oprright => 'anymultirange',
- oprresult => 'bool', oprcom => '<@(anymultirange,anymultirange)',
- oprcode => 'multirange_contains_multirange', oprrest => 'multirangesel',
- oprjoin => 'contjoinsel' },
- { oid => '2872', oid_symbol => 'OID_MULTIRANGE_ELEM_CONTAINED_OP',
- descr => 'is contained by',
- oprname => '<@', oprleft => 'anyelement', oprright => 'anymultirange',
- oprresult => 'bool', oprcom => '@>(anymultirange,anyelement)',
- oprcode => 'elem_contained_by_multirange', oprrest => 'multirangesel',
- oprjoin => 'contjoinsel' },
- { oid => '2873', oid_symbol => 'OID_MULTIRANGE_RANGE_CONTAINED_OP',
- descr => 'is contained by',
- oprname => '<@', oprleft => 'anyrange', oprright => 'anymultirange',
- oprresult => 'bool', oprcom => '@>(anymultirange,anyrange)',
- oprcode => 'range_contained_by_multirange', oprrest => 'multirangesel',
- oprjoin => 'contjoinsel' },
- { oid => '2874', oid_symbol => 'OID_MULTIRANGE_MULTIRANGE_CONTAINED_OP',
- descr => 'is contained by',
- oprname => '<@', oprleft => 'anymultirange', oprright => 'anymultirange',
- oprresult => 'bool', oprcom => '@>(anymultirange,anymultirange)',
- oprcode => 'multirange_contained_by_multirange', oprrest => 'multirangesel',
- oprjoin => 'contjoinsel' },
- { oid => '4539', oid_symbol => 'OID_RANGE_CONTAINS_MULTIRANGE_OP',
- descr => 'contains',
- oprname => '@>', oprleft => 'anyrange', oprright => 'anymultirange',
- oprresult => 'bool', oprcom => '<@(anymultirange,anyrange)',
- oprcode => 'range_contains_multirange', oprrest => 'multirangesel',
- oprjoin => 'contjoinsel' },
- { oid => '4540', oid_symbol => 'OID_RANGE_MULTIRANGE_CONTAINED_OP',
- descr => 'is contained by',
- oprname => '<@', oprleft => 'anymultirange', oprright => 'anyrange',
- oprresult => 'bool', oprcom => '@>(anyrange,anymultirange)',
- oprcode => 'multirange_contained_by_range', oprrest => 'multirangesel',
- oprjoin => 'contjoinsel' },
- { oid => '2875', oid_symbol => 'OID_RANGE_OVERLAPS_LEFT_MULTIRANGE_OP',
- descr => 'overlaps or is left of',
- oprname => '&<', oprleft => 'anyrange', oprright => 'anymultirange',
- oprresult => 'bool', oprcode => 'range_overleft_multirange',
- oprrest => 'multirangesel', oprjoin => 'scalarltjoinsel' },
- { oid => '2876', oid_symbol => 'OID_MULTIRANGE_OVERLAPS_LEFT_RANGE_OP',
- descr => 'overlaps or is left of',
- oprname => '&<', oprleft => 'anymultirange', oprright => 'anyrange',
- oprresult => 'bool', oprcode => 'multirange_overleft_range',
- oprrest => 'multirangesel', oprjoin => 'scalarltjoinsel' },
- { oid => '2877', oid_symbol => 'OID_MULTIRANGE_OVERLAPS_LEFT_MULTIRANGE_OP',
- descr => 'overlaps or is left of',
- oprname => '&<', oprleft => 'anymultirange', oprright => 'anymultirange',
- oprresult => 'bool', oprcode => 'multirange_overleft_multirange',
- oprrest => 'multirangesel', oprjoin => 'scalarltjoinsel' },
- { oid => '3585', oid_symbol => 'OID_RANGE_OVERLAPS_RIGHT_MULTIRANGE_OP',
- descr => 'overlaps or is right of',
- oprname => '&>', oprleft => 'anyrange', oprright => 'anymultirange',
- oprresult => 'bool', oprcode => 'range_overright_multirange',
- oprrest => 'multirangesel', oprjoin => 'scalargtjoinsel' },
- { oid => '4035', oid_symbol => 'OID_MULTIRANGE_OVERLAPS_RIGHT_RANGE_OP',
- descr => 'overlaps or is right of',
- oprname => '&>', oprleft => 'anymultirange', oprright => 'anyrange',
- oprresult => 'bool', oprcode => 'multirange_overright_range',
- oprrest => 'multirangesel', oprjoin => 'scalargtjoinsel' },
- { oid => '4142', oid_symbol => 'OID_MULTIRANGE_OVERLAPS_RIGHT_MULTIRANGE_OP',
- descr => 'overlaps or is right of',
- oprname => '&>', oprleft => 'anymultirange', oprright => 'anymultirange',
- oprresult => 'bool', oprcode => 'multirange_overright_multirange',
- oprrest => 'multirangesel', oprjoin => 'scalargtjoinsel' },
- { oid => '4179', oid_symbol => 'OID_RANGE_ADJACENT_MULTIRANGE_OP',
- descr => 'is adjacent to',
- oprname => '-|-', oprleft => 'anyrange', oprright => 'anymultirange',
- oprresult => 'bool', oprcom => '-|-(anymultirange,anyrange)',
- oprcode => 'range_adjacent_multirange', oprrest => 'matchingsel',
- oprjoin => 'matchingjoinsel' },
- { oid => '4180', oid_symbol => 'OID_MULTIRANGE_ADJACENT_RANGE_OP',
- descr => 'is adjacent to',
- oprname => '-|-', oprleft => 'anymultirange', oprright => 'anyrange',
- oprresult => 'bool', oprcom => '-|-(anyrange,anymultirange)',
- oprcode => 'multirange_adjacent_range', oprrest => 'matchingsel',
- oprjoin => 'matchingjoinsel' },
- { oid => '4198', oid_symbol => 'OID_MULTIRANGE_ADJACENT_MULTIRANGE_OP',
- descr => 'is adjacent to',
- oprname => '-|-', oprleft => 'anymultirange', oprright => 'anymultirange',
- oprresult => 'bool', oprcom => '-|-(anymultirange,anymultirange)',
- oprcode => 'multirange_adjacent_multirange', oprrest => 'matchingsel',
- oprjoin => 'matchingjoinsel' },
- { oid => '4392', descr => 'multirange union',
- oprname => '+', oprleft => 'anymultirange', oprright => 'anymultirange',
- oprresult => 'anymultirange', oprcom => '+(anymultirange,anymultirange)',
- oprcode => 'multirange_union' },
- { oid => '4393', descr => 'multirange minus',
- oprname => '-', oprleft => 'anymultirange', oprright => 'anymultirange',
- oprresult => 'anymultirange', oprcode => 'multirange_minus' },
- { oid => '4394', descr => 'multirange intersect',
- oprname => '*', oprleft => 'anymultirange', oprright => 'anymultirange',
- oprresult => 'anymultirange', oprcom => '*(anymultirange,anymultirange)',
- oprcode => 'multirange_intersect' },
- { oid => '4395', oid_symbol => 'OID_RANGE_LEFT_MULTIRANGE_OP',
- descr => 'is left of',
- oprname => '<<', oprleft => 'anyrange', oprright => 'anymultirange',
- oprresult => 'bool', oprcom => '>>(anymultirange,anyrange)',
- oprcode => 'range_before_multirange', oprrest => 'multirangesel',
- oprjoin => 'scalarltjoinsel' },
- { oid => '4396', oid_symbol => 'OID_MULTIRANGE_LEFT_RANGE_OP',
- descr => 'is left of',
- oprname => '<<', oprleft => 'anymultirange', oprright => 'anyrange',
- oprresult => 'bool', oprcom => '>>(anyrange,anymultirange)',
- oprcode => 'multirange_before_range', oprrest => 'multirangesel',
- oprjoin => 'scalarltjoinsel' },
- { oid => '4397', oid_symbol => 'OID_MULTIRANGE_LEFT_MULTIRANGE_OP',
- descr => 'is left of',
- oprname => '<<', oprleft => 'anymultirange', oprright => 'anymultirange',
- oprresult => 'bool', oprcom => '>>(anymultirange,anymultirange)',
- oprcode => 'multirange_before_multirange', oprrest => 'multirangesel',
- oprjoin => 'scalarltjoinsel' },
- { oid => '4398', oid_symbol => 'OID_RANGE_RIGHT_MULTIRANGE_OP',
- descr => 'is right of',
- oprname => '>>', oprleft => 'anyrange', oprright => 'anymultirange',
- oprresult => 'bool', oprcom => '<<(anymultirange,anyrange)',
- oprcode => 'range_after_multirange', oprrest => 'multirangesel',
- oprjoin => 'scalargtjoinsel' },
- { oid => '4399', oid_symbol => 'OID_MULTIRANGE_RIGHT_RANGE_OP',
- descr => 'is right of',
- oprname => '>>', oprleft => 'anymultirange', oprright => 'anyrange',
- oprresult => 'bool', oprcom => '<<(anyrange,anymultirange)',
- oprcode => 'multirange_after_range', oprrest => 'multirangesel',
- oprjoin => 'scalargtjoinsel' },
- { oid => '4400', oid_symbol => 'OID_MULTIRANGE_RIGHT_MULTIRANGE_OP',
- descr => 'is right of',
- oprname => '>>', oprleft => 'anymultirange', oprright => 'anymultirange',
- oprresult => 'bool', oprcom => '<<(anymultirange,anymultirange)',
- oprcode => 'multirange_after_multirange', oprrest => 'multirangesel',
- oprjoin => 'scalargtjoinsel' },
- ]
|