iris-pgwire 1.2.31__py3-none-any.whl → 1.2.32__py3-none-any.whl

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.
iris_pgwire/__init__.py CHANGED
@@ -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.2.31"
9
+ __version__ = "1.2.32"
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
@@ -339,9 +339,9 @@ class IRISConnectionPool:
339
339
  self._total_created += 1
340
340
 
341
341
  logger.info(
342
- "Removing idle overflow connection",
342
+ "Created new IRIS connection",
343
343
  connection_id=conn_wrapper.connection_id,
344
- idle_seconds=round(conn_wrapper.idle_seconds, 1),
344
+ idle_seconds=round(getattr(conn_wrapper, "idle_seconds", 0.0), 1),
345
345
  )
346
346
 
347
347
  return conn_wrapper
@@ -79,6 +79,7 @@ class DBAPIConnection(BaseModel):
79
79
  pool_recycle_seconds: int = Field(
80
80
  ge=60, description="Maximum connection lifetime before recycling"
81
81
  )
82
+ is_overflow: bool = Field(default=False, description="Whether this is an overflow connection")
82
83
 
83
84
  # Pydantic v2 configuration
84
85
  model_config = ConfigDict(
@@ -101,10 +102,28 @@ class DBAPIConnection(BaseModel):
101
102
  "iris_port": 1972,
102
103
  "iris_namespace": "USER",
103
104
  "pool_recycle_seconds": 3600,
105
+ "is_overflow": False,
104
106
  }
105
107
  },
106
108
  )
107
109
 
110
+ @property
111
+ def idle_seconds(self) -> float:
112
+ """
113
+ Calculate connection idle time in seconds.
114
+
115
+ Returns:
116
+ Seconds since last usage, or since creation if never used.
117
+ """
118
+ reference_time = self.last_used_at or self.created_at
119
+ now = datetime.now(UTC)
120
+
121
+ if now < reference_time:
122
+ # Handle potential clock skew
123
+ return 0.0
124
+
125
+ return (now - reference_time).total_seconds()
126
+
108
127
  def age_seconds(self) -> float:
109
128
  """
110
129
  Calculate connection age in seconds.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: iris-pgwire
3
- Version: 1.2.31
3
+ Version: 1.2.32
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
@@ -1,4 +1,4 @@
1
- iris_pgwire/__init__.py,sha256=ng9m-ofXgxvBjHL3pWaPIJoPa0DOPOlMsQPJPDkaOfI,1097
1
+ iris_pgwire/__init__.py,sha256=Ja7xWzfwLgqZlu7YJqHrYksjf-LyPyvlNy_VQWkOeWg,1097
2
2
  iris_pgwire/backend_selector.py,sha256=e0DymV-TsGkvp2iItcxkSWSUM8Nf_Agw-LDo78itW04,9315
3
3
  iris_pgwire/bulk_executor.py,sha256=nUp5e1ARUzRzFYmctqCS5Zh1gh09IV8H5-Sr2IbKbWg,12742
4
4
  iris_pgwire/column_validator.py,sha256=0T2UlLzwH0mEsDkkPXqiUGz4t49o6ySBGtLRyeiGyQc,6806
@@ -6,7 +6,7 @@ iris_pgwire/config_schema.py,sha256=aCFJcOwrPBd0_ppW7T0mr_eyXoucWgSh4B9YQ3Y8AE4,
6
6
  iris_pgwire/constitutional.py,sha256=4rrl0DdZRzzcT8mppie93ajiZ_WI-TyBDxZ_Z_ZLGY8,22075
7
7
  iris_pgwire/copy_handler.py,sha256=uxvlOcdLiK91qASMcYDlY7rtDc2fmgDmZS9tjTE0WQw,15647
8
8
  iris_pgwire/csv_processor.py,sha256=tUv-HOvrQ9KdlBk6MbYtOFvX5Ckz6WIWgJXOhDlky4I,8564
9
- iris_pgwire/dbapi_connection_pool.py,sha256=HLJZGCTlS7ndqkgReJnVwWbVYIH4KIxGqWyzEkm-gOk,17136
9
+ iris_pgwire/dbapi_connection_pool.py,sha256=84hsbGKscQoj3o2zmNKPDgQMftN7JK0ez_WQpx1P98o,17147
10
10
  iris_pgwire/dbapi_executor.py,sha256=U5hRrpYivWKIjeL1nTkJyVpGx1kzSDt_DABm4m0Ahlw,21076
11
11
  iris_pgwire/debug_tracer.py,sha256=9w6Bve8cnzFPPa69ux3OcR5DMLtjI_NdEFw8TvuwlPM,11112
12
12
  iris_pgwire/health_checker.py,sha256=5U7HHKmpzn_G9gcExbRTlJZdD47v4a2FqACVNMpURys,7094
@@ -50,7 +50,7 @@ iris_pgwire/conversions/vector_syntax.py,sha256=JZEeM2MISg2O9wX_wj5Sx-H1-zUjFB3B
50
50
  iris_pgwire/models/__init__.py,sha256=BF4lBerGBXTZ1zDmGvm5FIvoUb3oWtCrA3CakOyex3c,578
51
51
  iris_pgwire/models/backend_config.py,sha256=l7i18AaWxVk_9wyx4_bXS1ZsshQ4whWQeXeSKe-Tflc,8544
52
52
  iris_pgwire/models/connection_pool_state.py,sha256=K9wh91ZpKhR9_G4LzGKanoLtwcnqr3xUhoD9jyr9D-g,5592
53
- iris_pgwire/models/dbapi_connection.py,sha256=tn2xiHS28y4xZEipBsTEj6rNcHQxWL8c_isyvpOv15c,7380
53
+ iris_pgwire/models/dbapi_connection.py,sha256=j8ZEH3zo7KDSa1AzMCMA0bujk5Wx0JnB6JwiqpKY_to,7981
54
54
  iris_pgwire/models/ipm_metadata.py,sha256=ZCqAefwkPzY2wYF1gCBkGefmFp5mVZcPsjS2QoaOHrY,8629
55
55
  iris_pgwire/models/vector_query_request.py,sha256=1YOq544jmQg8YxTGZ2EqT_rft8J9D6C98TSQzx-az1Q,6240
56
56
  iris_pgwire/quality/__init__.py,sha256=nhs34LxYn4v8MGdIEVmekOQJ7moJi_jgrhNef6LHPmU,1218
@@ -96,8 +96,8 @@ iris_pgwire/sql_translator/mappings/document_filters.py,sha256=gjkwxspizx9ObHUHJ
96
96
  iris_pgwire/sql_translator/mappings/functions.py,sha256=9-lHfvGKbHlTMOdKtu0k6wH-mUth3alGZYQ5WXexWQI,19982
97
97
  iris_pgwire/testing/__init__.py,sha256=_HBL11torW_QjZh2X3DusLlkmFp9YNb0fYoo_0_Jo3U,46
98
98
  iris_pgwire/testing/base_fixture_builder.py,sha256=gVMGEXWjPkMPCpmvFzX9Yc5ZGLKtY8c1yj0YruHcwd8,11593
99
- iris_pgwire-1.2.31.dist-info/METADATA,sha256=gchZk20a4Ys28nOMO1fctr045X8zgCpitwqV6Qukki4,14660
100
- iris_pgwire-1.2.31.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
101
- iris_pgwire-1.2.31.dist-info/entry_points.txt,sha256=pUOj368R5kSiRFbk4sqKUymPgBRNK3MZ9oYWAX5WZ3k,56
102
- iris_pgwire-1.2.31.dist-info/licenses/LICENSE,sha256=7C-kc5Ll8ZAWzCD882nr7ptzHdwhc-LXm-wpQ3AxRaU,1099
103
- iris_pgwire-1.2.31.dist-info/RECORD,,
99
+ iris_pgwire-1.2.32.dist-info/METADATA,sha256=NXcxcTOddAeu48pVqOgkyPTHv5VU2OMx56bCTMUk5gY,14660
100
+ iris_pgwire-1.2.32.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
101
+ iris_pgwire-1.2.32.dist-info/entry_points.txt,sha256=pUOj368R5kSiRFbk4sqKUymPgBRNK3MZ9oYWAX5WZ3k,56
102
+ iris_pgwire-1.2.32.dist-info/licenses/LICENSE,sha256=7C-kc5Ll8ZAWzCD882nr7ptzHdwhc-LXm-wpQ3AxRaU,1099
103
+ iris_pgwire-1.2.32.dist-info/RECORD,,