vgi-python 0.36.0__py3-none-any.whl → 0.36.1__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.
@@ -18,8 +18,8 @@ ways it goes right:
18
18
  shape that silently truncates a scan if a reader treats an empty split as EOS.
19
19
  * ``split_skewed(n)`` — one split ~100x the others, so greedy claiming can be
20
20
  told apart from static assignment.
21
- * ``split_many(n, splits := 1000)`` — far more splits than reader threads, which
22
- forces sequential re-init on a reused connection.
21
+ * ``split_many(n, splits)`` — far more splits than reader threads (pass them), which
22
+ forces sequential re-init on a reused connection. ``splits <= 0`` means 1000.
23
23
  * ``split_echo_filters(n)`` — reports the pushdown it saw *per split*, so a
24
24
  pushdown regression is visible without inferring it from row counts.
25
25
  """
@@ -322,7 +322,9 @@ class SplitManyFunction(_SplitBase):
322
322
 
323
323
  @classmethod
324
324
  def _split_count(cls, params: BindParams[SplitSequenceArgs]) -> int:
325
- return max(params.args.splits, 1000)
325
+ # Honour the caller's count, as every other SDK's twin does; a floor here
326
+ # made a test that asks for 64 splits pay for 1000 HTTP round trips.
327
+ return params.args.splits if params.args.splits > 0 else 1000
326
328
 
327
329
 
328
330
  @dataclass(frozen=True)
vgi/aggregate_function.py CHANGED
@@ -518,7 +518,14 @@ class AggregateFunction[TState: StreamStateCodec](vgi.function.Function):
518
518
  """Compute the aggregate value for one output row.
519
519
 
520
520
  Args:
521
- rid: Partition-local row index being filled.
521
+ rid: Identifies the output row being filled; do not use it to
522
+ index the partition. Over the per-row ``aggregate_window``
523
+ RPC it is DuckDB's own ``rid``: the row's index within the
524
+ current output chunk (``0 <= rid < 2048``), not its row in
525
+ the partition. When the default :meth:`window_batch` calls
526
+ this, it passes the partition row index instead. Either way
527
+ ``subframes`` are partition-relative: use them to find the
528
+ rows to aggregate.
522
529
  subframes: Frame ranges ``[(begin, end), ...]`` — 1 for the default
523
530
  frame, 3 when ``EXCLUDE`` produces multiple subframes.
524
531
  partition: The cached partition data.
vgi/client/aggregate.py CHANGED
@@ -371,7 +371,10 @@ class AggregateSession:
371
371
 
372
372
  Args:
373
373
  partition_id: The partition previously shipped by :meth:`window_init`.
374
- rid: Row index within the partition of the output row being computed.
374
+ rid: Identifies the output row. The DuckDB extension sends DuckDB's
375
+ own per-row ``rid``, the row's index within the current output
376
+ chunk rather than its row in the partition; ``frames`` carry the
377
+ partition-relative bounds, and a worker must use those.
375
378
  frames: The row's subframes as ``(begin, end)`` half-open offsets
376
379
  into the partition. One entry normally; two or three for
377
380
  ``EXCLUDE TIES`` / ``EXCLUDE GROUP``.
vgi/protocol.py CHANGED
@@ -2887,7 +2887,10 @@ class AggregateWindowRequest(ArrowSerializableDataclass):
2887
2887
  execution_id: Identifier for one query execution, stable across the
2888
2888
  coordinator and any secondary workers; keys worker-owned state.
2889
2889
  partition_id: Identifier of the window partition this call addresses.
2890
- rid: Row index within the partition for the output row being computed.
2890
+ rid: Which output row this call fills, as DuckDB's per-row window callback
2891
+ reports it: the row's index within the current output chunk
2892
+ (``0 <= rid < STANDARD_VECTOR_SIZE``), NOT its row in the partition.
2893
+ The frames below are partition-relative; use them to find the rows.
2891
2894
  frame_starts: Subframe start offsets (inclusive) within the partition, one
2892
2895
  per subframe.
2893
2896
  frame_ends: Subframe end offsets (exclusive) within the partition, parallel
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: vgi-python
3
- Version: 0.36.0
3
+ Version: 0.36.1
4
4
  Summary: Vector Gateway Interface - Connect DuckDB to external programs via Apache Arrow
5
5
  Project-URL: Homepage, https://query.farm
6
6
  Project-URL: Repository, https://github.com/Query-farm/vgi-python
@@ -1,7 +1,7 @@
1
1
  vgi/__init__.py,sha256=8uLMNQcNzWjp8VzYtj2u98_Wp8WpB8c_dKlMv67TH0g,5384
2
2
  vgi/_duckdb.py,sha256=YB5D7N3Bwg_xP6X8a5QlumtlAovSej1A1Go5XlNGVko,2162
3
3
  vgi/_storage_profile.py,sha256=VkTsXojuE0tHEzurmteQSAiL1vI3CZSgYkL6D_h8GvE,5061
4
- vgi/aggregate_function.py,sha256=v03wBSy2Rrl9F2pMYvu8GnGrTCQrAVm01HXIFNdjnm4,26886
4
+ vgi/aggregate_function.py,sha256=NYxudbvQ9ZLkP2w5hRdd4YgsGUZ_0cVfqqXnlmJPfls,27389
5
5
  vgi/argument_spec.py,sha256=SADH97VlFu3asI8CWZ_I7XTuSxwqFciFgdupdAf-tkY,34231
6
6
  vgi/arguments.py,sha256=ncnC1CS7KN-2rDjSw9vdf1uHqV5ozebet_eZtcq_ujw,72300
7
7
  vgi/attach_header.py,sha256=sxpzCOVa5fl_-kQSCZgeUxS5I9Kuv8VCUjAOF5s1pr0,3782
@@ -22,7 +22,7 @@ vgi/meta_worker.py,sha256=WggIKvDAlahSrBPaVM7ZqVWk3Xc3JNE70EgeoXdy-3w,31725
22
22
  vgi/metadata.py,sha256=M8KZObX1wwCr2lPjgDL0-79gPbeM_NSOIqYCIAAck5M,74719
23
23
  vgi/otel.py,sha256=JlUDnk2c0UXSo_j1PJdS67Y--t55sXPg054ADuvHANc,15452
24
24
  vgi/profiling.py,sha256=rK7vij3oHhXC3JHI2BsMySsXh7_hrXi0aXpCW8iFSIc,3671
25
- vgi/protocol.py,sha256=iKuo-k6oH9nss_33LfYcekBBNhsM-yeHY0T5fwgg7iw,170333
25
+ vgi/protocol.py,sha256=8exFFAV4Zo1ltEPVtoWhJdlOG3TcdqxkmtwOv1mRLNs,170570
26
26
  vgi/protocol_version.txt,sha256=wo_MpTY3vIjhJK8XJd8Ty5jGne3v1i-zzb4c22t2BiQ,6
27
27
  vgi/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
28
28
  vgi/scalar_function.py,sha256=YBy5s4eEBYTMjACGPE-8-82BObyJoM9qt9cnm24b_RQ,53485
@@ -110,7 +110,7 @@ vgi/_test_fixtures/table/same_name_cached.py,sha256=JMXSXTcqyO7XwWqIizgddlTvLYuU
110
110
  vgi/_test_fixtures/table/same_name_schemas.py,sha256=yRti9HXO3-Y9ahiLIHoaZ31LvWjtPSbjxmPJyoQ_0mQ,4930
111
111
  vgi/_test_fixtures/table/sequence.py,sha256=0kOckCwRu19RMKgFrUcnnnDR8e0utjX_E2kD3w6NnRU,26352
112
112
  vgi/_test_fixtures/table/settings.py,sha256=C4J5OKY3vgNbB09QAiQlzwhI3Tc5wtewHHLFhO5xvo4,16689
113
- vgi/_test_fixtures/table/splits.py,sha256=jN1pt_dL0f9JAJXfMzIIO2-V6qH9vS4GF5q2xejjUl4,48333
113
+ vgi/_test_fixtures/table/splits.py,sha256=CNPj98k1G-gqh-orppzHkUSUh2x058HgZAIjCyRoxjM,48549
114
114
  vgi/_test_fixtures/table/transaction_storage.py,sha256=cGSaM25cE6brwbUJ0-mchocX0UfwOb7uscCATKLYeME,6086
115
115
  vgi/_test_fixtures/table/tt_pushdown.py,sha256=jMELJ2HkG5-yIuYqKRYaPSouJxs3N-tiWRPthoPZ9ko,7420
116
116
  vgi/_test_fixtures/table/typed_probe.py,sha256=JjgLeHuhkXAVnCcezgqR7ayXMp3tTTixegftCwjKOSY,5122
@@ -130,7 +130,7 @@ vgi/catalog/secret_type.py,sha256=1DoEMyQun9K5z53817rUuhG1YpHSEAsazEmubkRLVL0,37
130
130
  vgi/catalog/setting.py,sha256=06QfgaAR-0BKflIJ0du6PGqA5BPMdrkwr6u7f4nddII,1846
131
131
  vgi/catalog/storage.py,sha256=DhngzywbhQUfLF7NjFyiPp4Sw2ovOhcUXAuW3rkBQD8,11935
132
132
  vgi/client/__init__.py,sha256=mFLHTWI4DjWz_Yp0dE9k5U_PtrRGTe2Az0GJELMwwMc,2467
133
- vgi/client/aggregate.py,sha256=5cdd3RjwvRW3I6GwXE1-xJq3_rD6HnLl9olUG5h74bI,38252
133
+ vgi/client/aggregate.py,sha256=EAaI-4d1mnNjGORZvLf3wfVuu8RXBTFGVbMek0DeGDg,38482
134
134
  vgi/client/catalog_mixin.py,sha256=uh-UCdrROyyc3JiwzHI1q3fSHWmiECsCuLzM7VzOCfc,58652
135
135
  vgi/client/cli.py,sha256=nahuRCjday0z74Gk9zxOxIOJX9n6fHrP7-CGwJoyTzU,22754
136
136
  vgi/client/cli_catalog.py,sha256=twjlhHGl7n2mNN4jc7DnDRQr-Zj9KLAF2eATIQnITHQ,5577
@@ -152,8 +152,8 @@ vgi/transactor/_duckdb_compat.py,sha256=sXVZ9JLKAQyGR1BjWczSwdQEavtr-TcZPoVZZnTr
152
152
  vgi/transactor/client.py,sha256=7DTeMksogsw6ANjQjGOPpKYrV76rg4_kGjktMJf54jg,4486
153
153
  vgi/transactor/protocol.py,sha256=v59IvrKnuvwOXvn_HEcBAbCzDVcx0akgKN0R1mChXg0,5034
154
154
  vgi/transactor/server.py,sha256=nzsZQxJZdgappdYX8okrFIrjFtUbdM_Hhskl1fZ2nDY,32553
155
- vgi_python-0.36.0.dist-info/METADATA,sha256=AURP4Y2G9g1qjUinaOSYm_owju8eSRHibiK_8Z0B7p8,25617
156
- vgi_python-0.36.0.dist-info/WHEEL,sha256=THafob7ofN-NsuMN7Mg4qZyHaQI7KkD-QlcQatYhXPo,87
157
- vgi_python-0.36.0.dist-info/entry_points.txt,sha256=3Kz1vgodw3pOL_xjtSyDB55-ZRy-U2X-X_Bdr582x0Q,165
158
- vgi_python-0.36.0.dist-info/licenses/LICENSE,sha256=pbJb4zZasP6n5ifEV81wFu017TarjydaYVmGbHcehtY,6103
159
- vgi_python-0.36.0.dist-info/RECORD,,
155
+ vgi_python-0.36.1.dist-info/METADATA,sha256=KiNZHizy9p1n8zOX0mFjOPot5qz_HCfD-qmipkpSBdc,25617
156
+ vgi_python-0.36.1.dist-info/WHEEL,sha256=THafob7ofN-NsuMN7Mg4qZyHaQI7KkD-QlcQatYhXPo,87
157
+ vgi_python-0.36.1.dist-info/entry_points.txt,sha256=3Kz1vgodw3pOL_xjtSyDB55-ZRy-U2X-X_Bdr582x0Q,165
158
+ vgi_python-0.36.1.dist-info/licenses/LICENSE,sha256=pbJb4zZasP6n5ifEV81wFu017TarjydaYVmGbHcehtY,6103
159
+ vgi_python-0.36.1.dist-info/RECORD,,