Skip to content

Commit 6c1100b

Browse files
committed
Merge remote-tracking branch 'upstream/main' into unpin-dask-distributed
2 parents 924117c + 37ea6b6 commit 6c1100b

10 files changed

Lines changed: 40 additions & 74 deletions

File tree

continuous_integration/recipe/meta.yaml

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,7 @@ build:
1515
number: {{ GIT_DESCRIBE_NUMBER }}
1616
noarch: python
1717
entry_points:
18-
# TODO: re-enable server once CVEs are resolved
19-
# - dask-sql-server = dask_sql.server.app:main
18+
- dask-sql-server = dask_sql.server.app:main
2019
- dask-sql = dask_sql.cmd:main
2120
string: py_{{ GIT_DESCRIBE_HASH }}_{{ GIT_DESCRIBE_NUMBER }}
2221
script: {{ PYTHON }} -m pip install . --no-deps -vv
@@ -46,8 +45,7 @@ test:
4645
- dask_sql
4746
commands:
4847
- pip check
49-
# TODO: re-enable server once CVEs are resolved
50-
# - dask-sql-server --help
48+
- dask-sql-server --help
5149
- dask-sql --help
5250
requires:
5351
- pip

dask_sql/__init__.py

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,9 @@
33
from .cmd import cmd_loop
44
from .context import Context
55
from .datacontainer import Statistics
6-
7-
# from .server.app import run_server
6+
from .server.app import run_server
87

98
__version__ = get_versions()["version"]
109
del get_versions
1110

12-
# TODO: re-enable server once CVEs are resolved
13-
# __all__ = [__version__, cmd_loop, Context, run_server, Statistics]
14-
__all__ = [__version__, cmd_loop, Context, Statistics]
11+
__all__ = [__version__, cmd_loop, Context, run_server, Statistics]

dask_sql/context.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -659,7 +659,7 @@ def run_server(
659659
from dask_sql.server.app import run_server
660660

661661
self.stop_server()
662-
self.sql_server = run_server(
662+
self.server = run_server(
663663
context=self,
664664
client=client,
665665
host=host,

dask_sql/server/app.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -276,9 +276,6 @@ def _init_app(
276276
context: Context = None,
277277
client: dask.distributed.Client = None,
278278
):
279-
# TODO: re-enable server once CVEs are resolved
280-
raise NotImplementedError
281-
282279
app.c = context or Context()
283280
app.future_list = {}
284281

docs/source/server.rst

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,6 @@
33
SQL Server
44
==========
55

6-
.. warning::
7-
8-
``dask-sql``'s SQL server functionality is currently exploitable and has been disabled until the exposed vulnerabilities can be resolved.
9-
106
``dask-sql`` comes with a small test implementation for a SQL server.
117
Instead of rebuilding a full ODBC driver, we re-use the `presto wire protocol <https://github.com/prestodb/presto/wiki/HTTP-Protocol>`_.
128

planner/pom.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,11 @@
6161
<artifactId>avatica-core</artifactId>
6262
<version>1.20.0</version>
6363
</dependency>
64+
<dependency>
65+
<groupId>org.apache.httpcomponents</groupId>
66+
<artifactId>httpclient</artifactId>
67+
<version>4.5.13</version>
68+
</dependency>
6469
<dependency>
6570
<groupId>org.apiguardian</groupId>
6671
<artifactId>apiguardian-api</artifactId>

setup.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -116,8 +116,7 @@ def build(self):
116116
},
117117
entry_points={
118118
"console_scripts": [
119-
# TODO: re-enable server once CVEs are resolved
120-
# "dask-sql-server = dask_sql.server.app:main",
119+
"dask-sql-server = dask_sql.server.app:main",
121120
"dask-sql = dask_sql.cmd:main",
122121
]
123122
},

tests/integration/test_cve_fix.py

Lines changed: 0 additions & 16 deletions
This file was deleted.

tests/integration/test_jdbc.py

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,6 @@
77
from dask_sql.server.app import _init_app, app
88
from dask_sql.server.presto_jdbc import create_meta_data
99

10-
# TODO: re-enable server once CVEs are resolved
11-
pytest.skip(
12-
"SQL server is disabled until related CVEs are resolved", allow_module_level=True
13-
)
14-
1510
# needed for the testclient
1611
pytest.importorskip("requests")
1712

tests/integration/test_server.py

Lines changed: 29 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,6 @@
55
from dask_sql import Context
66
from dask_sql.server.app import _init_app, app
77

8-
# TODO: re-enable server once CVEs are resolved
9-
pytest.skip(
10-
"SQL server is disabled until related CVEs are resolved", allow_module_level=True
11-
)
12-
138
# needed for the testclient
149
pytest.importorskip("requests")
1510

@@ -28,35 +23,6 @@ def app_client():
2823
app.client.close()
2924

3025

31-
def get_result_or_error(app_client, response):
32-
result = response.json()
33-
34-
assert "nextUri" in result
35-
assert "error" not in result
36-
37-
status_url = result["nextUri"]
38-
next_url = status_url
39-
40-
counter = 0
41-
while True:
42-
response = app_client.get(next_url)
43-
assert response.status_code == 200
44-
45-
result = response.json()
46-
47-
if "nextUri" not in result:
48-
break
49-
50-
next_url = result["nextUri"]
51-
52-
counter += 1
53-
assert counter <= 100
54-
55-
sleep(0.1)
56-
57-
return result
58-
59-
6026
def test_routes(app_client):
6127
assert app_client.post("/v1/statement", data="SELECT 1 + 1").status_code == 200
6228
assert app_client.get("/v1/statement", data="SELECT 1 + 1").status_code == 405
@@ -208,3 +174,32 @@ def test_inf_table(app_client, user_table_inf):
208174
assert len(result["data"]) == 3
209175
assert result["data"][1] == ["+Infinity"]
210176
assert "error" not in result
177+
178+
179+
def get_result_or_error(app_client, response):
180+
result = response.json()
181+
182+
assert "nextUri" in result
183+
assert "error" not in result
184+
185+
status_url = result["nextUri"]
186+
next_url = status_url
187+
188+
counter = 0
189+
while True:
190+
response = app_client.get(next_url)
191+
assert response.status_code == 200
192+
193+
result = response.json()
194+
195+
if "nextUri" not in result:
196+
break
197+
198+
next_url = result["nextUri"]
199+
200+
counter += 1
201+
assert counter <= 100
202+
203+
sleep(0.1)
204+
205+
return result

0 commit comments

Comments
 (0)