Merge pull request #206 from thedataincubator/parse-newlines

Avoid replacing newlines with spaces early in the query
pull/214/head
Catherine Devlin 2022-06-11 22:23:04 -05:00 committed by GitHub
commit 86117c4b87
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 28 additions and 5 deletions

View File

@ -43,16 +43,23 @@ def parse(cell, config):
result = {"connection": "", "sql": "", "result_var": None}
pieces = cell.split(None, 3)
pieces = cell.split(None, 1)
if not pieces:
return result
result["connection"] = _connection_string(pieces[0], config)
if result["connection"]:
pieces.pop(0)
if len(pieces) == 1:
return result
cell = pieces[1]
pieces = cell.split(None, 2)
if len(pieces) > 1 and pieces[1] == "<<":
result["result_var"] = pieces.pop(0)
pieces.pop(0) # discard << operator
result["sql"] = (" ".join(pieces)).strip()
result["result_var"] = pieces[0]
if len(pieces) == 2:
return result
cell = pieces[2]
result["sql"] = cell
return result

View File

@ -91,6 +91,22 @@ def test_parse_connect_plus_shovel():
}
def test_parse_early_newlines():
assert parse("--comment\nSELECT *\n--comment\nFROM work", empty_config) == {
"connection": "",
"sql": "--comment\nSELECT *\n--comment\nFROM work",
"result_var": None
}
def test_parse_connect_shovel_over_newlines():
assert parse("\nsqlite://\ndest\n<<\nSELECT *\nFROM work", empty_config) == {
"connection": "sqlite://",
"sql": "SELECT *\nFROM work",
"result_var": "dest"
}
class DummyConfig:
dsn_filename = Path("src/tests/test_dsn_config.ini")