1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539 |
- select jsonb '{"a": 12}' @? '$';
- ?column?
- ----------
- t
- (1 row)
- select jsonb '{"a": 12}' @? '1';
- ?column?
- ----------
- t
- (1 row)
- select jsonb '{"a": 12}' @? '$.a.b';
- ?column?
- ----------
- f
- (1 row)
- select jsonb '{"a": 12}' @? '$.b';
- ?column?
- ----------
- f
- (1 row)
- select jsonb '{"a": 12}' @? '$.a + 2';
- ?column?
- ----------
- t
- (1 row)
- select jsonb '{"a": 12}' @? '$.b + 2';
- ?column?
- ----------
-
- (1 row)
- select jsonb '{"a": {"a": 12}}' @? '$.a.a';
- ?column?
- ----------
- t
- (1 row)
- select jsonb '{"a": {"a": 12}}' @? '$.*.a';
- ?column?
- ----------
- t
- (1 row)
- select jsonb '{"b": {"a": 12}}' @? '$.*.a';
- ?column?
- ----------
- t
- (1 row)
- select jsonb '{"b": {"a": 12}}' @? '$.*.b';
- ?column?
- ----------
- f
- (1 row)
- select jsonb '{"b": {"a": 12}}' @? 'strict $.*.b';
- ?column?
- ----------
-
- (1 row)
- select jsonb '{}' @? '$.*';
- ?column?
- ----------
- f
- (1 row)
- select jsonb '{"a": 1}' @? '$.*';
- ?column?
- ----------
- t
- (1 row)
- select jsonb '{"a": {"b": 1}}' @? 'lax $.**{1}';
- ?column?
- ----------
- t
- (1 row)
- select jsonb '{"a": {"b": 1}}' @? 'lax $.**{2}';
- ?column?
- ----------
- t
- (1 row)
- select jsonb '{"a": {"b": 1}}' @? 'lax $.**{3}';
- ?column?
- ----------
- f
- (1 row)
- select jsonb '[]' @? '$[*]';
- ?column?
- ----------
- f
- (1 row)
- select jsonb '[1]' @? '$[*]';
- ?column?
- ----------
- t
- (1 row)
- select jsonb '[1]' @? '$[1]';
- ?column?
- ----------
- f
- (1 row)
- select jsonb '[1]' @? 'strict $[1]';
- ?column?
- ----------
-
- (1 row)
- select jsonb_path_query('[1]', 'strict $[1]');
- ERROR: jsonpath array subscript is out of bounds
- select jsonb_path_query('[1]', 'strict $[1]', silent => true);
- jsonb_path_query
- ------------------
- (0 rows)
- select jsonb '[1]' @? 'lax $[10000000000000000]';
- ?column?
- ----------
-
- (1 row)
- select jsonb '[1]' @? 'strict $[10000000000000000]';
- ?column?
- ----------
-
- (1 row)
- select jsonb_path_query('[1]', 'lax $[10000000000000000]');
- ERROR: jsonpath array subscript is out of integer range
- select jsonb_path_query('[1]', 'strict $[10000000000000000]');
- ERROR: jsonpath array subscript is out of integer range
- select jsonb '[1]' @? '$[0]';
- ?column?
- ----------
- t
- (1 row)
- select jsonb '[1]' @? '$[0.3]';
- ?column?
- ----------
- t
- (1 row)
- select jsonb '[1]' @? '$[0.5]';
- ?column?
- ----------
- t
- (1 row)
- select jsonb '[1]' @? '$[0.9]';
- ?column?
- ----------
- t
- (1 row)
- select jsonb '[1]' @? '$[1.2]';
- ?column?
- ----------
- f
- (1 row)
- select jsonb '[1]' @? 'strict $[1.2]';
- ?column?
- ----------
-
- (1 row)
- select jsonb '{"a": [1,2,3], "b": [3,4,5]}' @? '$ ? (@.a[*] > @.b[*])';
- ?column?
- ----------
- f
- (1 row)
- select jsonb '{"a": [1,2,3], "b": [3,4,5]}' @? '$ ? (@.a[*] >= @.b[*])';
- ?column?
- ----------
- t
- (1 row)
- select jsonb '{"a": [1,2,3], "b": [3,4,"5"]}' @? '$ ? (@.a[*] >= @.b[*])';
- ?column?
- ----------
- t
- (1 row)
- select jsonb '{"a": [1,2,3], "b": [3,4,"5"]}' @? 'strict $ ? (@.a[*] >= @.b[*])';
- ?column?
- ----------
- f
- (1 row)
- select jsonb '{"a": [1,2,3], "b": [3,4,null]}' @? '$ ? (@.a[*] >= @.b[*])';
- ?column?
- ----------
- t
- (1 row)
- select jsonb '1' @? '$ ? ((@ == "1") is unknown)';
- ?column?
- ----------
- t
- (1 row)
- select jsonb '1' @? '$ ? ((@ == 1) is unknown)';
- ?column?
- ----------
- f
- (1 row)
- select jsonb '[{"a": 1}, {"a": 2}]' @? '$[0 to 1] ? (@.a > 1)';
- ?column?
- ----------
- t
- (1 row)
- select jsonb_path_exists('[{"a": 1}, {"a": 2}, 3]', 'lax $[*].a', silent => false);
- jsonb_path_exists
- -------------------
- t
- (1 row)
- select jsonb_path_exists('[{"a": 1}, {"a": 2}, 3]', 'lax $[*].a', silent => true);
- jsonb_path_exists
- -------------------
- t
- (1 row)
- select jsonb_path_exists('[{"a": 1}, {"a": 2}, 3]', 'strict $[*].a', silent => false);
- ERROR: jsonpath member accessor can only be applied to an object
- select jsonb_path_exists('[{"a": 1}, {"a": 2}, 3]', 'strict $[*].a', silent => true);
- jsonb_path_exists
- -------------------
-
- (1 row)
- select jsonb_path_query('1', 'lax $.a');
- jsonb_path_query
- ------------------
- (0 rows)
- select jsonb_path_query('1', 'strict $.a');
- ERROR: jsonpath member accessor can only be applied to an object
- select jsonb_path_query('1', 'strict $.*');
- ERROR: jsonpath wildcard member accessor can only be applied to an object
- select jsonb_path_query('1', 'strict $.a', silent => true);
- jsonb_path_query
- ------------------
- (0 rows)
- select jsonb_path_query('1', 'strict $.*', silent => true);
- jsonb_path_query
- ------------------
- (0 rows)
- select jsonb_path_query('[]', 'lax $.a');
- jsonb_path_query
- ------------------
- (0 rows)
- select jsonb_path_query('[]', 'strict $.a');
- ERROR: jsonpath member accessor can only be applied to an object
- select jsonb_path_query('[]', 'strict $.a', silent => true);
- jsonb_path_query
- ------------------
- (0 rows)
- select jsonb_path_query('{}', 'lax $.a');
- jsonb_path_query
- ------------------
- (0 rows)
- select jsonb_path_query('{}', 'strict $.a');
- ERROR: JSON object does not contain key "a"
- select jsonb_path_query('{}', 'strict $.a', silent => true);
- jsonb_path_query
- ------------------
- (0 rows)
- select jsonb_path_query('1', 'strict $[1]');
- ERROR: jsonpath array accessor can only be applied to an array
- select jsonb_path_query('1', 'strict $[*]');
- ERROR: jsonpath wildcard array accessor can only be applied to an array
- select jsonb_path_query('[]', 'strict $[1]');
- ERROR: jsonpath array subscript is out of bounds
- select jsonb_path_query('[]', 'strict $["a"]');
- ERROR: jsonpath array subscript is not a single numeric value
- select jsonb_path_query('1', 'strict $[1]', silent => true);
- jsonb_path_query
- ------------------
- (0 rows)
- select jsonb_path_query('1', 'strict $[*]', silent => true);
- jsonb_path_query
- ------------------
- (0 rows)
- select jsonb_path_query('[]', 'strict $[1]', silent => true);
- jsonb_path_query
- ------------------
- (0 rows)
- select jsonb_path_query('[]', 'strict $["a"]', silent => true);
- jsonb_path_query
- ------------------
- (0 rows)
- select jsonb_path_query('{"a": 12, "b": {"a": 13}}', '$.a');
- jsonb_path_query
- ------------------
- 12
- (1 row)
- select jsonb_path_query('{"a": 12, "b": {"a": 13}}', '$.b');
- jsonb_path_query
- ------------------
- {"a": 13}
- (1 row)
- select jsonb_path_query('{"a": 12, "b": {"a": 13}}', '$.*');
- jsonb_path_query
- ------------------
- 12
- {"a": 13}
- (2 rows)
- select jsonb_path_query('{"a": 12, "b": {"a": 13}}', 'lax $.*.a');
- jsonb_path_query
- ------------------
- 13
- (1 row)
- select jsonb_path_query('[12, {"a": 13}, {"b": 14}]', 'lax $[*].a');
- jsonb_path_query
- ------------------
- 13
- (1 row)
- select jsonb_path_query('[12, {"a": 13}, {"b": 14}]', 'lax $[*].*');
- jsonb_path_query
- ------------------
- 13
- 14
- (2 rows)
- select jsonb_path_query('[12, {"a": 13}, {"b": 14}]', 'lax $[0].a');
- jsonb_path_query
- ------------------
- (0 rows)
- select jsonb_path_query('[12, {"a": 13}, {"b": 14}]', 'lax $[1].a');
- jsonb_path_query
- ------------------
- 13
- (1 row)
- select jsonb_path_query('[12, {"a": 13}, {"b": 14}]', 'lax $[2].a');
- jsonb_path_query
- ------------------
- (0 rows)
- select jsonb_path_query('[12, {"a": 13}, {"b": 14}]', 'lax $[0,1].a');
- jsonb_path_query
- ------------------
- 13
- (1 row)
- select jsonb_path_query('[12, {"a": 13}, {"b": 14}]', 'lax $[0 to 10].a');
- jsonb_path_query
- ------------------
- 13
- (1 row)
- select jsonb_path_query('[12, {"a": 13}, {"b": 14}]', 'lax $[0 to 10 / 0].a');
- ERROR: division by zero
- select jsonb_path_query('[12, {"a": 13}, {"b": 14}, "ccc", true]', '$[2.5 - 1 to $.size() - 2]');
- jsonb_path_query
- ------------------
- {"a": 13}
- {"b": 14}
- "ccc"
- (3 rows)
- select jsonb_path_query('1', 'lax $[0]');
- jsonb_path_query
- ------------------
- 1
- (1 row)
- select jsonb_path_query('1', 'lax $[*]');
- jsonb_path_query
- ------------------
- 1
- (1 row)
- select jsonb_path_query('[1]', 'lax $[0]');
- jsonb_path_query
- ------------------
- 1
- (1 row)
- select jsonb_path_query('[1]', 'lax $[*]');
- jsonb_path_query
- ------------------
- 1
- (1 row)
- select jsonb_path_query('[1,2,3]', 'lax $[*]');
- jsonb_path_query
- ------------------
- 1
- 2
- 3
- (3 rows)
- select jsonb_path_query('[1,2,3]', 'strict $[*].a');
- ERROR: jsonpath member accessor can only be applied to an object
- select jsonb_path_query('[1,2,3]', 'strict $[*].a', silent => true);
- jsonb_path_query
- ------------------
- (0 rows)
- select jsonb_path_query('[]', '$[last]');
- jsonb_path_query
- ------------------
- (0 rows)
- select jsonb_path_query('[]', '$[last ? (exists(last))]');
- jsonb_path_query
- ------------------
- (0 rows)
- select jsonb_path_query('[]', 'strict $[last]');
- ERROR: jsonpath array subscript is out of bounds
- select jsonb_path_query('[]', 'strict $[last]', silent => true);
- jsonb_path_query
- ------------------
- (0 rows)
- select jsonb_path_query('[1]', '$[last]');
- jsonb_path_query
- ------------------
- 1
- (1 row)
- select jsonb_path_query('[1,2,3]', '$[last]');
- jsonb_path_query
- ------------------
- 3
- (1 row)
- select jsonb_path_query('[1,2,3]', '$[last - 1]');
- jsonb_path_query
- ------------------
- 2
- (1 row)
- select jsonb_path_query('[1,2,3]', '$[last ? (@.type() == "number")]');
- jsonb_path_query
- ------------------
- 3
- (1 row)
- select jsonb_path_query('[1,2,3]', '$[last ? (@.type() == "string")]');
- ERROR: jsonpath array subscript is not a single numeric value
- select jsonb_path_query('[1,2,3]', '$[last ? (@.type() == "string")]', silent => true);
- jsonb_path_query
- ------------------
- (0 rows)
- select * from jsonb_path_query('{"a": 10}', '$');
- jsonb_path_query
- ------------------
- {"a": 10}
- (1 row)
- select * from jsonb_path_query('{"a": 10}', '$ ? (@.a < $value)');
- ERROR: could not find jsonpath variable "value"
- select * from jsonb_path_query('{"a": 10}', '$ ? (@.a < $value)', '1');
- ERROR: "vars" argument is not an object
- DETAIL: Jsonpath parameters should be encoded as key-value pairs of "vars" object.
- select * from jsonb_path_query('{"a": 10}', '$ ? (@.a < $value)', '[{"value" : 13}]');
- ERROR: "vars" argument is not an object
- DETAIL: Jsonpath parameters should be encoded as key-value pairs of "vars" object.
- select * from jsonb_path_query('{"a": 10}', '$ ? (@.a < $value)', '{"value" : 13}');
- jsonb_path_query
- ------------------
- {"a": 10}
- (1 row)
- select * from jsonb_path_query('{"a": 10}', '$ ? (@.a < $value)', '{"value" : 8}');
- jsonb_path_query
- ------------------
- (0 rows)
- select * from jsonb_path_query('{"a": 10}', '$.a ? (@ < $value)', '{"value" : 13}');
- jsonb_path_query
- ------------------
- 10
- (1 row)
- select * from jsonb_path_query('[10,11,12,13,14,15]', '$[*] ? (@ < $value)', '{"value" : 13}');
- jsonb_path_query
- ------------------
- 10
- 11
- 12
- (3 rows)
- select * from jsonb_path_query('[10,11,12,13,14,15]', '$[0,1] ? (@ < $x.value)', '{"x": {"value" : 13}}');
- jsonb_path_query
- ------------------
- 10
- 11
- (2 rows)
- select * from jsonb_path_query('[10,11,12,13,14,15]', '$[0 to 2] ? (@ < $value)', '{"value" : 15}');
- jsonb_path_query
- ------------------
- 10
- 11
- 12
- (3 rows)
- select * from jsonb_path_query('[1,"1",2,"2",null]', '$[*] ? (@ == "1")');
- jsonb_path_query
- ------------------
- "1"
- (1 row)
- select * from jsonb_path_query('[1,"1",2,"2",null]', '$[*] ? (@ == $value)', '{"value" : "1"}');
- jsonb_path_query
- ------------------
- "1"
- (1 row)
- select * from jsonb_path_query('[1,"1",2,"2",null]', '$[*] ? (@ == $value)', '{"value" : null}');
- jsonb_path_query
- ------------------
- null
- (1 row)
- select * from jsonb_path_query('[1, "2", null]', '$[*] ? (@ != null)');
- jsonb_path_query
- ------------------
- 1
- "2"
- (2 rows)
- select * from jsonb_path_query('[1, "2", null]', '$[*] ? (@ == null)');
- jsonb_path_query
- ------------------
- null
- (1 row)
- select * from jsonb_path_query('{}', '$ ? (@ == @)');
- jsonb_path_query
- ------------------
- (0 rows)
- select * from jsonb_path_query('[]', 'strict $ ? (@ == @)');
- jsonb_path_query
- ------------------
- (0 rows)
- select jsonb_path_query('{"a": {"b": 1}}', 'lax $.**');
- jsonb_path_query
- ------------------
- {"a": {"b": 1}}
- {"b": 1}
- 1
- (3 rows)
- select jsonb_path_query('{"a": {"b": 1}}', 'lax $.**{0}');
- jsonb_path_query
- ------------------
- {"a": {"b": 1}}
- (1 row)
- select jsonb_path_query('{"a": {"b": 1}}', 'lax $.**{0 to last}');
- jsonb_path_query
- ------------------
- {"a": {"b": 1}}
- {"b": 1}
- 1
- (3 rows)
- select jsonb_path_query('{"a": {"b": 1}}', 'lax $.**{1}');
- jsonb_path_query
- ------------------
- {"b": 1}
- (1 row)
- select jsonb_path_query('{"a": {"b": 1}}', 'lax $.**{1 to last}');
- jsonb_path_query
- ------------------
- {"b": 1}
- 1
- (2 rows)
- select jsonb_path_query('{"a": {"b": 1}}', 'lax $.**{2}');
- jsonb_path_query
- ------------------
- 1
- (1 row)
- select jsonb_path_query('{"a": {"b": 1}}', 'lax $.**{2 to last}');
- jsonb_path_query
- ------------------
- 1
- (1 row)
- select jsonb_path_query('{"a": {"b": 1}}', 'lax $.**{3 to last}');
- jsonb_path_query
- ------------------
- (0 rows)
- select jsonb_path_query('{"a": {"b": 1}}', 'lax $.**{last}');
- jsonb_path_query
- ------------------
- 1
- (1 row)
- select jsonb_path_query('{"a": {"b": 1}}', 'lax $.**.b ? (@ > 0)');
- jsonb_path_query
- ------------------
- 1
- (1 row)
- select jsonb_path_query('{"a": {"b": 1}}', 'lax $.**{0}.b ? (@ > 0)');
- jsonb_path_query
- ------------------
- (0 rows)
- select jsonb_path_query('{"a": {"b": 1}}', 'lax $.**{1}.b ? (@ > 0)');
- jsonb_path_query
- ------------------
- 1
- (1 row)
- select jsonb_path_query('{"a": {"b": 1}}', 'lax $.**{0 to last}.b ? (@ > 0)');
- jsonb_path_query
- ------------------
- 1
- (1 row)
- select jsonb_path_query('{"a": {"b": 1}}', 'lax $.**{1 to last}.b ? (@ > 0)');
- jsonb_path_query
- ------------------
- 1
- (1 row)
- select jsonb_path_query('{"a": {"b": 1}}', 'lax $.**{1 to 2}.b ? (@ > 0)');
- jsonb_path_query
- ------------------
- 1
- (1 row)
- select jsonb_path_query('{"a": {"c": {"b": 1}}}', 'lax $.**.b ? (@ > 0)');
- jsonb_path_query
- ------------------
- 1
- (1 row)
- select jsonb_path_query('{"a": {"c": {"b": 1}}}', 'lax $.**{0}.b ? (@ > 0)');
- jsonb_path_query
- ------------------
- (0 rows)
- select jsonb_path_query('{"a": {"c": {"b": 1}}}', 'lax $.**{1}.b ? (@ > 0)');
- jsonb_path_query
- ------------------
- (0 rows)
- select jsonb_path_query('{"a": {"c": {"b": 1}}}', 'lax $.**{0 to last}.b ? (@ > 0)');
- jsonb_path_query
- ------------------
- 1
- (1 row)
- select jsonb_path_query('{"a": {"c": {"b": 1}}}', 'lax $.**{1 to last}.b ? (@ > 0)');
- jsonb_path_query
- ------------------
- 1
- (1 row)
- select jsonb_path_query('{"a": {"c": {"b": 1}}}', 'lax $.**{1 to 2}.b ? (@ > 0)');
- jsonb_path_query
- ------------------
- 1
- (1 row)
- select jsonb_path_query('{"a": {"c": {"b": 1}}}', 'lax $.**{2 to 3}.b ? (@ > 0)');
- jsonb_path_query
- ------------------
- 1
- (1 row)
- select jsonb '{"a": {"b": 1}}' @? '$.**.b ? ( @ > 0)';
- ?column?
- ----------
- t
- (1 row)
- select jsonb '{"a": {"b": 1}}' @? '$.**{0}.b ? ( @ > 0)';
- ?column?
- ----------
- f
- (1 row)
- select jsonb '{"a": {"b": 1}}' @? '$.**{1}.b ? ( @ > 0)';
- ?column?
- ----------
- t
- (1 row)
- select jsonb '{"a": {"b": 1}}' @? '$.**{0 to last}.b ? ( @ > 0)';
- ?column?
- ----------
- t
- (1 row)
- select jsonb '{"a": {"b": 1}}' @? '$.**{1 to last}.b ? ( @ > 0)';
- ?column?
- ----------
- t
- (1 row)
- select jsonb '{"a": {"b": 1}}' @? '$.**{1 to 2}.b ? ( @ > 0)';
- ?column?
- ----------
- t
- (1 row)
- select jsonb '{"a": {"c": {"b": 1}}}' @? '$.**.b ? ( @ > 0)';
- ?column?
- ----------
- t
- (1 row)
- select jsonb '{"a": {"c": {"b": 1}}}' @? '$.**{0}.b ? ( @ > 0)';
- ?column?
- ----------
- f
- (1 row)
- select jsonb '{"a": {"c": {"b": 1}}}' @? '$.**{1}.b ? ( @ > 0)';
- ?column?
- ----------
- f
- (1 row)
- select jsonb '{"a": {"c": {"b": 1}}}' @? '$.**{0 to last}.b ? ( @ > 0)';
- ?column?
- ----------
- t
- (1 row)
- select jsonb '{"a": {"c": {"b": 1}}}' @? '$.**{1 to last}.b ? ( @ > 0)';
- ?column?
- ----------
- t
- (1 row)
- select jsonb '{"a": {"c": {"b": 1}}}' @? '$.**{1 to 2}.b ? ( @ > 0)';
- ?column?
- ----------
- t
- (1 row)
- select jsonb '{"a": {"c": {"b": 1}}}' @? '$.**{2 to 3}.b ? ( @ > 0)';
- ?column?
- ----------
- t
- (1 row)
- select jsonb_path_query('{"g": {"x": 2}}', '$.g ? (exists (@.x))');
- jsonb_path_query
- ------------------
- {"x": 2}
- (1 row)
- select jsonb_path_query('{"g": {"x": 2}}', '$.g ? (exists (@.y))');
- jsonb_path_query
- ------------------
- (0 rows)
- select jsonb_path_query('{"g": {"x": 2}}', '$.g ? (exists (@.x ? (@ >= 2) ))');
- jsonb_path_query
- ------------------
- {"x": 2}
- (1 row)
- select jsonb_path_query('{"g": [{"x": 2}, {"y": 3}]}', 'lax $.g ? (exists (@.x))');
- jsonb_path_query
- ------------------
- {"x": 2}
- (1 row)
- select jsonb_path_query('{"g": [{"x": 2}, {"y": 3}]}', 'lax $.g ? (exists (@.x + "3"))');
- jsonb_path_query
- ------------------
- (0 rows)
- select jsonb_path_query('{"g": [{"x": 2}, {"y": 3}]}', 'lax $.g ? ((exists (@.x + "3")) is unknown)');
- jsonb_path_query
- ------------------
- {"x": 2}
- {"y": 3}
- (2 rows)
- select jsonb_path_query('{"g": [{"x": 2}, {"y": 3}]}', 'strict $.g[*] ? (exists (@.x))');
- jsonb_path_query
- ------------------
- {"x": 2}
- (1 row)
- select jsonb_path_query('{"g": [{"x": 2}, {"y": 3}]}', 'strict $.g[*] ? ((exists (@.x)) is unknown)');
- jsonb_path_query
- ------------------
- {"y": 3}
- (1 row)
- select jsonb_path_query('{"g": [{"x": 2}, {"y": 3}]}', 'strict $.g ? (exists (@[*].x))');
- jsonb_path_query
- ------------------
- (0 rows)
- select jsonb_path_query('{"g": [{"x": 2}, {"y": 3}]}', 'strict $.g ? ((exists (@[*].x)) is unknown)');
- jsonb_path_query
- ----------------------
- [{"x": 2}, {"y": 3}]
- (1 row)
- --test ternary logic
- select
- x, y,
- jsonb_path_query(
- '[true, false, null]',
- '$[*] ? (@ == true && ($x == true && $y == true) ||
- @ == false && !($x == true && $y == true) ||
- @ == null && ($x == true && $y == true) is unknown)',
- jsonb_build_object('x', x, 'y', y)
- ) as "x && y"
- from
- (values (jsonb 'true'), ('false'), ('"null"')) x(x),
- (values (jsonb 'true'), ('false'), ('"null"')) y(y);
- x | y | x && y
- --------+--------+--------
- true | true | true
- true | false | false
- true | "null" | null
- false | true | false
- false | false | false
- false | "null" | false
- "null" | true | null
- "null" | false | false
- "null" | "null" | null
- (9 rows)
- select
- x, y,
- jsonb_path_query(
- '[true, false, null]',
- '$[*] ? (@ == true && ($x == true || $y == true) ||
- @ == false && !($x == true || $y == true) ||
- @ == null && ($x == true || $y == true) is unknown)',
- jsonb_build_object('x', x, 'y', y)
- ) as "x || y"
- from
- (values (jsonb 'true'), ('false'), ('"null"')) x(x),
- (values (jsonb 'true'), ('false'), ('"null"')) y(y);
- x | y | x || y
- --------+--------+--------
- true | true | true
- true | false | true
- true | "null" | true
- false | true | true
- false | false | false
- false | "null" | null
- "null" | true | true
- "null" | false | null
- "null" | "null" | null
- (9 rows)
- select jsonb '{"a": 1, "b":1}' @? '$ ? (@.a == @.b)';
- ?column?
- ----------
- t
- (1 row)
- select jsonb '{"c": {"a": 1, "b":1}}' @? '$ ? (@.a == @.b)';
- ?column?
- ----------
- f
- (1 row)
- select jsonb '{"c": {"a": 1, "b":1}}' @? '$.c ? (@.a == @.b)';
- ?column?
- ----------
- t
- (1 row)
- select jsonb '{"c": {"a": 1, "b":1}}' @? '$.c ? ($.c.a == @.b)';
- ?column?
- ----------
- t
- (1 row)
- select jsonb '{"c": {"a": 1, "b":1}}' @? '$.* ? (@.a == @.b)';
- ?column?
- ----------
- t
- (1 row)
- select jsonb '{"a": 1, "b":1}' @? '$.** ? (@.a == @.b)';
- ?column?
- ----------
- t
- (1 row)
- select jsonb '{"c": {"a": 1, "b":1}}' @? '$.** ? (@.a == @.b)';
- ?column?
- ----------
- t
- (1 row)
- select jsonb_path_query('{"c": {"a": 2, "b":1}}', '$.** ? (@.a == 1 + 1)');
- jsonb_path_query
- ------------------
- {"a": 2, "b": 1}
- (1 row)
- select jsonb_path_query('{"c": {"a": 2, "b":1}}', '$.** ? (@.a == (1 + 1))');
- jsonb_path_query
- ------------------
- {"a": 2, "b": 1}
- (1 row)
- select jsonb_path_query('{"c": {"a": 2, "b":1}}', '$.** ? (@.a == @.b + 1)');
- jsonb_path_query
- ------------------
- {"a": 2, "b": 1}
- (1 row)
- select jsonb_path_query('{"c": {"a": 2, "b":1}}', '$.** ? (@.a == (@.b + 1))');
- jsonb_path_query
- ------------------
- {"a": 2, "b": 1}
- (1 row)
- select jsonb '{"c": {"a": -1, "b":1}}' @? '$.** ? (@.a == - 1)';
- ?column?
- ----------
- t
- (1 row)
- select jsonb '{"c": {"a": -1, "b":1}}' @? '$.** ? (@.a == -1)';
- ?column?
- ----------
- t
- (1 row)
- select jsonb '{"c": {"a": -1, "b":1}}' @? '$.** ? (@.a == -@.b)';
- ?column?
- ----------
- t
- (1 row)
- select jsonb '{"c": {"a": -1, "b":1}}' @? '$.** ? (@.a == - @.b)';
- ?column?
- ----------
- t
- (1 row)
- select jsonb '{"c": {"a": 0, "b":1}}' @? '$.** ? (@.a == 1 - @.b)';
- ?column?
- ----------
- t
- (1 row)
- select jsonb '{"c": {"a": 2, "b":1}}' @? '$.** ? (@.a == 1 - - @.b)';
- ?column?
- ----------
- t
- (1 row)
- select jsonb '{"c": {"a": 0, "b":1}}' @? '$.** ? (@.a == 1 - +@.b)';
- ?column?
- ----------
- t
- (1 row)
- select jsonb '[1,2,3]' @? '$ ? (+@[*] > +2)';
- ?column?
- ----------
- t
- (1 row)
- select jsonb '[1,2,3]' @? '$ ? (+@[*] > +3)';
- ?column?
- ----------
- f
- (1 row)
- select jsonb '[1,2,3]' @? '$ ? (-@[*] < -2)';
- ?column?
- ----------
- t
- (1 row)
- select jsonb '[1,2,3]' @? '$ ? (-@[*] < -3)';
- ?column?
- ----------
- f
- (1 row)
- select jsonb '1' @? '$ ? ($ > 0)';
- ?column?
- ----------
- t
- (1 row)
- -- arithmetic errors
- select jsonb_path_query('[1,2,0,3]', '$[*] ? (2 / @ > 0)');
- jsonb_path_query
- ------------------
- 1
- 2
- 3
- (3 rows)
- select jsonb_path_query('[1,2,0,3]', '$[*] ? ((2 / @ > 0) is unknown)');
- jsonb_path_query
- ------------------
- 0
- (1 row)
- select jsonb_path_query('0', '1 / $');
- ERROR: division by zero
- select jsonb_path_query('0', '1 / $ + 2');
- ERROR: division by zero
- select jsonb_path_query('0', '-(3 + 1 % $)');
- ERROR: division by zero
- select jsonb_path_query('1', '$ + "2"');
- ERROR: right operand of jsonpath operator + is not a single numeric value
- select jsonb_path_query('[1, 2]', '3 * $');
- ERROR: right operand of jsonpath operator * is not a single numeric value
- select jsonb_path_query('"a"', '-$');
- ERROR: operand of unary jsonpath operator - is not a numeric value
- select jsonb_path_query('[1,"2",3]', '+$');
- ERROR: operand of unary jsonpath operator + is not a numeric value
- select jsonb_path_query('1', '$ + "2"', silent => true);
- jsonb_path_query
- ------------------
- (0 rows)
- select jsonb_path_query('[1, 2]', '3 * $', silent => true);
- jsonb_path_query
- ------------------
- (0 rows)
- select jsonb_path_query('"a"', '-$', silent => true);
- jsonb_path_query
- ------------------
- (0 rows)
- select jsonb_path_query('[1,"2",3]', '+$', silent => true);
- jsonb_path_query
- ------------------
- 1
- (1 row)
- select jsonb '["1",2,0,3]' @? '-$[*]';
- ?column?
- ----------
- t
- (1 row)
- select jsonb '[1,"2",0,3]' @? '-$[*]';
- ?column?
- ----------
- t
- (1 row)
- select jsonb '["1",2,0,3]' @? 'strict -$[*]';
- ?column?
- ----------
-
- (1 row)
- select jsonb '[1,"2",0,3]' @? 'strict -$[*]';
- ?column?
- ----------
-
- (1 row)
- -- unwrapping of operator arguments in lax mode
- select jsonb_path_query('{"a": [2]}', 'lax $.a * 3');
- jsonb_path_query
- ------------------
- 6
- (1 row)
- select jsonb_path_query('{"a": [2]}', 'lax $.a + 3');
- jsonb_path_query
- ------------------
- 5
- (1 row)
- select jsonb_path_query('{"a": [2, 3, 4]}', 'lax -$.a');
- jsonb_path_query
- ------------------
- -2
- -3
- -4
- (3 rows)
- -- should fail
- select jsonb_path_query('{"a": [1, 2]}', 'lax $.a * 3');
- ERROR: left operand of jsonpath operator * is not a single numeric value
- select jsonb_path_query('{"a": [1, 2]}', 'lax $.a * 3', silent => true);
- jsonb_path_query
- ------------------
- (0 rows)
- -- extension: boolean expressions
- select jsonb_path_query('2', '$ > 1');
- jsonb_path_query
- ------------------
- true
- (1 row)
- select jsonb_path_query('2', '$ <= 1');
- jsonb_path_query
- ------------------
- false
- (1 row)
- select jsonb_path_query('2', '$ == "2"');
- jsonb_path_query
- ------------------
- null
- (1 row)
- select jsonb '2' @? '$ == "2"';
- ?column?
- ----------
- t
- (1 row)
- select jsonb '2' @@ '$ > 1';
- ?column?
- ----------
- t
- (1 row)
- select jsonb '2' @@ '$ <= 1';
- ?column?
- ----------
- f
- (1 row)
- select jsonb '2' @@ '$ == "2"';
- ?column?
- ----------
-
- (1 row)
- select jsonb '2' @@ '1';
- ?column?
- ----------
-
- (1 row)
- select jsonb '{}' @@ '$';
- ?column?
- ----------
-
- (1 row)
- select jsonb '[]' @@ '$';
- ?column?
- ----------
-
- (1 row)
- select jsonb '[1,2,3]' @@ '$[*]';
- ?column?
- ----------
-
- (1 row)
- select jsonb '[]' @@ '$[*]';
- ?column?
- ----------
-
- (1 row)
- select jsonb_path_match('[[1, true], [2, false]]', 'strict $[*] ? (@[0] > $x) [1]', '{"x": 1}');
- jsonb_path_match
- ------------------
- f
- (1 row)
- select jsonb_path_match('[[1, true], [2, false]]', 'strict $[*] ? (@[0] < $x) [1]', '{"x": 2}');
- jsonb_path_match
- ------------------
- t
- (1 row)
- select jsonb_path_match('[{"a": 1}, {"a": 2}, 3]', 'lax exists($[*].a)', silent => false);
- jsonb_path_match
- ------------------
- t
- (1 row)
- select jsonb_path_match('[{"a": 1}, {"a": 2}, 3]', 'lax exists($[*].a)', silent => true);
- jsonb_path_match
- ------------------
- t
- (1 row)
- select jsonb_path_match('[{"a": 1}, {"a": 2}, 3]', 'strict exists($[*].a)', silent => false);
- jsonb_path_match
- ------------------
-
- (1 row)
- select jsonb_path_match('[{"a": 1}, {"a": 2}, 3]', 'strict exists($[*].a)', silent => true);
- jsonb_path_match
- ------------------
-
- (1 row)
- select jsonb_path_query('[null,1,true,"a",[],{}]', '$.type()');
- jsonb_path_query
- ------------------
- "array"
- (1 row)
- select jsonb_path_query('[null,1,true,"a",[],{}]', 'lax $.type()');
- jsonb_path_query
- ------------------
- "array"
- (1 row)
- select jsonb_path_query('[null,1,true,"a",[],{}]', '$[*].type()');
- jsonb_path_query
- ------------------
- "null"
- "number"
- "boolean"
- "string"
- "array"
- "object"
- (6 rows)
- select jsonb_path_query('null', 'null.type()');
- jsonb_path_query
- ------------------
- "null"
- (1 row)
- select jsonb_path_query('null', 'true.type()');
- jsonb_path_query
- ------------------
- "boolean"
- (1 row)
- select jsonb_path_query('null', '(123).type()');
- jsonb_path_query
- ------------------
- "number"
- (1 row)
- select jsonb_path_query('null', '"123".type()');
- jsonb_path_query
- ------------------
- "string"
- (1 row)
- select jsonb_path_query('{"a": 2}', '($.a - 5).abs() + 10');
- jsonb_path_query
- ------------------
- 13
- (1 row)
- select jsonb_path_query('{"a": 2.5}', '-($.a * $.a).floor() % 4.3');
- jsonb_path_query
- ------------------
- -1.7
- (1 row)
- select jsonb_path_query('[1, 2, 3]', '($[*] > 2) ? (@ == true)');
- jsonb_path_query
- ------------------
- true
- (1 row)
- select jsonb_path_query('[1, 2, 3]', '($[*] > 3).type()');
- jsonb_path_query
- ------------------
- "boolean"
- (1 row)
- select jsonb_path_query('[1, 2, 3]', '($[*].a > 3).type()');
- jsonb_path_query
- ------------------
- "boolean"
- (1 row)
- select jsonb_path_query('[1, 2, 3]', 'strict ($[*].a > 3).type()');
- jsonb_path_query
- ------------------
- "null"
- (1 row)
- select jsonb_path_query('[1,null,true,"11",[],[1],[1,2,3],{},{"a":1,"b":2}]', 'strict $[*].size()');
- ERROR: jsonpath item method .size() can only be applied to an array
- select jsonb_path_query('[1,null,true,"11",[],[1],[1,2,3],{},{"a":1,"b":2}]', 'strict $[*].size()', silent => true);
- jsonb_path_query
- ------------------
- (0 rows)
- select jsonb_path_query('[1,null,true,"11",[],[1],[1,2,3],{},{"a":1,"b":2}]', 'lax $[*].size()');
- jsonb_path_query
- ------------------
- 1
- 1
- 1
- 1
- 0
- 1
- 3
- 1
- 1
- (9 rows)
- select jsonb_path_query('[0, 1, -2, -3.4, 5.6]', '$[*].abs()');
- jsonb_path_query
- ------------------
- 0
- 1
- 2
- 3.4
- 5.6
- (5 rows)
- select jsonb_path_query('[0, 1, -2, -3.4, 5.6]', '$[*].floor()');
- jsonb_path_query
- ------------------
- 0
- 1
- -2
- -4
- 5
- (5 rows)
- select jsonb_path_query('[0, 1, -2, -3.4, 5.6]', '$[*].ceiling()');
- jsonb_path_query
- ------------------
- 0
- 1
- -2
- -3
- 6
- (5 rows)
- select jsonb_path_query('[0, 1, -2, -3.4, 5.6]', '$[*].ceiling().abs()');
- jsonb_path_query
- ------------------
- 0
- 1
- 2
- 3
- 6
- (5 rows)
- select jsonb_path_query('[0, 1, -2, -3.4, 5.6]', '$[*].ceiling().abs().type()');
- jsonb_path_query
- ------------------
- "number"
- "number"
- "number"
- "number"
- "number"
- (5 rows)
- select jsonb_path_query('[{},1]', '$[*].keyvalue()');
- ERROR: jsonpath item method .keyvalue() can only be applied to an object
- select jsonb_path_query('[{},1]', '$[*].keyvalue()', silent => true);
- jsonb_path_query
- ------------------
- (0 rows)
- select jsonb_path_query('{}', '$.keyvalue()');
- jsonb_path_query
- ------------------
- (0 rows)
- select jsonb_path_query('{"a": 1, "b": [1, 2], "c": {"a": "bbb"}}', '$.keyvalue()');
- jsonb_path_query
- ----------------------------------------------
- {"id": 0, "key": "a", "value": 1}
- {"id": 0, "key": "b", "value": [1, 2]}
- {"id": 0, "key": "c", "value": {"a": "bbb"}}
- (3 rows)
- select jsonb_path_query('[{"a": 1, "b": [1, 2]}, {"c": {"a": "bbb"}}]', '$[*].keyvalue()');
- jsonb_path_query
- -----------------------------------------------
- {"id": 12, "key": "a", "value": 1}
- {"id": 12, "key": "b", "value": [1, 2]}
- {"id": 72, "key": "c", "value": {"a": "bbb"}}
- (3 rows)
- select jsonb_path_query('[{"a": 1, "b": [1, 2]}, {"c": {"a": "bbb"}}]', 'strict $.keyvalue()');
- ERROR: jsonpath item method .keyvalue() can only be applied to an object
- select jsonb_path_query('[{"a": 1, "b": [1, 2]}, {"c": {"a": "bbb"}}]', 'lax $.keyvalue()');
- jsonb_path_query
- -----------------------------------------------
- {"id": 12, "key": "a", "value": 1}
- {"id": 12, "key": "b", "value": [1, 2]}
- {"id": 72, "key": "c", "value": {"a": "bbb"}}
- (3 rows)
- select jsonb_path_query('[{"a": 1, "b": [1, 2]}, {"c": {"a": "bbb"}}]', 'strict $.keyvalue().a');
- ERROR: jsonpath item method .keyvalue() can only be applied to an object
- select jsonb '{"a": 1, "b": [1, 2]}' @? 'lax $.keyvalue()';
- ?column?
- ----------
- t
- (1 row)
- select jsonb '{"a": 1, "b": [1, 2]}' @? 'lax $.keyvalue().key';
- ?column?
- ----------
- t
- (1 row)
- select jsonb_path_query('null', '$.double()');
- ERROR: jsonpath item method .double() can only be applied to a string or numeric value
- select jsonb_path_query('true', '$.double()');
- ERROR: jsonpath item method .double() can only be applied to a string or numeric value
- select jsonb_path_query('null', '$.double()', silent => true);
- jsonb_path_query
- ------------------
- (0 rows)
- select jsonb_path_query('true', '$.double()', silent => true);
- jsonb_path_query
- ------------------
- (0 rows)
- select jsonb_path_query('[]', '$.double()');
- jsonb_path_query
- ------------------
- (0 rows)
- select jsonb_path_query('[]', 'strict $.double()');
- ERROR: jsonpath item method .double() can only be applied to a string or numeric value
- select jsonb_path_query('{}', '$.double()');
- ERROR: jsonpath item method .double() can only be applied to a string or numeric value
- select jsonb_path_query('[]', 'strict $.double()', silent => true);
- jsonb_path_query
- ------------------
- (0 rows)
- select jsonb_path_query('{}', '$.double()', silent => true);
- jsonb_path_query
- ------------------
- (0 rows)
- select jsonb_path_query('1.23', '$.double()');
- jsonb_path_query
- ------------------
- 1.23
- (1 row)
- select jsonb_path_query('"1.23"', '$.double()');
- jsonb_path_query
- ------------------
- 1.23
- (1 row)
- select jsonb_path_query('"1.23aaa"', '$.double()');
- ERROR: string argument of jsonpath item method .double() is not a valid representation of a double precision number
- select jsonb_path_query('1e1000', '$.double()');
- ERROR: numeric argument of jsonpath item method .double() is out of range for type double precision
- select jsonb_path_query('"nan"', '$.double()');
- ERROR: string argument of jsonpath item method .double() is not a valid representation of a double precision number
- select jsonb_path_query('"NaN"', '$.double()');
- ERROR: string argument of jsonpath item method .double() is not a valid representation of a double precision number
- select jsonb_path_query('"inf"', '$.double()');
- ERROR: string argument of jsonpath item method .double() is not a valid representation of a double precision number
- select jsonb_path_query('"-inf"', '$.double()');
- ERROR: string argument of jsonpath item method .double() is not a valid representation of a double precision number
- select jsonb_path_query('"inf"', '$.double()', silent => true);
- jsonb_path_query
- ------------------
- (0 rows)
- select jsonb_path_query('"-inf"', '$.double()', silent => true);
- jsonb_path_query
- ------------------
- (0 rows)
- select jsonb_path_query('{}', '$.abs()');
- ERROR: jsonpath item method .abs() can only be applied to a numeric value
- select jsonb_path_query('true', '$.floor()');
- ERROR: jsonpath item method .floor() can only be applied to a numeric value
- select jsonb_path_query('"1.2"', '$.ceiling()');
- ERROR: jsonpath item method .ceiling() can only be applied to a numeric value
- select jsonb_path_query('{}', '$.abs()', silent => true);
- jsonb_path_query
- ------------------
- (0 rows)
- select jsonb_path_query('true', '$.floor()', silent => true);
- jsonb_path_query
- ------------------
- (0 rows)
- select jsonb_path_query('"1.2"', '$.ceiling()', silent => true);
- jsonb_path_query
- ------------------
- (0 rows)
- select jsonb_path_query('["", "a", "abc", "abcabc"]', '$[*] ? (@ starts with "abc")');
- jsonb_path_query
- ------------------
- "abc"
- "abcabc"
- (2 rows)
- select jsonb_path_query('["", "a", "abc", "abcabc"]', 'strict $ ? (@[*] starts with "abc")');
- jsonb_path_query
- ----------------------------
- ["", "a", "abc", "abcabc"]
- (1 row)
- select jsonb_path_query('["", "a", "abd", "abdabc"]', 'strict $ ? (@[*] starts with "abc")');
- jsonb_path_query
- ------------------
- (0 rows)
- select jsonb_path_query('["abc", "abcabc", null, 1]', 'strict $ ? (@[*] starts with "abc")');
- jsonb_path_query
- ------------------
- (0 rows)
- select jsonb_path_query('["abc", "abcabc", null, 1]', 'strict $ ? ((@[*] starts with "abc") is unknown)');
- jsonb_path_query
- ----------------------------
- ["abc", "abcabc", null, 1]
- (1 row)
- select jsonb_path_query('[[null, 1, "abc", "abcabc"]]', 'lax $ ? (@[*] starts with "abc")');
- jsonb_path_query
- ----------------------------
- [null, 1, "abc", "abcabc"]
- (1 row)
- select jsonb_path_query('[[null, 1, "abd", "abdabc"]]', 'lax $ ? ((@[*] starts with "abc") is unknown)');
- jsonb_path_query
- ----------------------------
- [null, 1, "abd", "abdabc"]
- (1 row)
- select jsonb_path_query('[null, 1, "abd", "abdabc"]', 'lax $[*] ? ((@ starts with "abc") is unknown)');
- jsonb_path_query
- ------------------
- null
- 1
- (2 rows)
- select jsonb_path_query('[null, 1, "abc", "abd", "aBdC", "abdacb", "babc", "adc\nabc", "ab\nadc"]', 'lax $[*] ? (@ like_regex "^ab.*c")');
- jsonb_path_query
- ------------------
- "abc"
- "abdacb"
- (2 rows)
- select jsonb_path_query('[null, 1, "abc", "abd", "aBdC", "abdacb", "babc", "adc\nabc", "ab\nadc"]', 'lax $[*] ? (@ like_regex "^ab.*c" flag "i")');
- jsonb_path_query
- ------------------
- "abc"
- "aBdC"
- "abdacb"
- (3 rows)
- select jsonb_path_query('[null, 1, "abc", "abd", "aBdC", "abdacb", "babc", "adc\nabc", "ab\nadc"]', 'lax $[*] ? (@ like_regex "^ab.*c" flag "m")');
- jsonb_path_query
- ------------------
- "abc"
- "abdacb"
- "adc\nabc"
- (3 rows)
- select jsonb_path_query('[null, 1, "abc", "abd", "aBdC", "abdacb", "babc", "adc\nabc", "ab\nadc"]', 'lax $[*] ? (@ like_regex "^ab.*c" flag "s")');
- jsonb_path_query
- ------------------
- "abc"
- "abdacb"
- "ab\nadc"
- (3 rows)
- select jsonb_path_query('[null, 1, "a\b", "a\\b", "^a\\b$"]', 'lax $[*] ? (@ like_regex "a\\b" flag "q")');
- jsonb_path_query
- ------------------
- "a\\b"
- "^a\\b$"
- (2 rows)
- select jsonb_path_query('[null, 1, "a\b", "a\\b", "^a\\b$"]', 'lax $[*] ? (@ like_regex "a\\b" flag "")');
- jsonb_path_query
- ------------------
- "a\b"
- (1 row)
- select jsonb_path_query('[null, 1, "a\b", "a\\b", "^a\\b$"]', 'lax $[*] ? (@ like_regex "^a\\b$" flag "q")');
- jsonb_path_query
- ------------------
- "^a\\b$"
- (1 row)
- select jsonb_path_query('[null, 1, "a\b", "a\\b", "^a\\b$"]', 'lax $[*] ? (@ like_regex "^a\\B$" flag "q")');
- jsonb_path_query
- ------------------
- (0 rows)
- select jsonb_path_query('[null, 1, "a\b", "a\\b", "^a\\b$"]', 'lax $[*] ? (@ like_regex "^a\\B$" flag "iq")');
- jsonb_path_query
- ------------------
- "^a\\b$"
- (1 row)
- select jsonb_path_query('[null, 1, "a\b", "a\\b", "^a\\b$"]', 'lax $[*] ? (@ like_regex "^a\\b$" flag "")');
- jsonb_path_query
- ------------------
- "a\b"
- (1 row)
- select jsonb_path_query('null', '$.datetime()');
- ERROR: jsonpath item method .datetime() can only be applied to a string
- select jsonb_path_query('true', '$.datetime()');
- ERROR: jsonpath item method .datetime() can only be applied to a string
- select jsonb_path_query('1', '$.datetime()');
- ERROR: jsonpath item method .datetime() can only be applied to a string
- select jsonb_path_query('[]', '$.datetime()');
- jsonb_path_query
- ------------------
- (0 rows)
- select jsonb_path_query('[]', 'strict $.datetime()');
- ERROR: jsonpath item method .datetime() can only be applied to a string
- select jsonb_path_query('{}', '$.datetime()');
- ERROR: jsonpath item method .datetime() can only be applied to a string
- select jsonb_path_query('"bogus"', '$.datetime()');
- ERROR: datetime format is not recognized: "bogus"
- HINT: Use a datetime template argument to specify the input data format.
- select jsonb_path_query('"12:34"', '$.datetime("aaa")');
- ERROR: invalid datetime format separator: "a"
- select jsonb_path_query('"aaaa"', '$.datetime("HH24")');
- ERROR: invalid value "aa" for "HH24"
- DETAIL: Value must be an integer.
- select jsonb '"10-03-2017"' @? '$.datetime("dd-mm-yyyy")';
- ?column?
- ----------
- t
- (1 row)
- select jsonb_path_query('"10-03-2017"', '$.datetime("dd-mm-yyyy")');
- jsonb_path_query
- ------------------
- "2017-03-10"
- (1 row)
- select jsonb_path_query('"10-03-2017"', '$.datetime("dd-mm-yyyy").type()');
- jsonb_path_query
- ------------------
- "date"
- (1 row)
- select jsonb_path_query('"10-03-2017 12:34"', '$.datetime("dd-mm-yyyy")');
- ERROR: trailing characters remain in input string after datetime format
- select jsonb_path_query('"10-03-2017 12:34"', '$.datetime("dd-mm-yyyy").type()');
- ERROR: trailing characters remain in input string after datetime format
- select jsonb_path_query('"10-03-2017 12:34"', ' $.datetime("dd-mm-yyyy HH24:MI").type()');
- jsonb_path_query
- -------------------------------
- "timestamp without time zone"
- (1 row)
- select jsonb_path_query('"10-03-2017 12:34 +05:20"', '$.datetime("dd-mm-yyyy HH24:MI TZH:TZM").type()');
- jsonb_path_query
- ----------------------------
- "timestamp with time zone"
- (1 row)
- select jsonb_path_query('"12:34:56"', '$.datetime("HH24:MI:SS").type()');
- jsonb_path_query
- --------------------------
- "time without time zone"
- (1 row)
- select jsonb_path_query('"12:34:56 +05:20"', '$.datetime("HH24:MI:SS TZH:TZM").type()');
- jsonb_path_query
- -----------------------
- "time with time zone"
- (1 row)
- select jsonb_path_query('"10-03-2017T12:34:56"', '$.datetime("dd-mm-yyyy\"T\"HH24:MI:SS")');
- jsonb_path_query
- -----------------------
- "2017-03-10T12:34:56"
- (1 row)
- select jsonb_path_query('"10-03-2017t12:34:56"', '$.datetime("dd-mm-yyyy\"T\"HH24:MI:SS")');
- ERROR: unmatched format character "T"
- select jsonb_path_query('"10-03-2017 12:34:56"', '$.datetime("dd-mm-yyyy\"T\"HH24:MI:SS")');
- ERROR: unmatched format character "T"
- set time zone '+00';
- select jsonb_path_query('"10-03-2017 12:34"', '$.datetime("dd-mm-yyyy HH24:MI")');
- jsonb_path_query
- -----------------------
- "2017-03-10T12:34:00"
- (1 row)
- select jsonb_path_query('"10-03-2017 12:34"', '$.datetime("dd-mm-yyyy HH24:MI TZH")');
- ERROR: input string is too short for datetime format
- select jsonb_path_query('"10-03-2017 12:34 +05"', '$.datetime("dd-mm-yyyy HH24:MI TZH")');
- jsonb_path_query
- -----------------------------
- "2017-03-10T12:34:00+05:00"
- (1 row)
- select jsonb_path_query('"10-03-2017 12:34 -05"', '$.datetime("dd-mm-yyyy HH24:MI TZH")');
- jsonb_path_query
- -----------------------------
- "2017-03-10T12:34:00-05:00"
- (1 row)
- select jsonb_path_query('"10-03-2017 12:34 +05:20"', '$.datetime("dd-mm-yyyy HH24:MI TZH:TZM")');
- jsonb_path_query
- -----------------------------
- "2017-03-10T12:34:00+05:20"
- (1 row)
- select jsonb_path_query('"10-03-2017 12:34 -05:20"', '$.datetime("dd-mm-yyyy HH24:MI TZH:TZM")');
- jsonb_path_query
- -----------------------------
- "2017-03-10T12:34:00-05:20"
- (1 row)
- select jsonb_path_query('"12:34"', '$.datetime("HH24:MI")');
- jsonb_path_query
- ------------------
- "12:34:00"
- (1 row)
- select jsonb_path_query('"12:34"', '$.datetime("HH24:MI TZH")');
- ERROR: input string is too short for datetime format
- select jsonb_path_query('"12:34 +05"', '$.datetime("HH24:MI TZH")');
- jsonb_path_query
- ------------------
- "12:34:00+05:00"
- (1 row)
- select jsonb_path_query('"12:34 -05"', '$.datetime("HH24:MI TZH")');
- jsonb_path_query
- ------------------
- "12:34:00-05:00"
- (1 row)
- select jsonb_path_query('"12:34 +05:20"', '$.datetime("HH24:MI TZH:TZM")');
- jsonb_path_query
- ------------------
- "12:34:00+05:20"
- (1 row)
- select jsonb_path_query('"12:34 -05:20"', '$.datetime("HH24:MI TZH:TZM")');
- jsonb_path_query
- ------------------
- "12:34:00-05:20"
- (1 row)
- set time zone '+10';
- select jsonb_path_query('"10-03-2017 12:34"', '$.datetime("dd-mm-yyyy HH24:MI")');
- jsonb_path_query
- -----------------------
- "2017-03-10T12:34:00"
- (1 row)
- select jsonb_path_query('"10-03-2017 12:34"', '$.datetime("dd-mm-yyyy HH24:MI TZH")');
- ERROR: input string is too short for datetime format
- select jsonb_path_query('"10-03-2017 12:34 +05"', '$.datetime("dd-mm-yyyy HH24:MI TZH")');
- jsonb_path_query
- -----------------------------
- "2017-03-10T12:34:00+05:00"
- (1 row)
- select jsonb_path_query('"10-03-2017 12:34 -05"', '$.datetime("dd-mm-yyyy HH24:MI TZH")');
- jsonb_path_query
- -----------------------------
- "2017-03-10T12:34:00-05:00"
- (1 row)
- select jsonb_path_query('"10-03-2017 12:34 +05:20"', '$.datetime("dd-mm-yyyy HH24:MI TZH:TZM")');
- jsonb_path_query
- -----------------------------
- "2017-03-10T12:34:00+05:20"
- (1 row)
- select jsonb_path_query('"10-03-2017 12:34 -05:20"', '$.datetime("dd-mm-yyyy HH24:MI TZH:TZM")');
- jsonb_path_query
- -----------------------------
- "2017-03-10T12:34:00-05:20"
- (1 row)
- select jsonb_path_query('"12:34"', '$.datetime("HH24:MI")');
- jsonb_path_query
- ------------------
- "12:34:00"
- (1 row)
- select jsonb_path_query('"12:34"', '$.datetime("HH24:MI TZH")');
- ERROR: input string is too short for datetime format
- select jsonb_path_query('"12:34 +05"', '$.datetime("HH24:MI TZH")');
- jsonb_path_query
- ------------------
- "12:34:00+05:00"
- (1 row)
- select jsonb_path_query('"12:34 -05"', '$.datetime("HH24:MI TZH")');
- jsonb_path_query
- ------------------
- "12:34:00-05:00"
- (1 row)
- select jsonb_path_query('"12:34 +05:20"', '$.datetime("HH24:MI TZH:TZM")');
- jsonb_path_query
- ------------------
- "12:34:00+05:20"
- (1 row)
- select jsonb_path_query('"12:34 -05:20"', '$.datetime("HH24:MI TZH:TZM")');
- jsonb_path_query
- ------------------
- "12:34:00-05:20"
- (1 row)
- set time zone default;
- select jsonb_path_query('"2017-03-10"', '$.datetime().type()');
- jsonb_path_query
- ------------------
- "date"
- (1 row)
- select jsonb_path_query('"2017-03-10"', '$.datetime()');
- jsonb_path_query
- ------------------
- "2017-03-10"
- (1 row)
- select jsonb_path_query('"2017-03-10 12:34:56"', '$.datetime().type()');
- jsonb_path_query
- -------------------------------
- "timestamp without time zone"
- (1 row)
- select jsonb_path_query('"2017-03-10 12:34:56"', '$.datetime()');
- jsonb_path_query
- -----------------------
- "2017-03-10T12:34:56"
- (1 row)
- select jsonb_path_query('"2017-03-10 12:34:56+3"', '$.datetime().type()');
- jsonb_path_query
- ----------------------------
- "timestamp with time zone"
- (1 row)
- select jsonb_path_query('"2017-03-10 12:34:56+3"', '$.datetime()');
- jsonb_path_query
- -----------------------------
- "2017-03-10T12:34:56+03:00"
- (1 row)
- select jsonb_path_query('"2017-03-10 12:34:56+3:10"', '$.datetime().type()');
- jsonb_path_query
- ----------------------------
- "timestamp with time zone"
- (1 row)
- select jsonb_path_query('"2017-03-10 12:34:56+3:10"', '$.datetime()');
- jsonb_path_query
- -----------------------------
- "2017-03-10T12:34:56+03:10"
- (1 row)
- select jsonb_path_query('"2017-03-10T12:34:56+3:10"', '$.datetime()');
- jsonb_path_query
- -----------------------------
- "2017-03-10T12:34:56+03:10"
- (1 row)
- select jsonb_path_query('"2017-03-10t12:34:56+3:10"', '$.datetime()');
- ERROR: datetime format is not recognized: "2017-03-10t12:34:56+3:10"
- HINT: Use a datetime template argument to specify the input data format.
- select jsonb_path_query('"12:34:56"', '$.datetime().type()');
- jsonb_path_query
- --------------------------
- "time without time zone"
- (1 row)
- select jsonb_path_query('"12:34:56"', '$.datetime()');
- jsonb_path_query
- ------------------
- "12:34:56"
- (1 row)
- select jsonb_path_query('"12:34:56+3"', '$.datetime().type()');
- jsonb_path_query
- -----------------------
- "time with time zone"
- (1 row)
- select jsonb_path_query('"12:34:56+3"', '$.datetime()');
- jsonb_path_query
- ------------------
- "12:34:56+03:00"
- (1 row)
- select jsonb_path_query('"12:34:56+3:10"', '$.datetime().type()');
- jsonb_path_query
- -----------------------
- "time with time zone"
- (1 row)
- select jsonb_path_query('"12:34:56+3:10"', '$.datetime()');
- jsonb_path_query
- ------------------
- "12:34:56+03:10"
- (1 row)
- set time zone '+00';
- -- date comparison
- select jsonb_path_query(
- '["2017-03-10", "2017-03-11", "2017-03-09", "12:34:56", "01:02:03+04", "2017-03-10 00:00:00", "2017-03-10 12:34:56", "2017-03-10 01:02:03+04", "2017-03-10 03:00:00+03"]',
- '$[*].datetime() ? (@ == "10.03.2017".datetime("dd.mm.yyyy"))');
- ERROR: cannot convert value from date to timestamptz without time zone usage
- HINT: Use *_tz() function for time zone support.
- select jsonb_path_query(
- '["2017-03-10", "2017-03-11", "2017-03-09", "12:34:56", "01:02:03+04", "2017-03-10 00:00:00", "2017-03-10 12:34:56", "2017-03-10 01:02:03+04", "2017-03-10 03:00:00+03"]',
- '$[*].datetime() ? (@ >= "10.03.2017".datetime("dd.mm.yyyy"))');
- ERROR: cannot convert value from date to timestamptz without time zone usage
- HINT: Use *_tz() function for time zone support.
- select jsonb_path_query(
- '["2017-03-10", "2017-03-11", "2017-03-09", "12:34:56", "01:02:03+04", "2017-03-10 00:00:00", "2017-03-10 12:34:56", "2017-03-10 01:02:03+04", "2017-03-10 03:00:00+03"]',
- '$[*].datetime() ? (@ < "10.03.2017".datetime("dd.mm.yyyy"))');
- ERROR: cannot convert value from date to timestamptz without time zone usage
- HINT: Use *_tz() function for time zone support.
- select jsonb_path_query_tz(
- '["2017-03-10", "2017-03-11", "2017-03-09", "12:34:56", "01:02:03+04", "2017-03-10 00:00:00", "2017-03-10 12:34:56", "2017-03-10 01:02:03+04", "2017-03-10 03:00:00+03"]',
- '$[*].datetime() ? (@ == "10.03.2017".datetime("dd.mm.yyyy"))');
- jsonb_path_query_tz
- -----------------------------
- "2017-03-10"
- "2017-03-10T00:00:00"
- "2017-03-10T03:00:00+03:00"
- (3 rows)
- select jsonb_path_query_tz(
- '["2017-03-10", "2017-03-11", "2017-03-09", "12:34:56", "01:02:03+04", "2017-03-10 00:00:00", "2017-03-10 12:34:56", "2017-03-10 01:02:03+04", "2017-03-10 03:00:00+03"]',
- '$[*].datetime() ? (@ >= "10.03.2017".datetime("dd.mm.yyyy"))');
- jsonb_path_query_tz
- -----------------------------
- "2017-03-10"
- "2017-03-11"
- "2017-03-10T00:00:00"
- "2017-03-10T12:34:56"
- "2017-03-10T03:00:00+03:00"
- (5 rows)
- select jsonb_path_query_tz(
- '["2017-03-10", "2017-03-11", "2017-03-09", "12:34:56", "01:02:03+04", "2017-03-10 00:00:00", "2017-03-10 12:34:56", "2017-03-10 01:02:03+04", "2017-03-10 03:00:00+03"]',
- '$[*].datetime() ? (@ < "10.03.2017".datetime("dd.mm.yyyy"))');
- jsonb_path_query_tz
- -----------------------------
- "2017-03-09"
- "2017-03-10T01:02:03+04:00"
- (2 rows)
- -- time comparison
- select jsonb_path_query(
- '["12:34:00", "12:35:00", "12:36:00", "12:35:00+00", "12:35:00+01", "13:35:00+01", "2017-03-10", "2017-03-10 12:35:00", "2017-03-10 12:35:00+01"]',
- '$[*].datetime() ? (@ == "12:35".datetime("HH24:MI"))');
- ERROR: cannot convert value from time to timetz without time zone usage
- HINT: Use *_tz() function for time zone support.
- select jsonb_path_query(
- '["12:34:00", "12:35:00", "12:36:00", "12:35:00+00", "12:35:00+01", "13:35:00+01", "2017-03-10", "2017-03-10 12:35:00", "2017-03-10 12:35:00+01"]',
- '$[*].datetime() ? (@ >= "12:35".datetime("HH24:MI"))');
- ERROR: cannot convert value from time to timetz without time zone usage
- HINT: Use *_tz() function for time zone support.
- select jsonb_path_query(
- '["12:34:00", "12:35:00", "12:36:00", "12:35:00+00", "12:35:00+01", "13:35:00+01", "2017-03-10", "2017-03-10 12:35:00", "2017-03-10 12:35:00+01"]',
- '$[*].datetime() ? (@ < "12:35".datetime("HH24:MI"))');
- ERROR: cannot convert value from time to timetz without time zone usage
- HINT: Use *_tz() function for time zone support.
- select jsonb_path_query_tz(
- '["12:34:00", "12:35:00", "12:36:00", "12:35:00+00", "12:35:00+01", "13:35:00+01", "2017-03-10", "2017-03-10 12:35:00", "2017-03-10 12:35:00+01"]',
- '$[*].datetime() ? (@ == "12:35".datetime("HH24:MI"))');
- jsonb_path_query_tz
- ---------------------
- "12:35:00"
- "12:35:00+00:00"
- (2 rows)
- select jsonb_path_query_tz(
- '["12:34:00", "12:35:00", "12:36:00", "12:35:00+00", "12:35:00+01", "13:35:00+01", "2017-03-10", "2017-03-10 12:35:00", "2017-03-10 12:35:00+01"]',
- '$[*].datetime() ? (@ >= "12:35".datetime("HH24:MI"))');
- jsonb_path_query_tz
- ---------------------
- "12:35:00"
- "12:36:00"
- "12:35:00+00:00"
- (3 rows)
- select jsonb_path_query_tz(
- '["12:34:00", "12:35:00", "12:36:00", "12:35:00+00", "12:35:00+01", "13:35:00+01", "2017-03-10", "2017-03-10 12:35:00", "2017-03-10 12:35:00+01"]',
- '$[*].datetime() ? (@ < "12:35".datetime("HH24:MI"))');
- jsonb_path_query_tz
- ---------------------
- "12:34:00"
- "12:35:00+01:00"
- "13:35:00+01:00"
- (3 rows)
- -- timetz comparison
- select jsonb_path_query(
- '["12:34:00+01", "12:35:00+01", "12:36:00+01", "12:35:00+02", "12:35:00-02", "10:35:00", "11:35:00", "12:35:00", "2017-03-10", "2017-03-10 12:35:00", "2017-03-10 12:35:00 +1"]',
- '$[*].datetime() ? (@ == "12:35 +1".datetime("HH24:MI TZH"))');
- ERROR: cannot convert value from time to timetz without time zone usage
- HINT: Use *_tz() function for time zone support.
- select jsonb_path_query(
- '["12:34:00+01", "12:35:00+01", "12:36:00+01", "12:35:00+02", "12:35:00-02", "10:35:00", "11:35:00", "12:35:00", "2017-03-10", "2017-03-10 12:35:00", "2017-03-10 12:35:00 +1"]',
- '$[*].datetime() ? (@ >= "12:35 +1".datetime("HH24:MI TZH"))');
- ERROR: cannot convert value from time to timetz without time zone usage
- HINT: Use *_tz() function for time zone support.
- select jsonb_path_query(
- '["12:34:00+01", "12:35:00+01", "12:36:00+01", "12:35:00+02", "12:35:00-02", "10:35:00", "11:35:00", "12:35:00", "2017-03-10", "2017-03-10 12:35:00", "2017-03-10 12:35:00 +1"]',
- '$[*].datetime() ? (@ < "12:35 +1".datetime("HH24:MI TZH"))');
- ERROR: cannot convert value from time to timetz without time zone usage
- HINT: Use *_tz() function for time zone support.
- select jsonb_path_query_tz(
- '["12:34:00+01", "12:35:00+01", "12:36:00+01", "12:35:00+02", "12:35:00-02", "10:35:00", "11:35:00", "12:35:00", "2017-03-10", "2017-03-10 12:35:00", "2017-03-10 12:35:00 +1"]',
- '$[*].datetime() ? (@ == "12:35 +1".datetime("HH24:MI TZH"))');
- jsonb_path_query_tz
- ---------------------
- "12:35:00+01:00"
- (1 row)
- select jsonb_path_query_tz(
- '["12:34:00+01", "12:35:00+01", "12:36:00+01", "12:35:00+02", "12:35:00-02", "10:35:00", "11:35:00", "12:35:00", "2017-03-10", "2017-03-10 12:35:00", "2017-03-10 12:35:00 +1"]',
- '$[*].datetime() ? (@ >= "12:35 +1".datetime("HH24:MI TZH"))');
- jsonb_path_query_tz
- ---------------------
- "12:35:00+01:00"
- "12:36:00+01:00"
- "12:35:00-02:00"
- "11:35:00"
- "12:35:00"
- (5 rows)
- select jsonb_path_query_tz(
- '["12:34:00+01", "12:35:00+01", "12:36:00+01", "12:35:00+02", "12:35:00-02", "10:35:00", "11:35:00", "12:35:00", "2017-03-10", "2017-03-10 12:35:00", "2017-03-10 12:35:00 +1"]',
- '$[*].datetime() ? (@ < "12:35 +1".datetime("HH24:MI TZH"))');
- jsonb_path_query_tz
- ---------------------
- "12:34:00+01:00"
- "12:35:00+02:00"
- "10:35:00"
- (3 rows)
- -- timestamp comparison
- select jsonb_path_query(
- '["2017-03-10 12:34:00", "2017-03-10 12:35:00", "2017-03-10 12:36:00", "2017-03-10 12:35:00+01", "2017-03-10 13:35:00+01", "2017-03-10 12:35:00-01", "2017-03-10", "2017-03-11", "12:34:56", "12:34:56+01"]',
- '$[*].datetime() ? (@ == "10.03.2017 12:35".datetime("dd.mm.yyyy HH24:MI"))');
- ERROR: cannot convert value from timestamp to timestamptz without time zone usage
- HINT: Use *_tz() function for time zone support.
- select jsonb_path_query(
- '["2017-03-10 12:34:00", "2017-03-10 12:35:00", "2017-03-10 12:36:00", "2017-03-10 12:35:00+01", "2017-03-10 13:35:00+01", "2017-03-10 12:35:00-01", "2017-03-10", "2017-03-11", "12:34:56", "12:34:56+01"]',
- '$[*].datetime() ? (@ >= "10.03.2017 12:35".datetime("dd.mm.yyyy HH24:MI"))');
- ERROR: cannot convert value from timestamp to timestamptz without time zone usage
- HINT: Use *_tz() function for time zone support.
- select jsonb_path_query(
- '["2017-03-10 12:34:00", "2017-03-10 12:35:00", "2017-03-10 12:36:00", "2017-03-10 12:35:00+01", "2017-03-10 13:35:00+01", "2017-03-10 12:35:00-01", "2017-03-10", "2017-03-11", "12:34:56", "12:34:56+01"]',
- '$[*].datetime() ? (@ < "10.03.2017 12:35".datetime("dd.mm.yyyy HH24:MI"))');
- ERROR: cannot convert value from timestamp to timestamptz without time zone usage
- HINT: Use *_tz() function for time zone support.
- select jsonb_path_query_tz(
- '["2017-03-10 12:34:00", "2017-03-10 12:35:00", "2017-03-10 12:36:00", "2017-03-10 12:35:00+01", "2017-03-10 13:35:00+01", "2017-03-10 12:35:00-01", "2017-03-10", "2017-03-11", "12:34:56", "12:34:56+01"]',
- '$[*].datetime() ? (@ == "10.03.2017 12:35".datetime("dd.mm.yyyy HH24:MI"))');
- jsonb_path_query_tz
- -----------------------------
- "2017-03-10T12:35:00"
- "2017-03-10T13:35:00+01:00"
- (2 rows)
- select jsonb_path_query_tz(
- '["2017-03-10 12:34:00", "2017-03-10 12:35:00", "2017-03-10 12:36:00", "2017-03-10 12:35:00+01", "2017-03-10 13:35:00+01", "2017-03-10 12:35:00-01", "2017-03-10", "2017-03-11", "12:34:56", "12:34:56+01"]',
- '$[*].datetime() ? (@ >= "10.03.2017 12:35".datetime("dd.mm.yyyy HH24:MI"))');
- jsonb_path_query_tz
- -----------------------------
- "2017-03-10T12:35:00"
- "2017-03-10T12:36:00"
- "2017-03-10T13:35:00+01:00"
- "2017-03-10T12:35:00-01:00"
- "2017-03-11"
- (5 rows)
- select jsonb_path_query_tz(
- '["2017-03-10 12:34:00", "2017-03-10 12:35:00", "2017-03-10 12:36:00", "2017-03-10 12:35:00+01", "2017-03-10 13:35:00+01", "2017-03-10 12:35:00-01", "2017-03-10", "2017-03-11", "12:34:56", "12:34:56+01"]',
- '$[*].datetime() ? (@ < "10.03.2017 12:35".datetime("dd.mm.yyyy HH24:MI"))');
- jsonb_path_query_tz
- -----------------------------
- "2017-03-10T12:34:00"
- "2017-03-10T12:35:00+01:00"
- "2017-03-10"
- (3 rows)
- -- timestamptz comparison
- select jsonb_path_query(
- '["2017-03-10 12:34:00+01", "2017-03-10 12:35:00+01", "2017-03-10 12:36:00+01", "2017-03-10 12:35:00+02", "2017-03-10 12:35:00-02", "2017-03-10 10:35:00", "2017-03-10 11:35:00", "2017-03-10 12:35:00", "2017-03-10", "2017-03-11", "12:34:56", "12:34:56+01"]',
- '$[*].datetime() ? (@ == "10.03.2017 12:35 +1".datetime("dd.mm.yyyy HH24:MI TZH"))');
- ERROR: cannot convert value from timestamp to timestamptz without time zone usage
- HINT: Use *_tz() function for time zone support.
- select jsonb_path_query(
- '["2017-03-10 12:34:00+01", "2017-03-10 12:35:00+01", "2017-03-10 12:36:00+01", "2017-03-10 12:35:00+02", "2017-03-10 12:35:00-02", "2017-03-10 10:35:00", "2017-03-10 11:35:00", "2017-03-10 12:35:00", "2017-03-10", "2017-03-11", "12:34:56", "12:34:56+01"]',
- '$[*].datetime() ? (@ >= "10.03.2017 12:35 +1".datetime("dd.mm.yyyy HH24:MI TZH"))');
- ERROR: cannot convert value from timestamp to timestamptz without time zone usage
- HINT: Use *_tz() function for time zone support.
- select jsonb_path_query(
- '["2017-03-10 12:34:00+01", "2017-03-10 12:35:00+01", "2017-03-10 12:36:00+01", "2017-03-10 12:35:00+02", "2017-03-10 12:35:00-02", "2017-03-10 10:35:00", "2017-03-10 11:35:00", "2017-03-10 12:35:00", "2017-03-10", "2017-03-11", "12:34:56", "12:34:56+01"]',
- '$[*].datetime() ? (@ < "10.03.2017 12:35 +1".datetime("dd.mm.yyyy HH24:MI TZH"))');
- ERROR: cannot convert value from timestamp to timestamptz without time zone usage
- HINT: Use *_tz() function for time zone support.
- select jsonb_path_query_tz(
- '["2017-03-10 12:34:00+01", "2017-03-10 12:35:00+01", "2017-03-10 12:36:00+01", "2017-03-10 12:35:00+02", "2017-03-10 12:35:00-02", "2017-03-10 10:35:00", "2017-03-10 11:35:00", "2017-03-10 12:35:00", "2017-03-10", "2017-03-11", "12:34:56", "12:34:56+01"]',
- '$[*].datetime() ? (@ == "10.03.2017 12:35 +1".datetime("dd.mm.yyyy HH24:MI TZH"))');
- jsonb_path_query_tz
- -----------------------------
- "2017-03-10T12:35:00+01:00"
- "2017-03-10T11:35:00"
- (2 rows)
- select jsonb_path_query_tz(
- '["2017-03-10 12:34:00+01", "2017-03-10 12:35:00+01", "2017-03-10 12:36:00+01", "2017-03-10 12:35:00+02", "2017-03-10 12:35:00-02", "2017-03-10 10:35:00", "2017-03-10 11:35:00", "2017-03-10 12:35:00", "2017-03-10", "2017-03-11", "12:34:56", "12:34:56+01"]',
- '$[*].datetime() ? (@ >= "10.03.2017 12:35 +1".datetime("dd.mm.yyyy HH24:MI TZH"))');
- jsonb_path_query_tz
- -----------------------------
- "2017-03-10T12:35:00+01:00"
- "2017-03-10T12:36:00+01:00"
- "2017-03-10T12:35:00-02:00"
- "2017-03-10T11:35:00"
- "2017-03-10T12:35:00"
- "2017-03-11"
- (6 rows)
- select jsonb_path_query_tz(
- '["2017-03-10 12:34:00+01", "2017-03-10 12:35:00+01", "2017-03-10 12:36:00+01", "2017-03-10 12:35:00+02", "2017-03-10 12:35:00-02", "2017-03-10 10:35:00", "2017-03-10 11:35:00", "2017-03-10 12:35:00", "2017-03-10", "2017-03-11", "12:34:56", "12:34:56+01"]',
- '$[*].datetime() ? (@ < "10.03.2017 12:35 +1".datetime("dd.mm.yyyy HH24:MI TZH"))');
- jsonb_path_query_tz
- -----------------------------
- "2017-03-10T12:34:00+01:00"
- "2017-03-10T12:35:00+02:00"
- "2017-03-10T10:35:00"
- "2017-03-10"
- (4 rows)
- -- overflow during comparison
- select jsonb_path_query('"1000000-01-01"', '$.datetime() > "2020-01-01 12:00:00".datetime()'::jsonpath);
- jsonb_path_query
- ------------------
- true
- (1 row)
- set time zone default;
- -- jsonpath operators
- SELECT jsonb_path_query('[{"a": 1}, {"a": 2}]', '$[*]');
- jsonb_path_query
- ------------------
- {"a": 1}
- {"a": 2}
- (2 rows)
- SELECT jsonb_path_query('[{"a": 1}, {"a": 2}]', '$[*] ? (@.a > 10)');
- jsonb_path_query
- ------------------
- (0 rows)
- SELECT jsonb_path_query_array('[{"a": 1}, {"a": 2}, {}]', 'strict $[*].a');
- ERROR: JSON object does not contain key "a"
- SELECT jsonb_path_query_array('[{"a": 1}, {"a": 2}]', '$[*].a');
- jsonb_path_query_array
- ------------------------
- [1, 2]
- (1 row)
- SELECT jsonb_path_query_array('[{"a": 1}, {"a": 2}]', '$[*].a ? (@ == 1)');
- jsonb_path_query_array
- ------------------------
- [1]
- (1 row)
- SELECT jsonb_path_query_array('[{"a": 1}, {"a": 2}]', '$[*].a ? (@ > 10)');
- jsonb_path_query_array
- ------------------------
- []
- (1 row)
- SELECT jsonb_path_query_array('[{"a": 1}, {"a": 2}, {"a": 3}, {"a": 5}]', '$[*].a ? (@ > $min && @ < $max)', vars => '{"min": 1, "max": 4}');
- jsonb_path_query_array
- ------------------------
- [2, 3]
- (1 row)
- SELECT jsonb_path_query_array('[{"a": 1}, {"a": 2}, {"a": 3}, {"a": 5}]', '$[*].a ? (@ > $min && @ < $max)', vars => '{"min": 3, "max": 4}');
- jsonb_path_query_array
- ------------------------
- []
- (1 row)
- SELECT jsonb_path_query_first('[{"a": 1}, {"a": 2}, {}]', 'strict $[*].a');
- ERROR: JSON object does not contain key "a"
- SELECT jsonb_path_query_first('[{"a": 1}, {"a": 2}, {}]', 'strict $[*].a', silent => true);
- jsonb_path_query_first
- ------------------------
- 1
- (1 row)
- SELECT jsonb_path_query_first('[{"a": 1}, {"a": 2}]', '$[*].a');
- jsonb_path_query_first
- ------------------------
- 1
- (1 row)
- SELECT jsonb_path_query_first('[{"a": 1}, {"a": 2}]', '$[*].a ? (@ == 1)');
- jsonb_path_query_first
- ------------------------
- 1
- (1 row)
- SELECT jsonb_path_query_first('[{"a": 1}, {"a": 2}]', '$[*].a ? (@ > 10)');
- jsonb_path_query_first
- ------------------------
-
- (1 row)
- SELECT jsonb_path_query_first('[{"a": 1}, {"a": 2}, {"a": 3}, {"a": 5}]', '$[*].a ? (@ > $min && @ < $max)', vars => '{"min": 1, "max": 4}');
- jsonb_path_query_first
- ------------------------
- 2
- (1 row)
- SELECT jsonb_path_query_first('[{"a": 1}, {"a": 2}, {"a": 3}, {"a": 5}]', '$[*].a ? (@ > $min && @ < $max)', vars => '{"min": 3, "max": 4}');
- jsonb_path_query_first
- ------------------------
-
- (1 row)
- SELECT jsonb '[{"a": 1}, {"a": 2}]' @? '$[*].a ? (@ > 1)';
- ?column?
- ----------
- t
- (1 row)
- SELECT jsonb '[{"a": 1}, {"a": 2}]' @? '$[*] ? (@.a > 2)';
- ?column?
- ----------
- f
- (1 row)
- SELECT jsonb_path_exists('[{"a": 1}, {"a": 2}]', '$[*].a ? (@ > 1)');
- jsonb_path_exists
- -------------------
- t
- (1 row)
- SELECT jsonb_path_exists('[{"a": 1}, {"a": 2}, {"a": 3}, {"a": 5}]', '$[*] ? (@.a > $min && @.a < $max)', vars => '{"min": 1, "max": 4}');
- jsonb_path_exists
- -------------------
- t
- (1 row)
- SELECT jsonb_path_exists('[{"a": 1}, {"a": 2}, {"a": 3}, {"a": 5}]', '$[*] ? (@.a > $min && @.a < $max)', vars => '{"min": 3, "max": 4}');
- jsonb_path_exists
- -------------------
- f
- (1 row)
- SELECT jsonb_path_match('true', '$', silent => false);
- jsonb_path_match
- ------------------
- t
- (1 row)
- SELECT jsonb_path_match('false', '$', silent => false);
- jsonb_path_match
- ------------------
- f
- (1 row)
- SELECT jsonb_path_match('null', '$', silent => false);
- jsonb_path_match
- ------------------
-
- (1 row)
- SELECT jsonb_path_match('1', '$', silent => true);
- jsonb_path_match
- ------------------
-
- (1 row)
- SELECT jsonb_path_match('1', '$', silent => false);
- ERROR: single boolean result is expected
- SELECT jsonb_path_match('"a"', '$', silent => false);
- ERROR: single boolean result is expected
- SELECT jsonb_path_match('{}', '$', silent => false);
- ERROR: single boolean result is expected
- SELECT jsonb_path_match('[true]', '$', silent => false);
- ERROR: single boolean result is expected
- SELECT jsonb_path_match('{}', 'lax $.a', silent => false);
- ERROR: single boolean result is expected
- SELECT jsonb_path_match('{}', 'strict $.a', silent => false);
- ERROR: JSON object does not contain key "a"
- SELECT jsonb_path_match('{}', 'strict $.a', silent => true);
- jsonb_path_match
- ------------------
-
- (1 row)
- SELECT jsonb_path_match('[true, true]', '$[*]', silent => false);
- ERROR: single boolean result is expected
- SELECT jsonb '[{"a": 1}, {"a": 2}]' @@ '$[*].a > 1';
- ?column?
- ----------
- t
- (1 row)
- SELECT jsonb '[{"a": 1}, {"a": 2}]' @@ '$[*].a > 2';
- ?column?
- ----------
- f
- (1 row)
- SELECT jsonb_path_match('[{"a": 1}, {"a": 2}]', '$[*].a > 1');
- jsonb_path_match
- ------------------
- t
- (1 row)
- -- test string comparison (Unicode codepoint collation)
- WITH str(j, num) AS
- (
- SELECT jsonb_build_object('s', s), num
- FROM unnest('{"", "a", "ab", "abc", "abcd", "b", "A", "AB", "ABC", "ABc", "ABcD", "B"}'::text[]) WITH ORDINALITY AS a(s, num)
- )
- SELECT
- s1.j, s2.j,
- jsonb_path_query_first(s1.j, '$.s < $s', vars => s2.j) lt,
- jsonb_path_query_first(s1.j, '$.s <= $s', vars => s2.j) le,
- jsonb_path_query_first(s1.j, '$.s == $s', vars => s2.j) eq,
- jsonb_path_query_first(s1.j, '$.s >= $s', vars => s2.j) ge,
- jsonb_path_query_first(s1.j, '$.s > $s', vars => s2.j) gt
- FROM str s1, str s2
- ORDER BY s1.num, s2.num;
- j | j | lt | le | eq | ge | gt
- ---------------+---------------+-------+-------+-------+-------+-------
- {"s": ""} | {"s": ""} | false | true | true | true | false
- {"s": ""} | {"s": "a"} | true | true | false | false | false
- {"s": ""} | {"s": "ab"} | true | true | false | false | false
- {"s": ""} | {"s": "abc"} | true | true | false | false | false
- {"s": ""} | {"s": "abcd"} | true | true | false | false | false
- {"s": ""} | {"s": "b"} | true | true | false | false | false
- {"s": ""} | {"s": "A"} | true | true | false | false | false
- {"s": ""} | {"s": "AB"} | true | true | false | false | false
- {"s": ""} | {"s": "ABC"} | true | true | false | false | false
- {"s": ""} | {"s": "ABc"} | true | true | false | false | false
- {"s": ""} | {"s": "ABcD"} | true | true | false | false | false
- {"s": ""} | {"s": "B"} | true | true | false | false | false
- {"s": "a"} | {"s": ""} | false | false | false | true | true
- {"s": "a"} | {"s": "a"} | false | true | true | true | false
- {"s": "a"} | {"s": "ab"} | true | true | false | false | false
- {"s": "a"} | {"s": "abc"} | true | true | false | false | false
- {"s": "a"} | {"s": "abcd"} | true | true | false | false | false
- {"s": "a"} | {"s": "b"} | true | true | false | false | false
- {"s": "a"} | {"s": "A"} | false | false | false | true | true
- {"s": "a"} | {"s": "AB"} | false | false | false | true | true
- {"s": "a"} | {"s": "ABC"} | false | false | false | true | true
- {"s": "a"} | {"s": "ABc"} | false | false | false | true | true
- {"s": "a"} | {"s": "ABcD"} | false | false | false | true | true
- {"s": "a"} | {"s": "B"} | false | false | false | true | true
- {"s": "ab"} | {"s": ""} | false | false | false | true | true
- {"s": "ab"} | {"s": "a"} | false | false | false | true | true
- {"s": "ab"} | {"s": "ab"} | false | true | true | true | false
- {"s": "ab"} | {"s": "abc"} | true | true | false | false | false
- {"s": "ab"} | {"s": "abcd"} | true | true | false | false | false
- {"s": "ab"} | {"s": "b"} | true | true | false | false | false
- {"s": "ab"} | {"s": "A"} | false | false | false | true | true
- {"s": "ab"} | {"s": "AB"} | false | false | false | true | true
- {"s": "ab"} | {"s": "ABC"} | false | false | false | true | true
- {"s": "ab"} | {"s": "ABc"} | false | false | false | true | true
- {"s": "ab"} | {"s": "ABcD"} | false | false | false | true | true
- {"s": "ab"} | {"s": "B"} | false | false | false | true | true
- {"s": "abc"} | {"s": ""} | false | false | false | true | true
- {"s": "abc"} | {"s": "a"} | false | false | false | true | true
- {"s": "abc"} | {"s": "ab"} | false | false | false | true | true
- {"s": "abc"} | {"s": "abc"} | false | true | true | true | false
- {"s": "abc"} | {"s": "abcd"} | true | true | false | false | false
- {"s": "abc"} | {"s": "b"} | true | true | false | false | false
- {"s": "abc"} | {"s": "A"} | false | false | false | true | true
- {"s": "abc"} | {"s": "AB"} | false | false | false | true | true
- {"s": "abc"} | {"s": "ABC"} | false | false | false | true | true
- {"s": "abc"} | {"s": "ABc"} | false | false | false | true | true
- {"s": "abc"} | {"s": "ABcD"} | false | false | false | true | true
- {"s": "abc"} | {"s": "B"} | false | false | false | true | true
- {"s": "abcd"} | {"s": ""} | false | false | false | true | true
- {"s": "abcd"} | {"s": "a"} | false | false | false | true | true
- {"s": "abcd"} | {"s": "ab"} | false | false | false | true | true
- {"s": "abcd"} | {"s": "abc"} | false | false | false | true | true
- {"s": "abcd"} | {"s": "abcd"} | false | true | true | true | false
- {"s": "abcd"} | {"s": "b"} | true | true | false | false | false
- {"s": "abcd"} | {"s": "A"} | false | false | false | true | true
- {"s": "abcd"} | {"s": "AB"} | false | false | false | true | true
- {"s": "abcd"} | {"s": "ABC"} | false | false | false | true | true
- {"s": "abcd"} | {"s": "ABc"} | false | false | false | true | true
- {"s": "abcd"} | {"s": "ABcD"} | false | false | false | true | true
- {"s": "abcd"} | {"s": "B"} | false | false | false | true | true
- {"s": "b"} | {"s": ""} | false | false | false | true | true
- {"s": "b"} | {"s": "a"} | false | false | false | true | true
- {"s": "b"} | {"s": "ab"} | false | false | false | true | true
- {"s": "b"} | {"s": "abc"} | false | false | false | true | true
- {"s": "b"} | {"s": "abcd"} | false | false | false | true | true
- {"s": "b"} | {"s": "b"} | false | true | true | true | false
- {"s": "b"} | {"s": "A"} | false | false | false | true | true
- {"s": "b"} | {"s": "AB"} | false | false | false | true | true
- {"s": "b"} | {"s": "ABC"} | false | false | false | true | true
- {"s": "b"} | {"s": "ABc"} | false | false | false | true | true
- {"s": "b"} | {"s": "ABcD"} | false | false | false | true | true
- {"s": "b"} | {"s": "B"} | false | false | false | true | true
- {"s": "A"} | {"s": ""} | false | false | false | true | true
- {"s": "A"} | {"s": "a"} | true | true | false | false | false
- {"s": "A"} | {"s": "ab"} | true | true | false | false | false
- {"s": "A"} | {"s": "abc"} | true | true | false | false | false
- {"s": "A"} | {"s": "abcd"} | true | true | false | false | false
- {"s": "A"} | {"s": "b"} | true | true | false | false | false
- {"s": "A"} | {"s": "A"} | false | true | true | true | false
- {"s": "A"} | {"s": "AB"} | true | true | false | false | false
- {"s": "A"} | {"s": "ABC"} | true | true | false | false | false
- {"s": "A"} | {"s": "ABc"} | true | true | false | false | false
- {"s": "A"} | {"s": "ABcD"} | true | true | false | false | false
- {"s": "A"} | {"s": "B"} | true | true | false | false | false
- {"s": "AB"} | {"s": ""} | false | false | false | true | true
- {"s": "AB"} | {"s": "a"} | true | true | false | false | false
- {"s": "AB"} | {"s": "ab"} | true | true | false | false | false
- {"s": "AB"} | {"s": "abc"} | true | true | false | false | false
- {"s": "AB"} | {"s": "abcd"} | true | true | false | false | false
- {"s": "AB"} | {"s": "b"} | true | true | false | false | false
- {"s": "AB"} | {"s": "A"} | false | false | false | true | true
- {"s": "AB"} | {"s": "AB"} | false | true | true | true | false
- {"s": "AB"} | {"s": "ABC"} | true | true | false | false | false
- {"s": "AB"} | {"s": "ABc"} | true | true | false | false | false
- {"s": "AB"} | {"s": "ABcD"} | true | true | false | false | false
- {"s": "AB"} | {"s": "B"} | true | true | false | false | false
- {"s": "ABC"} | {"s": ""} | false | false | false | true | true
- {"s": "ABC"} | {"s": "a"} | true | true | false | false | false
- {"s": "ABC"} | {"s": "ab"} | true | true | false | false | false
- {"s": "ABC"} | {"s": "abc"} | true | true | false | false | false
- {"s": "ABC"} | {"s": "abcd"} | true | true | false | false | false
- {"s": "ABC"} | {"s": "b"} | true | true | false | false | false
- {"s": "ABC"} | {"s": "A"} | false | false | false | true | true
- {"s": "ABC"} | {"s": "AB"} | false | false | false | true | true
- {"s": "ABC"} | {"s": "ABC"} | false | true | true | true | false
- {"s": "ABC"} | {"s": "ABc"} | true | true | false | false | false
- {"s": "ABC"} | {"s": "ABcD"} | true | true | false | false | false
- {"s": "ABC"} | {"s": "B"} | true | true | false | false | false
- {"s": "ABc"} | {"s": ""} | false | false | false | true | true
- {"s": "ABc"} | {"s": "a"} | true | true | false | false | false
- {"s": "ABc"} | {"s": "ab"} | true | true | false | false | false
- {"s": "ABc"} | {"s": "abc"} | true | true | false | false | false
- {"s": "ABc"} | {"s": "abcd"} | true | true | false | false | false
- {"s": "ABc"} | {"s": "b"} | true | true | false | false | false
- {"s": "ABc"} | {"s": "A"} | false | false | false | true | true
- {"s": "ABc"} | {"s": "AB"} | false | false | false | true | true
- {"s": "ABc"} | {"s": "ABC"} | false | false | false | true | true
- {"s": "ABc"} | {"s": "ABc"} | false | true | true | true | false
- {"s": "ABc"} | {"s": "ABcD"} | true | true | false | false | false
- {"s": "ABc"} | {"s": "B"} | true | true | false | false | false
- {"s": "ABcD"} | {"s": ""} | false | false | false | true | true
- {"s": "ABcD"} | {"s": "a"} | true | true | false | false | false
- {"s": "ABcD"} | {"s": "ab"} | true | true | false | false | false
- {"s": "ABcD"} | {"s": "abc"} | true | true | false | false | false
- {"s": "ABcD"} | {"s": "abcd"} | true | true | false | false | false
- {"s": "ABcD"} | {"s": "b"} | true | true | false | false | false
- {"s": "ABcD"} | {"s": "A"} | false | false | false | true | true
- {"s": "ABcD"} | {"s": "AB"} | false | false | false | true | true
- {"s": "ABcD"} | {"s": "ABC"} | false | false | false | true | true
- {"s": "ABcD"} | {"s": "ABc"} | false | false | false | true | true
- {"s": "ABcD"} | {"s": "ABcD"} | false | true | true | true | false
- {"s": "ABcD"} | {"s": "B"} | true | true | false | false | false
- {"s": "B"} | {"s": ""} | false | false | false | true | true
- {"s": "B"} | {"s": "a"} | true | true | false | false | false
- {"s": "B"} | {"s": "ab"} | true | true | false | false | false
- {"s": "B"} | {"s": "abc"} | true | true | false | false | false
- {"s": "B"} | {"s": "abcd"} | true | true | false | false | false
- {"s": "B"} | {"s": "b"} | true | true | false | false | false
- {"s": "B"} | {"s": "A"} | false | false | false | true | true
- {"s": "B"} | {"s": "AB"} | false | false | false | true | true
- {"s": "B"} | {"s": "ABC"} | false | false | false | true | true
- {"s": "B"} | {"s": "ABc"} | false | false | false | true | true
- {"s": "B"} | {"s": "ABcD"} | false | false | false | true | true
- {"s": "B"} | {"s": "B"} | false | true | true | true | false
- (144 rows)
|