vastdb 2.0.2__py3-none-any.whl → 2.0.5__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.
@@ -0,0 +1,211 @@
1
+ from collections import defaultdict
2
+
3
+ import numpy as np
4
+ import pyarrow as pa
5
+ import pytest
6
+
7
+ from vastdb._adbc import _ibis_to_qe_predicates
8
+ from vastdb._internal import VectorIndex, VectorIndexSpec
9
+ from vastdb._table_interface import IbisPredicate
10
+ from vastdb.conftest import SessionFactory
11
+ from vastdb.table_metadata import TableMetadata, TableRef, TableType
12
+
13
+ DIM = 8
14
+ TEST_DISTANCE_FUNC = 'array_distance'
15
+ TEST_DISTANCE_METRIC = 'l2sq'
16
+
17
+ VectorColumnArrowType = pa.list_(
18
+ pa.field(name='item', type=pa.float32(), nullable=False), DIM)
19
+
20
+ query_vector: np.ndarray = np.ones(DIM)
21
+ first_closest_vector = (query_vector * 1.1).tolist()
22
+ second_closest_vector = (query_vector * 1.2).tolist()
23
+ third_closest_vector = (query_vector * 1.3).tolist()
24
+ fourth_closest_vector = (query_vector * 1.4).tolist()
25
+ fifth_closest_vector = (query_vector * 1.5).tolist()
26
+ furthest_vector = (np.ones(DIM) * 5).tolist()
27
+
28
+ vector_column_name = 'vector_col'
29
+
30
+ data = [
31
+ {
32
+ "id": 0,
33
+ "n1": 1,
34
+ "n2": 100,
35
+ vector_column_name: first_closest_vector,
36
+ },
37
+ {
38
+ "id": 1,
39
+ "n1": 2,
40
+ "n2": 100,
41
+ vector_column_name: second_closest_vector,
42
+ },
43
+ {
44
+ "id": 2,
45
+ "n1": 3,
46
+ "n2": 200,
47
+ vector_column_name: third_closest_vector,
48
+ },
49
+ {
50
+ "id": 3,
51
+ "n1": 4,
52
+ "n2": 200,
53
+ vector_column_name: fourth_closest_vector,
54
+ },
55
+ {
56
+ "id": 4,
57
+ "n1": 5,
58
+ "n2": 200,
59
+ vector_column_name: fifth_closest_vector,
60
+ },
61
+ {
62
+ "id": 5,
63
+ "n1": 6,
64
+ "n2": 200,
65
+ vector_column_name: furthest_vector,
66
+ },
67
+
68
+ ]
69
+
70
+
71
+ def into_arrow_arrays(data: list[dict]) -> list[list]:
72
+ agg = defaultdict(list)
73
+ for d in data:
74
+ for k, v in d.items():
75
+ agg[k].append(v)
76
+
77
+ return [v for v in agg.values()]
78
+
79
+
80
+ def test_sanity(session_factory: SessionFactory, clean_bucket_name: str):
81
+ session = session_factory(with_adbc=True)
82
+
83
+ arrow_schema = pa.schema([('id', pa.int32()), ('n1', pa.int32(
84
+ )), ('n2', pa.int32()), (vector_column_name, VectorColumnArrowType),])
85
+
86
+ limit = 3
87
+
88
+ ref = TableRef(clean_bucket_name, 's', 't')
89
+ table_md = TableMetadata(ref,
90
+ arrow_schema,
91
+ TableType.Regular,
92
+ vector_index=VectorIndex(vector_column_name,
93
+ TEST_DISTANCE_METRIC,
94
+ TEST_DISTANCE_FUNC))
95
+ data_table = pa.table(schema=arrow_schema, data=into_arrow_arrays(data))
96
+
97
+ with session.transaction() as tx:
98
+ table = tx.bucket(clean_bucket_name).create_schema(
99
+ 's').create_table('t', arrow_schema)
100
+ table.insert(data_table)
101
+
102
+ # TODO merge in same tx
103
+ with session.transaction() as tx:
104
+ table = tx.table_from_metadata(table_md)
105
+
106
+ reader = table.vector_search(vec=query_vector.tolist(),
107
+ columns=['id', 'n1', 'n2'],
108
+ limit=limit)
109
+
110
+ result_table = reader.read_all()
111
+
112
+ assert set([v.as_py() for v in result_table['n1']]) == {1, 2, 3}
113
+
114
+
115
+ def test_with_predicates(session_factory: SessionFactory, clean_bucket_name: str):
116
+ session = session_factory(with_adbc=True)
117
+
118
+ vector_column_name = 'vector_column'
119
+ arrow_schema = pa.schema([('id', pa.int32()), ('n1', pa.int32(
120
+ )), ('n2', pa.int32()), (vector_column_name, VectorColumnArrowType),])
121
+ limit = 3
122
+
123
+ ref = TableRef(clean_bucket_name, 's', 't')
124
+ table_md = TableMetadata(ref, arrow_schema, TableType.Regular,
125
+ vector_index=VectorIndex(vector_column_name,
126
+ TEST_DISTANCE_METRIC,
127
+ TEST_DISTANCE_FUNC))
128
+ data_table = pa.table(schema=arrow_schema, data=into_arrow_arrays(data))
129
+
130
+ with session.transaction() as tx:
131
+ table = tx.bucket(clean_bucket_name).create_schema(
132
+ 's').create_table('t', arrow_schema)
133
+ table.insert(data_table)
134
+
135
+ with session.transaction() as tx:
136
+ table = tx.table_from_metadata(table_md)
137
+
138
+ pred = table_md.ibis_table['n2'] == 200
139
+ reader = table.vector_search(vec=query_vector.tolist(),
140
+ columns=['id', 'n1', 'n2'],
141
+ limit=limit,
142
+ predicate=pred)
143
+
144
+ result_table = reader.read_all()
145
+
146
+ assert set([v.as_py() for v in result_table['n1']]) == {3, 4, 5}
147
+
148
+
149
+ arrow_schema = pa.schema([('id', pa.int32()), ('n1', pa.int32(
150
+ )), ('n2', pa.int32()), (vector_column_name, VectorColumnArrowType),])
151
+
152
+ ref = TableRef('b', 's', 't')
153
+ table_md = TableMetadata(ref, arrow_schema, TableType.Regular)
154
+
155
+
156
+ @pytest.mark.parametrize('ibis_predicate, expected', [
157
+ ((table_md.ibis_table['n1'] == 1) & (table_md.ibis_table['n2'] == 2),
158
+ '("n1" = 1) AND ("n2" = 2)'),
159
+ ((table_md.ibis_table['n1'] == 1),
160
+ '"n1" = 1')
161
+ ])
162
+ def test_ibis_to_query_engine_predicates(ibis_predicate: IbisPredicate, expected: str):
163
+ assert _ibis_to_qe_predicates(ibis_predicate) == expected
164
+
165
+
166
+ @pytest.mark.skip(reason="see https://vastdata.atlassian.net/browse/ORION-307908")
167
+ def test_with_predicates_get_vector_index_properties_from_server(
168
+ session_factory: SessionFactory,
169
+ clean_bucket_name: str
170
+ ):
171
+ session = session_factory(with_adbc=True)
172
+
173
+ vector_column_name = 'vector_column'
174
+ vector_index_distance_metric = 'l2sq'
175
+ vector_index_sql_distance_function = "array_distance"
176
+
177
+ arrow_schema = pa.schema([('id', pa.int32()), ('n1', pa.int32(
178
+ )), ('n2', pa.int32()), (vector_column_name, VectorColumnArrowType),])
179
+ limit = 3
180
+
181
+ ref = TableRef(clean_bucket_name, 's', 't')
182
+ table_md = TableMetadata(ref, arrow_schema, TableType.Regular)
183
+ data_table = pa.table(schema=arrow_schema, data=into_arrow_arrays(data))
184
+
185
+ with session.transaction() as tx:
186
+ table = (tx.bucket(clean_bucket_name)
187
+ .create_schema('s')
188
+ .create_table('t',
189
+ arrow_schema,
190
+ vector_index=VectorIndexSpec(vector_column_name,
191
+ vector_index_distance_metric)))
192
+ table.insert(data_table)
193
+
194
+ with session.transaction() as tx:
195
+ table = tx.table_from_metadata(table_md)
196
+
197
+ table.reload_stats()
198
+ assert table.vector_index == VectorIndex(
199
+ column=vector_column_name,
200
+ distance_metric=vector_index_distance_metric,
201
+ sql_distance_function=vector_index_sql_distance_function)
202
+
203
+ pred = table_md.ibis_table['n2'] == 200
204
+ reader = table.vector_search(vec=query_vector.tolist(),
205
+ columns=['id', 'n1', 'n2'],
206
+ limit=limit,
207
+ predicate=pred)
208
+
209
+ result_table = reader.read_all()
210
+
211
+ assert set([v.as_py() for v in result_table['n1']]) == {3, 4, 5}
vastdb/tests/util.py CHANGED
@@ -25,11 +25,12 @@ def assert_row_ids_ascending_on_first_insertion_to_table(row_ids, expected_num_r
25
25
  @contextmanager
26
26
  def prepare_data(session: Session,
27
27
  clean_bucket_name: str, schema_name: str, table_name: str,
28
- arrow_table: pa.Table, sorting_key: List[str] = []) -> Iterator[Table]:
28
+ arrow_table: pa.Table, sorting_key: List[str] = [],
29
+ insert_by_columns: bool = True) -> Iterator[Table]:
29
30
  with session.transaction() as tx:
30
31
  s = tx.bucket(clean_bucket_name).create_schema(schema_name)
31
32
  t = s.create_table(table_name, arrow_table.schema, sorting_key=sorting_key)
32
- row_ids_array = t.insert(arrow_table)
33
+ row_ids_array = t.insert(arrow_table, by_columns=insert_by_columns)
33
34
  row_ids = row_ids_array.to_pylist()
34
35
  assert_row_ids_ascending_on_first_insertion_to_table(row_ids, arrow_table.num_rows, t.sorted_table)
35
36
  yield t
vastdb/transaction.py CHANGED
@@ -11,6 +11,7 @@ from copy import deepcopy
11
11
  from dataclasses import dataclass
12
12
  from typing import TYPE_CHECKING, Iterable, Optional
13
13
 
14
+ from vastdb._adbc import AdbcConnection, AdbcDriver
14
15
  from vastdb._table_interface import ITable
15
16
  from vastdb.table import TableInTransaction
16
17
  from vastdb.table_metadata import TableMetadata
@@ -39,17 +40,37 @@ class TransactionNotActiveError(Exception):
39
40
  pass
40
41
 
41
42
 
43
+ class NoAdbcConnectionError(Exception):
44
+ """No Adbc Connection Error."""
45
+
46
+ pass
47
+
48
+
42
49
  @dataclass
43
50
  class Transaction:
44
51
  """A holder of a single VAST transaction."""
45
52
 
46
53
  _rpc: "session.Session"
47
54
  txid: Optional[int] = None
55
+ _adbc_driver: Optional[AdbcDriver] = None
56
+ _adbc_conn: Optional[AdbcConnection] = None
57
+ _end_user: Optional[str] = None
48
58
 
49
59
  def __enter__(self):
50
60
  """Create a transaction and store its ID."""
51
61
  response = self._rpc.api.begin_transaction()
52
62
  self.txid = int(response.headers['tabular-txid'])
63
+
64
+ if self._adbc_driver is not None:
65
+ self._adbc_conn = AdbcConnection(
66
+ self._adbc_driver,
67
+ self._rpc.endpoint,
68
+ self._rpc.access,
69
+ self._rpc.secret,
70
+ self.txid,
71
+ self._end_user
72
+ )
73
+
53
74
  log.debug("opened txid=%016x", self.txid)
54
75
  return self
55
76
 
@@ -57,6 +78,10 @@ class Transaction:
57
78
  """On success, the transaction is committed. Otherwise, it is rolled back."""
58
79
  txid = self.txid
59
80
  self.txid = None
81
+ if self._adbc_conn is not None:
82
+ self.adbc_conn.close()
83
+ self._adbc_conn = None
84
+
60
85
  if (exc_type, exc_value, exc_traceback) == (None, None, None):
61
86
  log.debug("committing txid=%016x", txid)
62
87
  self._rpc.api.commit_transaction(txid)
@@ -110,3 +135,10 @@ class Transaction:
110
135
  def table_from_metadata(self, metadata: TableMetadata) -> ITable:
111
136
  """Create Table from TableMetadata."""
112
137
  return TableInTransaction(deepcopy(metadata), tx=self)
138
+
139
+ @property
140
+ def adbc_conn(self) -> AdbcConnection:
141
+ """ADBC connection in transaction."""
142
+ if self._adbc_conn is None:
143
+ raise NoAdbcConnectionError("Adbc Driver may not have been supplied")
144
+ return self._adbc_conn
@@ -105,74 +105,66 @@ class GetTableStatsResponse(object):
105
105
  return self._tab.Get(flatbuffers.number_types.Int64Flags, o + self._tab.Pos)
106
106
  return 0
107
107
 
108
- def GetTableStatsResponseStart(builder):
109
- builder.StartObject(9)
110
-
111
- def Start(builder):
112
- GetTableStatsResponseStart(builder)
108
+ # GetTableStatsResponse
109
+ def VectorIndexMetadata(self):
110
+ o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(22))
111
+ if o != 0:
112
+ x = self._tab.Indirect(o + self._tab.Pos)
113
+ from vastdb.vast_flatbuf.tabular.VectorIndexMetadata import VectorIndexMetadata
114
+ obj = VectorIndexMetadata()
115
+ obj.Init(self._tab.Bytes, x)
116
+ return obj
117
+ return None
113
118
 
119
+ def Start(builder): builder.StartObject(10)
120
+ def GetTableStatsResponseStart(builder):
121
+ """This method is deprecated. Please switch to Start."""
122
+ return Start(builder)
123
+ def AddNumRows(builder, numRows): builder.PrependInt64Slot(0, numRows, 0)
114
124
  def GetTableStatsResponseAddNumRows(builder, numRows):
115
- builder.PrependInt64Slot(0, numRows, 0)
116
-
117
- def AddNumRows(builder, numRows):
118
- GetTableStatsResponseAddNumRows(builder, numRows)
119
-
125
+ """This method is deprecated. Please switch to AddNumRows."""
126
+ return AddNumRows(builder, numRows)
127
+ def AddSizeInBytes(builder, sizeInBytes): builder.PrependInt64Slot(1, sizeInBytes, 0)
120
128
  def GetTableStatsResponseAddSizeInBytes(builder, sizeInBytes):
121
- builder.PrependInt64Slot(1, sizeInBytes, 0)
122
-
123
- def AddSizeInBytes(builder, sizeInBytes):
124
- GetTableStatsResponseAddSizeInBytes(builder, sizeInBytes)
125
-
129
+ """This method is deprecated. Please switch to AddSizeInBytes."""
130
+ return AddSizeInBytes(builder, sizeInBytes)
131
+ def AddIsExternalRowidAlloc(builder, isExternalRowidAlloc): builder.PrependBoolSlot(2, isExternalRowidAlloc, 0)
126
132
  def GetTableStatsResponseAddIsExternalRowidAlloc(builder, isExternalRowidAlloc):
127
- builder.PrependBoolSlot(2, isExternalRowidAlloc, 0)
128
-
129
- def AddIsExternalRowidAlloc(builder, isExternalRowidAlloc):
130
- GetTableStatsResponseAddIsExternalRowidAlloc(builder, isExternalRowidAlloc)
131
-
133
+ """This method is deprecated. Please switch to AddIsExternalRowidAlloc."""
134
+ return AddIsExternalRowidAlloc(builder, isExternalRowidAlloc)
135
+ def AddAddressType(builder, addressType): builder.PrependUOffsetTRelativeSlot(3, flatbuffers.number_types.UOffsetTFlags.py_type(addressType), 0)
132
136
  def GetTableStatsResponseAddAddressType(builder, addressType):
133
- builder.PrependUOffsetTRelativeSlot(3, flatbuffers.number_types.UOffsetTFlags.py_type(addressType), 0)
134
-
135
- def AddAddressType(builder, addressType):
136
- GetTableStatsResponseAddAddressType(builder, addressType)
137
-
137
+ """This method is deprecated. Please switch to AddAddressType."""
138
+ return AddAddressType(builder, addressType)
139
+ def AddVips(builder, vips): builder.PrependUOffsetTRelativeSlot(4, flatbuffers.number_types.UOffsetTFlags.py_type(vips), 0)
138
140
  def GetTableStatsResponseAddVips(builder, vips):
139
- builder.PrependUOffsetTRelativeSlot(4, flatbuffers.number_types.UOffsetTFlags.py_type(vips), 0)
140
-
141
- def AddVips(builder, vips):
142
- GetTableStatsResponseAddVips(builder, vips)
143
-
141
+ """This method is deprecated. Please switch to AddVips."""
142
+ return AddVips(builder, vips)
143
+ def StartVipsVector(builder, numElems): return builder.StartVector(4, numElems, 4)
144
144
  def GetTableStatsResponseStartVipsVector(builder, numElems):
145
- return builder.StartVector(4, numElems, 4)
146
-
147
- def StartVipsVector(builder, numElems):
148
- return GetTableStatsResponseStartVipsVector(builder, numElems)
149
-
145
+ """This method is deprecated. Please switch to Start."""
146
+ return StartVipsVector(builder, numElems)
147
+ def AddSortingKeyEnabled(builder, sortingKeyEnabled): builder.PrependBoolSlot(5, sortingKeyEnabled, 0)
150
148
  def GetTableStatsResponseAddSortingKeyEnabled(builder, sortingKeyEnabled):
151
- builder.PrependBoolSlot(5, sortingKeyEnabled, 0)
152
-
153
- def AddSortingKeyEnabled(builder, sortingKeyEnabled):
154
- GetTableStatsResponseAddSortingKeyEnabled(builder, sortingKeyEnabled)
155
-
149
+ """This method is deprecated. Please switch to AddSortingKeyEnabled."""
150
+ return AddSortingKeyEnabled(builder, sortingKeyEnabled)
151
+ def AddSortingScore(builder, sortingScore): builder.PrependInt64Slot(6, sortingScore, 0)
156
152
  def GetTableStatsResponseAddSortingScore(builder, sortingScore):
157
- builder.PrependInt64Slot(6, sortingScore, 0)
158
-
159
- def AddSortingScore(builder, sortingScore):
160
- GetTableStatsResponseAddSortingScore(builder, sortingScore)
161
-
153
+ """This method is deprecated. Please switch to AddSortingScore."""
154
+ return AddSortingScore(builder, sortingScore)
155
+ def AddWriteAmplification(builder, writeAmplification): builder.PrependInt64Slot(7, writeAmplification, 0)
162
156
  def GetTableStatsResponseAddWriteAmplification(builder, writeAmplification):
163
- builder.PrependInt64Slot(7, writeAmplification, 0)
164
-
165
- def AddWriteAmplification(builder, writeAmplification):
166
- GetTableStatsResponseAddWriteAmplification(builder, writeAmplification)
167
-
157
+ """This method is deprecated. Please switch to AddWriteAmplification."""
158
+ return AddWriteAmplification(builder, writeAmplification)
159
+ def AddAcummulativeRowInseritionCount(builder, acummulativeRowInseritionCount): builder.PrependInt64Slot(8, acummulativeRowInseritionCount, 0)
168
160
  def GetTableStatsResponseAddAcummulativeRowInseritionCount(builder, acummulativeRowInseritionCount):
169
- builder.PrependInt64Slot(8, acummulativeRowInseritionCount, 0)
170
-
171
- def AddAcummulativeRowInseritionCount(builder, acummulativeRowInseritionCount):
172
- GetTableStatsResponseAddAcummulativeRowInseritionCount(builder, acummulativeRowInseritionCount)
173
-
161
+ """This method is deprecated. Please switch to AddAcummulativeRowInseritionCount."""
162
+ return AddAcummulativeRowInseritionCount(builder, acummulativeRowInseritionCount)
163
+ def AddVectorIndexMetadata(builder, vectorIndexMetadata): builder.PrependUOffsetTRelativeSlot(9, flatbuffers.number_types.UOffsetTFlags.py_type(vectorIndexMetadata), 0)
164
+ def GetTableStatsResponseAddVectorIndexMetadata(builder, vectorIndexMetadata):
165
+ """This method is deprecated. Please switch to AddVectorIndexMetadata."""
166
+ return AddVectorIndexMetadata(builder, vectorIndexMetadata)
167
+ def End(builder): return builder.EndObject()
174
168
  def GetTableStatsResponseEnd(builder):
175
- return builder.EndObject()
176
-
177
- def End(builder):
178
- return GetTableStatsResponseEnd(builder)
169
+ """This method is deprecated. Please switch to End."""
170
+ return End(builder)
@@ -95,74 +95,51 @@ class ObjectDetails(object):
95
95
  return self._tab.Get(flatbuffers.number_types.Int64Flags, o + self._tab.Pos)
96
96
  return 0
97
97
 
98
+ def Start(builder): builder.StartObject(10)
98
99
  def ObjectDetailsStart(builder):
99
- builder.StartObject(10)
100
-
101
- def Start(builder):
102
- ObjectDetailsStart(builder)
103
-
100
+ """This method is deprecated. Please switch to Start."""
101
+ return Start(builder)
102
+ def AddName(builder, name): builder.PrependUOffsetTRelativeSlot(0, flatbuffers.number_types.UOffsetTFlags.py_type(name), 0)
104
103
  def ObjectDetailsAddName(builder, name):
105
- builder.PrependUOffsetTRelativeSlot(0, flatbuffers.number_types.UOffsetTFlags.py_type(name), 0)
106
-
107
- def AddName(builder, name):
108
- ObjectDetailsAddName(builder, name)
109
-
104
+ """This method is deprecated. Please switch to AddName."""
105
+ return AddName(builder, name)
106
+ def AddProperties(builder, properties): builder.PrependUOffsetTRelativeSlot(1, flatbuffers.number_types.UOffsetTFlags.py_type(properties), 0)
110
107
  def ObjectDetailsAddProperties(builder, properties):
111
- builder.PrependUOffsetTRelativeSlot(1, flatbuffers.number_types.UOffsetTFlags.py_type(properties), 0)
112
-
113
- def AddProperties(builder, properties):
114
- ObjectDetailsAddProperties(builder, properties)
115
-
108
+ """This method is deprecated. Please switch to AddProperties."""
109
+ return AddProperties(builder, properties)
110
+ def AddHandle(builder, handle): builder.PrependUOffsetTRelativeSlot(2, flatbuffers.number_types.UOffsetTFlags.py_type(handle), 0)
116
111
  def ObjectDetailsAddHandle(builder, handle):
117
- builder.PrependUOffsetTRelativeSlot(2, flatbuffers.number_types.UOffsetTFlags.py_type(handle), 0)
118
-
119
- def AddHandle(builder, handle):
120
- ObjectDetailsAddHandle(builder, handle)
121
-
112
+ """This method is deprecated. Please switch to AddHandle."""
113
+ return AddHandle(builder, handle)
114
+ def AddNumRows(builder, numRows): builder.PrependUint64Slot(3, numRows, 0)
122
115
  def ObjectDetailsAddNumRows(builder, numRows):
123
- builder.PrependUint64Slot(3, numRows, 0)
124
-
125
- def AddNumRows(builder, numRows):
126
- ObjectDetailsAddNumRows(builder, numRows)
127
-
116
+ """This method is deprecated. Please switch to AddNumRows."""
117
+ return AddNumRows(builder, numRows)
118
+ def AddSizeInBytes(builder, sizeInBytes): builder.PrependUint64Slot(4, sizeInBytes, 0)
128
119
  def ObjectDetailsAddSizeInBytes(builder, sizeInBytes):
129
- builder.PrependUint64Slot(4, sizeInBytes, 0)
130
-
131
- def AddSizeInBytes(builder, sizeInBytes):
132
- ObjectDetailsAddSizeInBytes(builder, sizeInBytes)
133
-
120
+ """This method is deprecated. Please switch to AddSizeInBytes."""
121
+ return AddSizeInBytes(builder, sizeInBytes)
122
+ def AddNumPartitions(builder, numPartitions): builder.PrependUint64Slot(5, numPartitions, 0)
134
123
  def ObjectDetailsAddNumPartitions(builder, numPartitions):
135
- builder.PrependUint64Slot(5, numPartitions, 0)
136
-
137
- def AddNumPartitions(builder, numPartitions):
138
- ObjectDetailsAddNumPartitions(builder, numPartitions)
139
-
124
+ """This method is deprecated. Please switch to AddNumPartitions."""
125
+ return AddNumPartitions(builder, numPartitions)
126
+ def AddSortingKeyEnabled(builder, sortingKeyEnabled): builder.PrependBoolSlot(6, sortingKeyEnabled, 0)
140
127
  def ObjectDetailsAddSortingKeyEnabled(builder, sortingKeyEnabled):
141
- builder.PrependBoolSlot(6, sortingKeyEnabled, 0)
142
-
143
- def AddSortingKeyEnabled(builder, sortingKeyEnabled):
144
- ObjectDetailsAddSortingKeyEnabled(builder, sortingKeyEnabled)
145
-
128
+ """This method is deprecated. Please switch to AddSortingKeyEnabled."""
129
+ return AddSortingKeyEnabled(builder, sortingKeyEnabled)
130
+ def AddSortingScore(builder, sortingScore): builder.PrependInt64Slot(7, sortingScore, 0)
146
131
  def ObjectDetailsAddSortingScore(builder, sortingScore):
147
- builder.PrependInt64Slot(7, sortingScore, 0)
148
-
149
- def AddSortingScore(builder, sortingScore):
150
- ObjectDetailsAddSortingScore(builder, sortingScore)
151
-
132
+ """This method is deprecated. Please switch to AddSortingScore."""
133
+ return AddSortingScore(builder, sortingScore)
134
+ def AddWriteAmplification(builder, writeAmplification): builder.PrependInt64Slot(8, writeAmplification, 0)
152
135
  def ObjectDetailsAddWriteAmplification(builder, writeAmplification):
153
- builder.PrependInt64Slot(8, writeAmplification, 0)
154
-
155
- def AddWriteAmplification(builder, writeAmplification):
156
- ObjectDetailsAddWriteAmplification(builder, writeAmplification)
157
-
136
+ """This method is deprecated. Please switch to AddWriteAmplification."""
137
+ return AddWriteAmplification(builder, writeAmplification)
138
+ def AddAcummulativeRowInseritionCount(builder, acummulativeRowInseritionCount): builder.PrependInt64Slot(9, acummulativeRowInseritionCount, 0)
158
139
  def ObjectDetailsAddAcummulativeRowInseritionCount(builder, acummulativeRowInseritionCount):
159
- builder.PrependInt64Slot(9, acummulativeRowInseritionCount, 0)
160
-
161
- def AddAcummulativeRowInseritionCount(builder, acummulativeRowInseritionCount):
162
- ObjectDetailsAddAcummulativeRowInseritionCount(builder, acummulativeRowInseritionCount)
163
-
140
+ """This method is deprecated. Please switch to AddAcummulativeRowInseritionCount."""
141
+ return AddAcummulativeRowInseritionCount(builder, acummulativeRowInseritionCount)
142
+ def End(builder): return builder.EndObject()
164
143
  def ObjectDetailsEnd(builder):
165
- return builder.EndObject()
166
-
167
- def End(builder):
168
- return ObjectDetailsEnd(builder)
144
+ """This method is deprecated. Please switch to End."""
145
+ return End(builder)
@@ -0,0 +1,67 @@
1
+ # automatically generated by the FlatBuffers compiler, do not modify
2
+
3
+ # namespace: tabular
4
+
5
+ import flatbuffers
6
+ from flatbuffers.compat import import_numpy
7
+ np = import_numpy()
8
+
9
+ class VectorIndexMetadata(object):
10
+ __slots__ = ['_tab']
11
+
12
+ @classmethod
13
+ def GetRootAs(cls, buf, offset=0):
14
+ n = flatbuffers.encode.Get(flatbuffers.packer.uoffset, buf, offset)
15
+ x = VectorIndexMetadata()
16
+ x.Init(buf, n + offset)
17
+ return x
18
+
19
+ @classmethod
20
+ def GetRootAsVectorIndexMetadata(cls, buf, offset=0):
21
+ """This method is deprecated. Please switch to GetRootAs."""
22
+ return cls.GetRootAs(buf, offset)
23
+ # VectorIndexMetadata
24
+ def Init(self, buf, pos):
25
+ self._tab = flatbuffers.table.Table(buf, pos)
26
+
27
+ # VectorIndexMetadata
28
+ def ColumnName(self):
29
+ o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(4))
30
+ if o != 0:
31
+ return self._tab.String(o + self._tab.Pos)
32
+ return None
33
+
34
+ # VectorIndexMetadata
35
+ def DistanceMetric(self):
36
+ o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(6))
37
+ if o != 0:
38
+ return self._tab.String(o + self._tab.Pos)
39
+ return None
40
+
41
+ # VectorIndexMetadata
42
+ def SqlFunctionName(self):
43
+ o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(8))
44
+ if o != 0:
45
+ return self._tab.String(o + self._tab.Pos)
46
+ return None
47
+
48
+ def Start(builder): builder.StartObject(3)
49
+ def VectorIndexMetadataStart(builder):
50
+ """This method is deprecated. Please switch to Start."""
51
+ return Start(builder)
52
+ def AddColumnName(builder, columnName): builder.PrependUOffsetTRelativeSlot(0, flatbuffers.number_types.UOffsetTFlags.py_type(columnName), 0)
53
+ def VectorIndexMetadataAddColumnName(builder, columnName):
54
+ """This method is deprecated. Please switch to AddColumnName."""
55
+ return AddColumnName(builder, columnName)
56
+ def AddDistanceMetric(builder, distanceMetric): builder.PrependUOffsetTRelativeSlot(1, flatbuffers.number_types.UOffsetTFlags.py_type(distanceMetric), 0)
57
+ def VectorIndexMetadataAddDistanceMetric(builder, distanceMetric):
58
+ """This method is deprecated. Please switch to AddDistanceMetric."""
59
+ return AddDistanceMetric(builder, distanceMetric)
60
+ def AddSqlFunctionName(builder, sqlFunctionName): builder.PrependUOffsetTRelativeSlot(2, flatbuffers.number_types.UOffsetTFlags.py_type(sqlFunctionName), 0)
61
+ def VectorIndexMetadataAddSqlFunctionName(builder, sqlFunctionName):
62
+ """This method is deprecated. Please switch to AddSqlFunctionName."""
63
+ return AddSqlFunctionName(builder, sqlFunctionName)
64
+ def End(builder): return builder.EndObject()
65
+ def VectorIndexMetadataEnd(builder):
66
+ """This method is deprecated. Please switch to End."""
67
+ return End(builder)
@@ -38,19 +38,26 @@ class VipRange(object):
38
38
  return self._tab.Get(flatbuffers.number_types.Uint16Flags, o + self._tab.Pos)
39
39
  return 0
40
40
 
41
- def Start(builder): builder.StartObject(2)
42
41
  def VipRangeStart(builder):
43
- """This method is deprecated. Please switch to Start."""
44
- return Start(builder)
45
- def AddStartAddress(builder, startAddress): builder.PrependUOffsetTRelativeSlot(0, flatbuffers.number_types.UOffsetTFlags.py_type(startAddress), 0)
42
+ builder.StartObject(2)
43
+
44
+ def Start(builder):
45
+ VipRangeStart(builder)
46
+
46
47
  def VipRangeAddStartAddress(builder, startAddress):
47
- """This method is deprecated. Please switch to AddStartAddress."""
48
- return AddStartAddress(builder, startAddress)
49
- def AddAddressCount(builder, addressCount): builder.PrependUint16Slot(1, addressCount, 0)
48
+ builder.PrependUOffsetTRelativeSlot(0, flatbuffers.number_types.UOffsetTFlags.py_type(startAddress), 0)
49
+
50
+ def AddStartAddress(builder, startAddress):
51
+ VipRangeAddStartAddress(builder, startAddress)
52
+
50
53
  def VipRangeAddAddressCount(builder, addressCount):
51
- """This method is deprecated. Please switch to AddAddressCount."""
52
- return AddAddressCount(builder, addressCount)
53
- def End(builder): return builder.EndObject()
54
+ builder.PrependUint16Slot(1, addressCount, 0)
55
+
56
+ def AddAddressCount(builder, addressCount):
57
+ VipRangeAddAddressCount(builder, addressCount)
58
+
54
59
  def VipRangeEnd(builder):
55
- """This method is deprecated. Please switch to End."""
56
- return End(builder)
60
+ return builder.EndObject()
61
+
62
+ def End(builder):
63
+ return VipRangeEnd(builder)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: vastdb
3
- Version: 2.0.2
3
+ Version: 2.0.5
4
4
  Summary: VAST Data SDK
5
5
  Home-page: https://github.com/vast-data/vastdb_sdk
6
6
  Author: VAST DATA
@@ -29,6 +29,7 @@ Requires-Dist: numpy
29
29
  Requires-Dist: requests
30
30
  Requires-Dist: xmltodict
31
31
  Requires-Dist: backoff==2.2.1
32
+ Requires-Dist: adbc_driver_manager
32
33
  Dynamic: author
33
34
  Dynamic: author-email
34
35
  Dynamic: classifier