iris-pgwire 1.7.1__tar.gz → 1.7.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (133) hide show
  1. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/PKG-INFO +1 -1
  2. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/__init__.py +1 -1
  3. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/catalog/functions.py +40 -40
  4. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/conversions/ddl_idempotency.py +2 -0
  5. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/.gitignore +0 -0
  6. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/LICENSE +0 -0
  7. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/README.md +0 -0
  8. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/pyproject.toml +0 -0
  9. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/_column_naming.py +0 -0
  10. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/_noop_cursor.py +0 -0
  11. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/_result_processing.py +0 -0
  12. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/_type_mapping.py +0 -0
  13. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/auth/__init__.py +0 -0
  14. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/auth/auth_selector.py +0 -0
  15. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/auth/gssapi_auth.py +0 -0
  16. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/auth/oauth_bridge.py +0 -0
  17. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/auth/scram.py +0 -0
  18. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/auth/wallet_credentials.py +0 -0
  19. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/backend_selector.py +0 -0
  20. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/bulk_executor.py +0 -0
  21. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/catalog/__init__.py +0 -0
  22. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/catalog/_reentrancy.py +0 -0
  23. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/catalog/catalog_functions.py +0 -0
  24. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/catalog/catalog_router.py +0 -0
  25. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/catalog/function_installer.py +0 -0
  26. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/catalog/oid_generator.py +0 -0
  27. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/catalog/pg_attrdef.py +0 -0
  28. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/catalog/pg_attribute.py +0 -0
  29. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/catalog/pg_class.py +0 -0
  30. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/catalog/pg_constraint.py +0 -0
  31. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/catalog/pg_index.py +0 -0
  32. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/catalog/pg_namespace.py +0 -0
  33. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/catalog/pg_type.py +0 -0
  34. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/catalog/views/__init__.py +0 -0
  35. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/catalog/views/definitions.py +0 -0
  36. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/catalog/views/installer.py +0 -0
  37. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/column_validator.py +0 -0
  38. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/config.py +0 -0
  39. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/config_schema.py +0 -0
  40. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/constitutional.py +0 -0
  41. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/conversions/__init__.py +0 -0
  42. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/conversions/bulk_insert.py +0 -0
  43. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/conversions/date_horolog.py +0 -0
  44. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/conversions/ddl_splitter.py +0 -0
  45. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/conversions/json_path.py +0 -0
  46. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/conversions/vector_syntax.py +0 -0
  47. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/copy_handler.py +0 -0
  48. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/csv_processor.py +0 -0
  49. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/dbapi_connection_pool.py +0 -0
  50. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/dbapi_executor.py +0 -0
  51. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/debug_tracer.py +0 -0
  52. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/health_checker.py +0 -0
  53. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/integratedml.py +0 -0
  54. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/iris_constructs.py +0 -0
  55. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/iris_executor.py +0 -0
  56. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/iris_log_handler.py +0 -0
  57. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/iris_user_management.py +0 -0
  58. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/migrations/__init__.py +0 -0
  59. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/migrations/__main__.py +0 -0
  60. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/migrations/executor.py +0 -0
  61. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/models/__init__.py +0 -0
  62. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/models/backend_config.py +0 -0
  63. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/models/connection_pool_state.py +0 -0
  64. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/models/dbapi_connection.py +0 -0
  65. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/models/ipm_metadata.py +0 -0
  66. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/models/vector_query_request.py +0 -0
  67. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/observability.py +0 -0
  68. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/performance_monitor.py +0 -0
  69. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/protocol.py +0 -0
  70. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/quality/__init__.py +0 -0
  71. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/quality/__main__.py +0 -0
  72. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/quality/code_quality_validator.py +0 -0
  73. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/quality/documentation_validator.py +0 -0
  74. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/quality/package_metadata_validator.py +0 -0
  75. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/quality/security_validator.py +0 -0
  76. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/quality/validator.py +0 -0
  77. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/schema_mapper.py +0 -0
  78. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/server.py +0 -0
  79. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/sql_translator/__init__.py +0 -0
  80. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/sql_translator/alias_extractor.py +0 -0
  81. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/sql_translator/api.py +0 -0
  82. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/sql_translator/array_literal.py +0 -0
  83. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/sql_translator/array_params.py +0 -0
  84. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/sql_translator/boolean_expr.py +0 -0
  85. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/sql_translator/boolean_translator.py +0 -0
  86. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/sql_translator/cache.py +0 -0
  87. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/sql_translator/column_types.py +0 -0
  88. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/sql_translator/confidence_analyzer.py +0 -0
  89. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/sql_translator/config.py +0 -0
  90. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/sql_translator/constraint_translator.py +0 -0
  91. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/sql_translator/copy_parser.py +0 -0
  92. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/sql_translator/date_translator.py +0 -0
  93. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/sql_translator/ddl_parser.py +0 -0
  94. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/sql_translator/ddl_translator.py +0 -0
  95. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/sql_translator/debug.py +0 -0
  96. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/sql_translator/default_values.py +0 -0
  97. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/sql_translator/enum_registry.py +0 -0
  98. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/sql_translator/enum_translator.py +0 -0
  99. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/sql_translator/error_handler.py +0 -0
  100. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/sql_translator/identifier_normalizer.py +0 -0
  101. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/sql_translator/index_validator.py +0 -0
  102. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/sql_translator/interceptor.py +0 -0
  103. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/sql_translator/logging_config.py +0 -0
  104. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/sql_translator/mappings/__init__.py +0 -0
  105. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/sql_translator/mappings/constructs.py +0 -0
  106. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/sql_translator/mappings/datatypes.py +0 -0
  107. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/sql_translator/mappings/document_filters.py +0 -0
  108. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/sql_translator/mappings/functions.py +0 -0
  109. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/sql_translator/metadata_cache.py +0 -0
  110. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/sql_translator/metrics.py +0 -0
  111. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/sql_translator/models.py +0 -0
  112. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/sql_translator/normalizer.py +0 -0
  113. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/sql_translator/parser.py +0 -0
  114. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/sql_translator/performance_monitor.py +0 -0
  115. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/sql_translator/pg_array.py +0 -0
  116. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/sql_translator/pg_functions.py +0 -0
  117. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/sql_translator/pipeline.py +0 -0
  118. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/sql_translator/refiner.py +0 -0
  119. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/sql_translator/reserved_words.py +0 -0
  120. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/sql_translator/returning_plan.py +0 -0
  121. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/sql_translator/skipped_table_set.py +0 -0
  122. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/sql_translator/sqlstate.py +0 -0
  123. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/sql_translator/statement_filter.py +0 -0
  124. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/sql_translator/transaction_translator.py +0 -0
  125. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/sql_translator/translator.py +0 -0
  126. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/sql_translator/type_translator.py +0 -0
  127. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/sql_translator/validator.py +0 -0
  128. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/sql_translator/verbatim.py +0 -0
  129. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/testing/__init__.py +0 -0
  130. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/testing/base_fixture_builder.py +0 -0
  131. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/type_mapping.py +0 -0
  132. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/vector_metrics.py +0 -0
  133. {iris_pgwire-1.7.1 → iris_pgwire-1.7.2}/src/iris_pgwire/vector_optimizer.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: iris-pgwire
3
- Version: 1.7.1
3
+ Version: 1.7.2
4
4
  Summary: PostgreSQL Wire Protocol Server for InterSystems IRIS - Connect BI tools, Python frameworks, and PostgreSQL clients to IRIS databases
5
5
  Project-URL: Homepage, https://github.com/intersystems-community/iris-pgwire
6
6
  Project-URL: Documentation, https://github.com/intersystems-community/iris-pgwire#readme
@@ -6,7 +6,7 @@ Based on the specification from docs/iris_pgwire_plan.md and proven patterns fro
6
6
  caretdev/sqlalchemy-iris.
7
7
  """
8
8
 
9
- __version__ = "1.7.1"
9
+ __version__ = "1.7.2"
10
10
  __author__ = "Thomas Dyar <thomas.dyar@intersystems.com>"
11
11
 
12
12
  # Don't import server/protocol in __init__ to avoid sys.modules conflicts
@@ -491,57 +491,57 @@ JSONB_BUILD_OBJECT6 = CatalogFunction(
491
491
 
492
492
  JSONB_CONTAINS = CatalogFunction(
493
493
  name="JSONB_CONTAINS",
494
- signature="leftJson VARCHAR(65535), rightJson VARCHAR(65535)",
494
+ signature="LEFTJSON VARCHAR(65535), RIGHTJSON VARCHAR(65535)",
495
495
  returns="INTEGER",
496
496
  purpose="PostgreSQL jsonb @> containment operator — returns 1 if rightJson is contained in leftJson, 0 otherwise",
497
497
  body="""{
498
- set tResult = 0
499
- if (rightJson = "") || (rightJson = "{}") || (rightJson = "[]") { quit 1 }
500
- if (leftJson = "") || (leftJson = "null") { quit 0 }
501
- set tLeft = "", tRight = ""
502
- try {
503
- set tLeft = ##class(%DynamicAbstractObject).%FromJSON(leftJson)
504
- set tRight = ##class(%DynamicAbstractObject).%FromJSON(rightJson)
505
- } catch ex {
506
- set tLeft = "", tRight = ""
498
+ SET TRESULT = 0
499
+ IF (RIGHTJSON = "") || (RIGHTJSON = "{}") || (RIGHTJSON = "[]") { QUIT 1 }
500
+ IF (LEFTJSON = "") || ($ZCVT(LEFTJSON,"L") = "null") { QUIT 0 }
501
+ SET TLEFT = "", TRIGHT = ""
502
+ TRY {
503
+ SET TLEFT = ##CLASS(%DynamicAbstractObject).%FromJSON(LEFTJSON)
504
+ SET TRIGHT = ##CLASS(%DynamicAbstractObject).%FromJSON(RIGHTJSON)
505
+ } CATCH EX {
506
+ SET TLEFT = "", TRIGHT = ""
507
507
  }
508
- if $isobject(tRight) = 0 { quit (tLeft = tRight) }
509
- if tRight.%IsA("%DynamicObject") {
510
- if $isobject(tLeft) = 0 { quit 0 }
511
- if 'tLeft.%IsA("%DynamicObject") { quit 0 }
512
- set tResult = 1
513
- set tIter = tRight.%GetIterator()
514
- while tIter.%GetNext(.tKey, .tRVal) && tResult {
515
- set tLVal = tLeft.%Get(tKey)
516
- if $isobject(tRVal) {
517
- if $isobject(tLVal) = 0 { set tResult = 0 quit }
518
- if ##class(PGWire.funcJSONBCONTAINS).JSONBCONTAINS(tLVal.%ToJSON(), tRVal.%ToJSON()) = 0 { set tResult = 0 }
519
- } else {
520
- if (tLVal '= tRVal) { set tResult = 0 }
508
+ IF $ISOBJECT(TRIGHT) = 0 { QUIT (TLEFT = TRIGHT) }
509
+ IF $ZCVT($CLASSNAME(TRIGHT),"U") = "%LIBRARY.DYNAMICOBJECT" {
510
+ IF $ISOBJECT(TLEFT) = 0 { QUIT 0 }
511
+ IF $ZCVT($CLASSNAME(TLEFT),"U") '= "%LIBRARY.DYNAMICOBJECT" { QUIT 0 }
512
+ SET TRESULT = 1
513
+ SET TITER = TRIGHT.%GetIterator()
514
+ WHILE TITER.%GetNext(.TKEY, .TRVAL) && TRESULT {
515
+ SET TLVAL = TLEFT.%Get(TKEY)
516
+ IF $ISOBJECT(TRVAL) {
517
+ IF $ISOBJECT(TLVAL) = 0 { SET TRESULT = 0 QUIT }
518
+ IF ##CLASS(PGWire.funcJSONBCONTAINS).JSONBCONTAINS(TLVAL.%ToJSON(), TRVAL.%ToJSON()) = 0 { SET TRESULT = 0 }
519
+ } ELSE {
520
+ IF (TLVAL '= TRVAL) { SET TRESULT = 0 }
521
521
  }
522
522
  }
523
- quit tResult
523
+ QUIT TRESULT
524
524
  }
525
- if tRight.%IsA("%DynamicArray") {
526
- if $isobject(tLeft) = 0 { quit 0 }
527
- if 'tLeft.%IsA("%DynamicArray") { quit 0 }
528
- set tResult = 1
529
- set tIterR = tRight.%GetIterator()
530
- while tIterR.%GetNext(, .tRVal) && tResult {
531
- set tFound = 0
532
- set tIterL = tLeft.%GetIterator()
533
- while tIterL.%GetNext(, .tLVal) {
534
- if $isobject(tRVal) && $isobject(tLVal) {
535
- if ##class(PGWire.funcJSONBCONTAINS).JSONBCONTAINS(tLVal.%ToJSON(), tRVal.%ToJSON()) { set tFound = 1 quit }
536
- } elseif (tLVal = tRVal) {
537
- set tFound = 1 quit
525
+ IF $ZCVT($CLASSNAME(TRIGHT),"U") = "%LIBRARY.DYNAMICARRAY" {
526
+ IF $ISOBJECT(TLEFT) = 0 { QUIT 0 }
527
+ IF $ZCVT($CLASSNAME(TLEFT),"U") '= "%LIBRARY.DYNAMICARRAY" { QUIT 0 }
528
+ SET TRESULT = 1
529
+ SET TITERR = TRIGHT.%GetIterator()
530
+ WHILE TITERR.%GetNext(, .TRVAL) && TRESULT {
531
+ SET TFOUND = 0
532
+ SET TITERL = TLEFT.%GetIterator()
533
+ WHILE TITERL.%GetNext(, .TLVAL) {
534
+ IF $ISOBJECT(TRVAL) && $ISOBJECT(TLVAL) {
535
+ IF ##CLASS(PGWire.funcJSONBCONTAINS).JSONBCONTAINS(TLVAL.%ToJSON(), TRVAL.%ToJSON()) { SET TFOUND = 1 QUIT }
536
+ } ELSEIF (TLVAL = TRVAL) {
537
+ SET TFOUND = 1 QUIT
538
538
  }
539
539
  }
540
- if 'tFound { set tResult = 0 }
540
+ IF 'TFOUND { SET TRESULT = 0 }
541
541
  }
542
- quit tResult
542
+ QUIT TRESULT
543
543
  }
544
- quit (tLeft = tRight)
544
+ QUIT (TLEFT = TRIGHT)
545
545
  }""",
546
546
  )
547
547
 
@@ -109,6 +109,8 @@ class DdlErrorHandler:
109
109
  r"already\s+exists",
110
110
  r"Duplicate\s+table\s+name",
111
111
  r"Duplicate\s+index\s+name",
112
+ # IRIS: "Class 'Schema.Table' already has index named 'IdxName'."
113
+ r"already\s+has\s+index\s+named",
112
114
  r"SQLCODE\s*[:\s]\s*<?-?\d+>?", # IRIS SQLCODEs often indicate duplicates
113
115
  ]
114
116
  return any(re.search(p, error_msg, re.IGNORECASE) for p in patterns)
File without changes
File without changes
File without changes
File without changes