vastdb 1.1.1__py3-none-any.whl → 1.2.0__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.
vastdb/schema.py CHANGED
@@ -103,9 +103,7 @@ class Schema:
103
103
  log.debug("Found table: %s", t[0])
104
104
  return t[0]
105
105
 
106
- def tables(self, table_name=None) -> List["Table"]:
107
- """List all tables under this schema."""
108
- tables = []
106
+ def _iter_tables(self, table_name=None):
109
107
  next_key = 0
110
108
  name_prefix = table_name if table_name else ""
111
109
  exact_match = bool(table_name)
@@ -116,11 +114,20 @@ class Schema:
116
114
  exact_match=exact_match, name_prefix=name_prefix, include_list_stats=exact_match)
117
115
  if not curr_tables:
118
116
  break
119
- tables.extend(curr_tables)
117
+ yield from curr_tables
120
118
  if not is_truncated:
121
119
  break
122
120
 
123
- return [_parse_table_info(table, self) for table in tables]
121
+ def tables(self, table_name=None) -> List["Table"]:
122
+ """List all tables under this schema."""
123
+ return [
124
+ _parse_table_info(table_info, self)
125
+ for table_info in self._iter_tables(table_name=table_name)
126
+ ]
127
+
128
+ def tablenames(self) -> List[str]:
129
+ """List all table names under this schema."""
130
+ return [table_info.name for table_info in self._iter_tables()]
124
131
 
125
132
  def drop(self) -> None:
126
133
  """Delete this schema."""
vastdb/table.py CHANGED
@@ -474,16 +474,17 @@ class Table:
474
474
  rows_chunk = rows[INTERNAL_ROW_ID]
475
475
  except KeyError:
476
476
  raise errors.MissingRowIdColumn
477
- if columns is not None:
478
- update_fields = [(INTERNAL_ROW_ID, pa.uint64())]
479
- update_values = [_combine_chunks(rows_chunk)]
480
- for col in columns:
481
- update_fields.append(rows.field(col))
482
- update_values.append(_combine_chunks(rows[col]))
483
-
484
- update_rows_rb = pa.record_batch(schema=pa.schema(update_fields), data=update_values)
485
- else:
486
- update_rows_rb = rows
477
+
478
+ if columns is None:
479
+ columns = [name for name in rows.schema.names if name != INTERNAL_ROW_ID]
480
+
481
+ update_fields = [(INTERNAL_ROW_ID, pa.uint64())]
482
+ update_values = [_combine_chunks(rows_chunk)]
483
+ for col in columns:
484
+ update_fields.append(rows.field(col))
485
+ update_values.append(_combine_chunks(rows[col]))
486
+
487
+ update_rows_rb = pa.record_batch(schema=pa.schema(update_fields), data=update_values)
487
488
 
488
489
  update_rows_rb = util.sort_record_batch_if_needed(update_rows_rb, INTERNAL_ROW_ID)
489
490
 
@@ -127,6 +127,21 @@ def test_exists(session, clean_bucket_name):
127
127
  assert s.tables() == [t]
128
128
 
129
129
 
130
+ def test_list_tables(session, clean_bucket_name):
131
+ with session.transaction() as tx:
132
+ s = tx.bucket(clean_bucket_name).create_schema('s1')
133
+ assert s.tables() == []
134
+ assert s.tablenames() == []
135
+
136
+ tables = [
137
+ s.create_table(f't{i}', pa.schema([(f'x{i}', pa.int64())]))
138
+ for i in range(10)
139
+ ]
140
+ assert tables == s.tables()
141
+ tablenames = [t.name for t in tables]
142
+ assert s.tablenames() == tablenames
143
+
144
+
130
145
  def test_update_table(session, clean_bucket_name):
131
146
  columns = pa.schema([
132
147
  ('a', pa.int64()),
@@ -204,6 +219,26 @@ def test_update_table(session, clean_bucket_name):
204
219
  }
205
220
 
206
221
 
222
+ def test_update_from_select(session, clean_bucket_name):
223
+ columns = pa.schema([
224
+ ('a', pa.int64()),
225
+ ('b', pa.float32()),
226
+ ('s', pa.utf8()),
227
+ ])
228
+ expected = pa.table(schema=columns, data=[
229
+ [111, 222, 333],
230
+ [0.5, 1.5, 2.5],
231
+ ['a', 'bb', 'ccc'],
232
+ ])
233
+ with prepare_data(session, clean_bucket_name, 's', 't', expected) as t:
234
+ for b in t.select(internal_row_id=True):
235
+ t.update(b)
236
+ t.update(pa.Table.from_batches([b]))
237
+
238
+ actual = t.select().read_all()
239
+ assert actual == expected
240
+
241
+
207
242
  def test_select_with_multisplits(session, clean_bucket_name):
208
243
  columns = pa.schema([
209
244
  ('a', pa.int32())
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: vastdb
3
- Version: 1.1.1
3
+ Version: 1.2.0
4
4
  Summary: VAST Data SDK
5
5
  Home-page: https://github.com/vast-data/vastdb_sdk
6
6
  Author: VAST DATA
@@ -155,9 +155,9 @@ vastdb/config.py,sha256=1tMYtzKXerGcIUjH4tIGEvZNWvO4fviCEdcNCnELJZo,2269
155
155
  vastdb/conftest.py,sha256=X2kVveySPQYZlVBXUMoo7Oea5IsvmJzjdqq3fpH2kVw,3469
156
156
  vastdb/errors.py,sha256=2XR1ko7J5nkfiHSAgwuVAADw0SsyqxOwSeFaGgKZEXM,4186
157
157
  vastdb/features.py,sha256=DxV746LSkORwVSD6MP2hdXRfnyoLkJwtOwGmp1dnquo,1322
158
- vastdb/schema.py,sha256=X7IRrogXH7Z0kes-DsDh1bRqIhvjH6owlFigGBXy7XQ,5913
158
+ vastdb/schema.py,sha256=IaZDJsx0ms_dJVXeyCcSD8Dt3TNJkqR3739XOnDBM_E,6177
159
159
  vastdb/session.py,sha256=toMR0BXwTaECdWDKnIZky1F3MA1SmelRBiqCrqQ3GCM,2067
160
- vastdb/table.py,sha256=XLNAwlRjT9sE8nPzYoBC2ehdYpjbit0gLyG0ieNvVfs,31094
160
+ vastdb/table.py,sha256=C6Zz0zolRRRbf5EQBvDRAofl3kGvfz4PjZwGeQongTI,31106
161
161
  vastdb/transaction.py,sha256=NlVkEowJ_pmtffjWBBDaKExYDKPekjSZyj_fK_bZPJE,3026
162
162
  vastdb/util.py,sha256=eunfTuqbCrqQEFZEO9T15N-Bu8Fqpw7Zlqp2TAGfYaY,5870
163
163
  vastdb/bench/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -196,14 +196,14 @@ vastdb/tests/test_nested.py,sha256=LPU6uV3Ri23dBzAEMFQqRPbqapV5LfmiHSHkhILPIY0,6
196
196
  vastdb/tests/test_projections.py,sha256=3y1kubwVrzO-xoR0hyps7zrjOJI8niCYspaFTN16Q9w,4540
197
197
  vastdb/tests/test_sanity.py,sha256=oiV2gb05aPyG5RMNUQZlyjNlg3T7Fig1_8OJzpAgcsk,3038
198
198
  vastdb/tests/test_schemas.py,sha256=l70YQMlx2UL1KRQhApriiG2ZM7GJF-IzWU31H3Yqn1U,3312
199
- vastdb/tests/test_tables.py,sha256=3YYytrcPZiflFCM6yZPOBI3pz5iXKy0sQbmUDFRVmdA,32000
199
+ vastdb/tests/test_tables.py,sha256=H5BK3Zm0Ocug8kZ2cJeGTC7o8YgZgBDSqkOgwW01hAo,33056
200
200
  vastdb/tests/test_util.py,sha256=Ok_sAEBJsRGF5Voa_v5eu3eAd52GWu8jMjjQbadwW-s,1260
201
201
  vastdb/tests/util.py,sha256=dpRJYbboDnlqL4qIdvScpp8--5fxRUBIcIYitrfcj9o,555
202
202
  vastdb/vast_tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
203
203
  vastdb/vast_tests/test_ha.py,sha256=744P4G6VJ09RIkHhMQL4wlipCBJWQVMhyvUrSc4k1HQ,975
204
204
  vastdb/vast_tests/test_scale.py,sha256=EpjCJmVAQrNBxVnHGJ-KHCoxevhqOcyqYFPMIIY9s60,2714
205
- vastdb-1.1.1.dist-info/LICENSE,sha256=obffan7LYrq7hLHNrY7vHcn2pKUTBUYXMKu-VOAvDxU,11333
206
- vastdb-1.1.1.dist-info/METADATA,sha256=C6KtrB0iOL3E8noTM0UqjYvurcant8lSNjwukCXnXTE,1340
207
- vastdb-1.1.1.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
208
- vastdb-1.1.1.dist-info/top_level.txt,sha256=Vsj2MKtlhPg0J4so64slQtnwjhgoPmJgcG-6YcVAwVc,20
209
- vastdb-1.1.1.dist-info/RECORD,,
205
+ vastdb-1.2.0.dist-info/LICENSE,sha256=obffan7LYrq7hLHNrY7vHcn2pKUTBUYXMKu-VOAvDxU,11333
206
+ vastdb-1.2.0.dist-info/METADATA,sha256=O4U-OWABQccLaEF7kOdwqoLO55YG3FkZ3SG5IQs6PS4,1340
207
+ vastdb-1.2.0.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
208
+ vastdb-1.2.0.dist-info/top_level.txt,sha256=Vsj2MKtlhPg0J4so64slQtnwjhgoPmJgcG-6YcVAwVc,20
209
+ vastdb-1.2.0.dist-info/RECORD,,
File without changes