From: Andrew Dunstan Date: Fri, 3 Jan 2025 14:23:46 +0000 (-0500) Subject: Document strange jsonb sort order for empty top level arrays X-Git-Tag: REL_14_16~48 X-Git-Url: http://git.postgresql.org/gitweb/?a=commitdiff_plain;h=9577dd523b3e3bb7fba66e708dfb9ca76e299b7e;p=postgresql.git Document strange jsonb sort order for empty top level arrays Slightly faulty logic in the original jsonb code (commit d9134d0a355) results in an empty top level array sorting less than a json null. We can't change the sort order now since it would affect btree indexes over jsonb, so document the anomaly. Backpatch to all live branches (13 .. 17) In master, also add a code comment noting the anomaly. Reported-by: Yan Chengpen Reviewed-by: Jian He Discussion: https://postgr.es/m/OSBPR01MB45199DD8DA2D1CECD50518188E272@OSBPR01MB4519.jpnprd01.prod.outlook.com --- diff --git a/doc/src/sgml/json.sgml b/doc/src/sgml/json.sgml index 339fcba4f9e..c5818566692 100644 --- a/doc/src/sgml/json.sgml +++ b/doc/src/sgml/json.sgml @@ -584,12 +584,13 @@ SELECT jdoc->'guid', jdoc->'name' FROM api WHERE jdoc @@ '$.tags[*] == "qui"'; The btree ordering for jsonb datums is seldom of great interest, but for completeness it is: -Object > Array > Boolean > Number > String > Null +Object > Array > Boolean > Number > String > null Object with n pairs > object with n - 1 pairs Array with n elements > array with n - 1 elements + with the exception that (for historical reasons) an empty top level array sorts less than null. Objects with equal numbers of pairs are compared in the order: key-1, value-1, key-2 ...