mirror of
https://github.com/postgres/postgres.git
synced 2025-10-25 13:17:41 +03:00
Clarify the ra != rb case in compareJsonbContainers().
It's impossible to reach this case with either ra or rb being WJB_DONE, because our earlier checks that the structure and length of the inputs match should guarantee that we reach their ends simultaneously. However, the comment completely fails to explain this, and the Asserts don't cover it either. The comment is pretty obscure anyway, so rewrite it, and extend the Asserts to reject WJB_DONE. This is only cosmetic, so no need for back-patch. Author: Tom Lane <tgl@sss.pgh.pa.us> Discussion: https://postgr.es/m/0c623e8a204187b87b4736792398eaf1@postgrespro.ru
This commit is contained in:
@@ -277,19 +277,16 @@ compareJsonbContainers(JsonbContainer *a, JsonbContainer *b)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* If the two values were of the same container type, then there'd
|
* It's not possible for one iterator to report end of array or
|
||||||
* have been a chance to observe the variation in the number of
|
* object while the other one reports something else, because we
|
||||||
* elements/pairs (when processing WJB_BEGIN_OBJECT, say). They're
|
* would have detected a length mismatch when we processed the
|
||||||
* either two heterogeneously-typed containers, or a container and
|
* container-start tokens above. Likewise we can't see WJB_DONE
|
||||||
* some scalar type.
|
* from one but not the other. So we have two different-type
|
||||||
*
|
* containers, or a container and some scalar type, or two
|
||||||
* We don't have to consider the WJB_END_ARRAY and WJB_END_OBJECT
|
* different scalar types. Sort on the basis of the type code.
|
||||||
* cases here, because we would have seen the corresponding
|
|
||||||
* WJB_BEGIN_ARRAY and WJB_BEGIN_OBJECT tokens first, and
|
|
||||||
* concluded that they don't match.
|
|
||||||
*/
|
*/
|
||||||
Assert(ra != WJB_END_ARRAY && ra != WJB_END_OBJECT);
|
Assert(ra != WJB_DONE && ra != WJB_END_ARRAY && ra != WJB_END_OBJECT);
|
||||||
Assert(rb != WJB_END_ARRAY && rb != WJB_END_OBJECT);
|
Assert(rb != WJB_DONE && rb != WJB_END_ARRAY && rb != WJB_END_OBJECT);
|
||||||
|
|
||||||
Assert(va.type != vb.type);
|
Assert(va.type != vb.type);
|
||||||
Assert(va.type != jbvBinary);
|
Assert(va.type != jbvBinary);
|
||||||
|
|||||||
Reference in New Issue
Block a user