Skip to content

Commit 42a4d24

Browse files
committed
Refactoring
1 parent 172e062 commit 42a4d24

File tree

4 files changed

+104
-62
lines changed

4 files changed

+104
-62
lines changed

immudb/client.py

+8-2
Original file line numberDiff line numberDiff line change
@@ -326,7 +326,7 @@ def openSession(self, username, password, database=b"defaultdb"):
326326
session_response = self._stub.OpenSession(
327327
req)
328328
self._stub = self._set_session_id_interceptor(session_response)
329-
return transaction.Tx(self._stub, session_response, self.channel)
329+
return transaction.Tx(self._stub, database, session_response, self.channel)
330330

331331
def closeSession(self):
332332
"""Closes unmanaged session
@@ -1624,7 +1624,12 @@ def sqlQuery(self, query, params={}, columnNameMode=constants.COLUMN_NAME_MODE_N
16241624
16251625
['table1', 'table2']
16261626
"""
1627-
return sqlquery.call(self._stub, self._rs, query, params, columnNameMode, self._currentdb, acceptStream)
1627+
it = sqlquery.call(self._stub, self._rs, query,
1628+
params, columnNameMode, self._currentdb)
1629+
if acceptStream:
1630+
return it
1631+
1632+
return list(it)
16281633

16291634
def listTables(self):
16301635
"""List all tables in the current database
@@ -1700,6 +1705,7 @@ def verifiableSQLGet(self, table: str, primaryKeys: List[datatypesv2.PrimaryKey]
17001705

17011706
# immudb-py only
17021707

1708+
17031709
def getAllValues(self, keys: list): # immudb-py only
17041710
resp = batchGet.call(self._stub, self._rs, keys)
17051711
return resp

immudb/handler/sqlquery.py

+5-10
Original file line numberDiff line numberDiff line change
@@ -19,28 +19,23 @@
1919
from immudb.exceptions import ErrPySDKInvalidColumnMode
2020

2121

22-
def call(service: schema_pb2_grpc.ImmuServiceStub, rs: RootService, query, params, columnNameMode, dbname, acceptStream):
23-
return _call_with_executor(query, params, columnNameMode, dbname, acceptStream, service.SQLQuery)
22+
def call(service: schema_pb2_grpc.ImmuServiceStub, rs: RootService, query, params, columnNameMode, dbname):
23+
return _call_with_executor(query, params, columnNameMode, dbname, service.SQLQuery)
2424

2525

26-
def _call_with_executor(query, params, columnNameMode, dbname, acceptStream, executor):
26+
def _call_with_executor(query, params, columnNameMode, dbname, executor):
2727
paramsObj = []
2828
for key, value in params.items():
2929
paramsObj.append(schema_pb2.NamedParam(
3030
name=key, value=py_to_sqlvalue(value)))
3131

3232
request = schema_pb2.SQLQueryRequest(
3333
sql=query,
34-
acceptStream=acceptStream,
34+
acceptStream=True,
3535
params=paramsObj)
3636

3737
resp = executor(request)
38-
if acceptStream:
39-
return RowIterator(resp, columnNameMode, dbname)
40-
41-
res = next(resp)
42-
columnNames = getColumnNames(res, dbname, columnNameMode)
43-
return unpack_rows(res, columnNameMode, columnNames)
38+
return RowIterator(resp, columnNameMode, dbname)
4439

4540

4641
def fix_colnames(cols, dbname, columnNameMode):

immudb/handler/transaction.py

+7-2
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,9 @@
2121

2222

2323
class Tx:
24-
def __init__(self, stub, session, channel):
24+
def __init__(self, stub, dbname, session, channel):
2525
self.stub = stub
26+
self.dbname = dbname
2627
self.session = session
2728
self.channel = channel
2829
self.txStub = None
@@ -53,7 +54,11 @@ def rollback(self):
5354
return resp
5455

5556
def sqlQuery(self, query, params=dict(), columnNameMode=constants.COLUMN_NAME_MODE_NONE, acceptStream=False):
56-
return executeSQLQuery(query, params, columnNameMode,'', acceptStream, self.txStub.TxSQLQuery)
57+
it = executeSQLQuery(query, params, columnNameMode,
58+
self.dbname, self.txStub.TxSQLQuery)
59+
if acceptStream:
60+
return it
61+
return list(it)
5762

5863
def sqlExec(self, stmt, params=dict(), noWait=False):
5964
return executeSQLExec(stmt, params, noWait, self.txStub.TxSQLExec)

tests/immu/test_session.py

+84-48
Original file line numberDiff line numberDiff line change
@@ -19,33 +19,41 @@
1919
class TestSessionTransaction:
2020

2121
def test_simple_unmanaged_session(self, wrappedClient: ImmuTestClient):
22-
if(not wrappedClient.serverHigherOrEqualsToVersion("1.2.0")):
22+
if (not wrappedClient.serverHigherOrEqualsToVersion("1.2.0")):
2323
pytest.skip("Version too low")
24-
txInterface = wrappedClient.client.openSession("immudb", "immudb", b"defaultdb")
24+
txInterface = wrappedClient.client.openSession(
25+
"immudb", "immudb", b"defaultdb")
2526
try:
2627
newTx = txInterface.newTx()
2728
table = wrappedClient._generateTableName()
28-
newTx.sqlExec(f"CREATE TABLE {table} (id INTEGER AUTO_INCREMENT, tester VARCHAR[10], PRIMARY KEY id)")
29+
newTx.sqlExec(
30+
f"CREATE TABLE {table} (id INTEGER AUTO_INCREMENT, tester VARCHAR[10], PRIMARY KEY id)")
2931
commit = newTx.commit()
3032
assert commit.header.id != None
3133

3234
newTx = txInterface.newTx()
33-
newTx.sqlExec(f"INSERT INTO {table} (tester) VALUES(@testParam)", params = {"testParam": "123"})
34-
what = newTx.sqlQuery(f"SELECT * FROM {table}", dict(), columnNameMode=constants.COLUMN_NAME_MODE_FIELD)
35-
if wrappedClient.serverVersionEqual("1.9DOM.0") and what==[]:
35+
newTx.sqlExec(
36+
f"INSERT INTO {table} (tester) VALUES(@testParam)", params={"testParam": "123"})
37+
what = newTx.sqlQuery(
38+
f"SELECT * FROM {table}", dict(), columnNameMode=constants.COLUMN_NAME_MODE_FIELD)
39+
if wrappedClient.serverVersionEqual("1.9DOM.0") and what == []:
3640
pytest.xfail("Known bug #1854")
3741
assert what == [{"id": 1, "tester": '123'}]
3842
commit = newTx.commit()
3943
assert commit.header.id != None
4044

4145
newTx = txInterface.newTx()
42-
newTx.sqlExec(f"INSERT INTO {table} (tester) VALUES(@testParam)", params = {"testParam": "321"})
43-
what = newTx.sqlQuery(f"SELECT * FROM {table}", dict(), columnNameMode=constants.COLUMN_NAME_MODE_FIELD)
44-
assert what == [{"id": 1, "tester": '123'}, {"id": 2, "tester": '321'}]
46+
newTx.sqlExec(
47+
f"INSERT INTO {table} (tester) VALUES(@testParam)", params={"testParam": "321"})
48+
what = newTx.sqlQuery(
49+
f"SELECT * FROM {table}", dict(), columnNameMode=constants.COLUMN_NAME_MODE_FIELD)
50+
assert what == [{"id": 1, "tester": '123'},
51+
{"id": 2, "tester": '321'}]
4552
commit = newTx.rollback()
4653

4754
newTx = txInterface.newTx()
48-
what = newTx.sqlQuery(f"SELECT * FROM {table}", dict(), columnNameMode=constants.COLUMN_NAME_MODE_FIELD)
55+
what = newTx.sqlQuery(
56+
f"SELECT * FROM {table}", dict(), columnNameMode=constants.COLUMN_NAME_MODE_FIELD)
4957
assert what == [{"id": 1, "tester": '123'}]
5058
commit = newTx.commit()
5159
wrappedClient.closeSession()
@@ -56,40 +64,48 @@ def test_simple_unmanaged_session(self, wrappedClient: ImmuTestClient):
5664
pass
5765

5866
def test_simple_managed_session(self, wrappedClient: ImmuTestClient):
59-
if(not wrappedClient.serverHigherOrEqualsToVersion("1.2.0")):
67+
if (not wrappedClient.serverHigherOrEqualsToVersion("1.2.0")):
6068
pytest.skip("Version too low")
6169
with wrappedClient.client.openManagedSession("immudb", "immudb", b"defaultdb") as session:
6270
newTx = session.newTx()
6371
table = wrappedClient._generateTableName()
64-
newTx.sqlExec(f"CREATE TABLE {table} (id INTEGER AUTO_INCREMENT, tester VARCHAR[10], PRIMARY KEY id)")
72+
newTx.sqlExec(
73+
f"CREATE TABLE {table} (id INTEGER AUTO_INCREMENT, tester VARCHAR[10], PRIMARY KEY id)")
6574
commit = newTx.commit()
6675
assert commit.header.id != None
6776

6877
newTx = session.newTx()
69-
newTx.sqlExec(f"INSERT INTO {table} (tester) VALUES(@testParam)", params = {"testParam": "123"})
70-
what = newTx.sqlQuery(f"SELECT * FROM {table}", dict(), columnNameMode=constants.COLUMN_NAME_MODE_FIELD)
71-
if wrappedClient.serverVersionEqual("1.9DOM.0") and what==[]:
78+
newTx.sqlExec(
79+
f"INSERT INTO {table} (tester) VALUES(@testParam)", params={"testParam": "123"})
80+
what = newTx.sqlQuery(f"SELECT * FROM {table}", dict(
81+
), columnNameMode=constants.COLUMN_NAME_MODE_FIELD, acceptStream=True)
82+
if wrappedClient.serverVersionEqual("1.9DOM.0") and what == []:
7283
pytest.xfail("Known bug #1854")
73-
assert what == [{"id": 1, "tester": '123'}]
84+
assert list(what) == [{"id": 1, "tester": '123'}]
7485
commit = newTx.commit()
7586
assert commit.header.id != None
7687

7788
with wrappedClient.client.openManagedSession("immudb", "immudb", b"defaultdb") as session:
7889
newTx = session.newTx()
79-
newTx.sqlExec(f"INSERT INTO {table} (tester) VALUES(@testParam)", params = {"testParam": "321"})
80-
what = newTx.sqlQuery(f"SELECT * FROM {table}", dict(), columnNameMode=constants.COLUMN_NAME_MODE_FIELD)
81-
assert what == [{"id": 1, "tester": '123'}, {"id": 2, "tester": '321'}]
90+
newTx.sqlExec(
91+
f"INSERT INTO {table} (tester) VALUES(@testParam)", params={"testParam": "321"})
92+
what = newTx.sqlQuery(f"SELECT * FROM {table}", dict(
93+
), columnNameMode=constants.COLUMN_NAME_MODE_FIELD, acceptStream=True)
94+
assert list(what) == [{"id": 1, "tester": '123'},
95+
{"id": 2, "tester": '321'}]
8296
commit = newTx.rollback()
8397

8498
newTx = session.newTx()
85-
what = newTx.sqlQuery(f"SELECT * FROM {table}", dict(), columnNameMode=constants.COLUMN_NAME_MODE_FIELD)
86-
assert what == [{"id": 1, "tester": '123'}]
99+
what = newTx.sqlQuery(f"SELECT * FROM {table}", dict(
100+
), columnNameMode=constants.COLUMN_NAME_MODE_FIELD, acceptStream=True)
101+
assert list(what) == [{"id": 1, "tester": '123'}]
87102
commit = newTx.commit()
88103

89104
def test_unmanaged_session(self, wrappedClient: ImmuTestClient):
90-
if(not wrappedClient.serverHigherOrEqualsToVersion("1.2.0")):
105+
if (not wrappedClient.serverHigherOrEqualsToVersion("1.2.0")):
91106
pytest.skip("Version too low")
92-
currentTxInterface = wrappedClient.openSession("immudb", "immudb", b"defaultdb")
107+
currentTxInterface = wrappedClient.openSession(
108+
"immudb", "immudb", b"defaultdb")
93109
try:
94110
wrappedClient.currentTx = currentTxInterface
95111
key = wrappedClient.generateKeyName().encode("utf-8")
@@ -101,13 +117,18 @@ def test_unmanaged_session(self, wrappedClient: ImmuTestClient):
101117
a = wrappedClient.get(key)
102118
assert a.value == b'1'
103119
interface = wrappedClient.newTx()
104-
table = wrappedClient.createTestTable("id INTEGER AUTO_INCREMENT", "tester VARCHAR[10]", "PRIMARY KEY id")
105-
wrappedClient.insertToTable(table, ["tester"], ["@blabla"], {"blabla": "3"})
106-
wrappedClient.insertToTable(table, ["tester"], ["@blabla"], {"blabla": "4"})
107-
wrappedClient.insertToTable(table, ["tester"], ["@blabla"], {"blabla": "5"})
120+
table = wrappedClient.createTestTable(
121+
"id INTEGER AUTO_INCREMENT", "tester VARCHAR[10]", "PRIMARY KEY id")
122+
wrappedClient.insertToTable(
123+
table, ["tester"], ["@blabla"], {"blabla": "3"})
124+
wrappedClient.insertToTable(
125+
table, ["tester"], ["@blabla"], {"blabla": "4"})
126+
wrappedClient.insertToTable(
127+
table, ["tester"], ["@blabla"], {"blabla": "5"})
108128
interface.commit()
109129
wrappedClient.closeSession()
110-
currentTxInterface = wrappedClient.openSession("immudb", "immudb", b"defaultdb")
130+
currentTxInterface = wrappedClient.openSession(
131+
"immudb", "immudb", b"defaultdb")
111132
wrappedClient.currentTx = currentTxInterface
112133
interface = wrappedClient.newTx()
113134

@@ -117,16 +138,20 @@ def test_unmanaged_session(self, wrappedClient: ImmuTestClient):
117138

118139
interface.commit()
119140
interface = wrappedClient.newTx()
120-
wrappedClient.insertToTable(table, ["tester"], ["@blabla"], {"blabla": "6"})
121-
wrappedClient.insertToTable(table, ["tester"], ["@blabla"], {"blabla": "7"})
122-
wrappedClient.insertToTable(table, ["tester"], ["@blabla"], {"blabla": "8"})
141+
wrappedClient.insertToTable(
142+
table, ["tester"], ["@blabla"], {"blabla": "6"})
143+
wrappedClient.insertToTable(
144+
table, ["tester"], ["@blabla"], {"blabla": "7"})
145+
wrappedClient.insertToTable(
146+
table, ["tester"], ["@blabla"], {"blabla": "8"})
123147
interface.rollback()
124148
finally:
125149
try:
126150
wrappedClient.closeSession()
127151
except:
128152
pass
129-
wrappedClient.currentTx = wrappedClient.openSession("immudb", "immudb", b"defaultdb")
153+
wrappedClient.currentTx = wrappedClient.openSession(
154+
"immudb", "immudb", b"defaultdb")
130155
interface = wrappedClient.newTx()
131156
what = wrappedClient.simpleSelect(table, ["tester"], dict())
132157
concatenated = [item[0] for item in what]
@@ -141,7 +166,7 @@ def test_unmanaged_session(self, wrappedClient: ImmuTestClient):
141166
assert a.value == b'1'
142167

143168
def test_managed_session(self, wrappedClient: ImmuTestClient):
144-
if(not wrappedClient.serverHigherOrEqualsToVersion("1.2.0")):
169+
if (not wrappedClient.serverHigherOrEqualsToVersion("1.2.0")):
145170
pytest.skip("Version too low")
146171

147172
with wrappedClient.openManagedSession("immudb", "immudb", b"defaultdb") as session:
@@ -156,10 +181,14 @@ def test_managed_session(self, wrappedClient: ImmuTestClient):
156181
with wrappedClient.openManagedSession("immudb", "immudb", b"defaultdb") as session:
157182
wrappedClient.currentTx = session
158183
interface = wrappedClient.newTx()
159-
table = wrappedClient.createTestTable("id INTEGER AUTO_INCREMENT", "tester VARCHAR[10]", "PRIMARY KEY id")
160-
wrappedClient.insertToTable(table, ["tester"], ["@blabla"], {"blabla": "3"})
161-
wrappedClient.insertToTable(table, ["tester"], ["@blabla"], {"blabla": "4"})
162-
wrappedClient.insertToTable(table, ["tester"], ["@blabla"], {"blabla": "5"})
184+
table = wrappedClient.createTestTable(
185+
"id INTEGER AUTO_INCREMENT", "tester VARCHAR[10]", "PRIMARY KEY id")
186+
wrappedClient.insertToTable(
187+
table, ["tester"], ["@blabla"], {"blabla": "3"})
188+
wrappedClient.insertToTable(
189+
table, ["tester"], ["@blabla"], {"blabla": "4"})
190+
wrappedClient.insertToTable(
191+
table, ["tester"], ["@blabla"], {"blabla": "5"})
163192
interface.commit()
164193

165194
with wrappedClient.openManagedSession("immudb", "immudb", b"defaultdb") as session:
@@ -172,9 +201,12 @@ def test_managed_session(self, wrappedClient: ImmuTestClient):
172201
with wrappedClient.openManagedSession("immudb", "immudb", b"defaultdb") as session:
173202
wrappedClient.currentTx = session
174203
interface = wrappedClient.newTx()
175-
wrappedClient.insertToTable(table, ["tester"], ["@blabla"], {"blabla": "6"})
176-
wrappedClient.insertToTable(table, ["tester"], ["@blabla"], {"blabla": "7"})
177-
wrappedClient.insertToTable(table, ["tester"], ["@blabla"], {"blabla": "8"})
204+
wrappedClient.insertToTable(
205+
table, ["tester"], ["@blabla"], {"blabla": "6"})
206+
wrappedClient.insertToTable(
207+
table, ["tester"], ["@blabla"], {"blabla": "7"})
208+
wrappedClient.insertToTable(
209+
table, ["tester"], ["@blabla"], {"blabla": "8"})
178210
interface.rollback()
179211

180212
with wrappedClient.openManagedSession("immudb", "immudb", b"defaultdb") as session:
@@ -187,14 +219,20 @@ def test_managed_session(self, wrappedClient: ImmuTestClient):
187219
with wrappedClient.openManagedSession("immudb", "immudb", b"defaultdb") as session:
188220
wrappedClient.currentTx = session
189221
interface = wrappedClient.newTx()
190-
wrappedClient.insertToTable(table, ["tester"], ["@blabla"], {"blabla": "6"})
191-
wrappedClient.insertToTable(table, ["tester"], ["@blabla"], {"blabla": "7"})
192-
wrappedClient.insertToTable(table, ["tester"], ["@blabla"], {"blabla": "8"})
222+
wrappedClient.insertToTable(
223+
table, ["tester"], ["@blabla"], {"blabla": "6"})
224+
wrappedClient.insertToTable(
225+
table, ["tester"], ["@blabla"], {"blabla": "7"})
226+
wrappedClient.insertToTable(
227+
table, ["tester"], ["@blabla"], {"blabla": "8"})
193228
rollbackAs = interface.rollback()
194229
interface = wrappedClient.newTx()
195-
wrappedClient.insertToTable(table, ["tester"], ["@blabla"], {"blabla": "6"})
196-
wrappedClient.insertToTable(table, ["tester"], ["@blabla"], {"blabla": "7"})
197-
wrappedClient.insertToTable(table, ["tester"], ["@blabla"], {"blabla": "8"})
230+
wrappedClient.insertToTable(
231+
table, ["tester"], ["@blabla"], {"blabla": "6"})
232+
wrappedClient.insertToTable(
233+
table, ["tester"], ["@blabla"], {"blabla": "7"})
234+
wrappedClient.insertToTable(
235+
table, ["tester"], ["@blabla"], {"blabla": "8"})
198236
commitAs = interface.commit()
199237
assert commitAs.header.id != None
200238
interface = wrappedClient.newTx()
@@ -206,5 +244,3 @@ def test_managed_session(self, wrappedClient: ImmuTestClient):
206244
concatenated = [item[0] for item in what]
207245
assert concatenated == ["3", "4", "5", "6", "7", "8"]
208246
what = wrappedClient.commit()
209-
210-

0 commit comments

Comments
 (0)