create_index now works with columns with spaces, closes #85

This commit is contained in:
Simon Willison 2020-02-10 21:13:15 -08:00
commit 6f3cb2c106
2 changed files with 10 additions and 10 deletions

View file

@ -625,12 +625,12 @@ class Table(Queryable):
self.name.replace(" ", "_"), "_".join(columns)
)
sql = """
CREATE {unique}INDEX {if_not_exists}{index_name}
ON {table_name} ({columns});
CREATE {unique}INDEX {if_not_exists}[{index_name}]
ON [{table_name}] ({columns});
""".format(
index_name=index_name,
table_name=self.name,
columns=", ".join(columns),
columns=", ".join("[{}]".format(c) for c in columns),
unique="UNIQUE " if unique else "",
if_not_exists="IF NOT EXISTS " if if_not_exists else "",
)

View file

@ -540,27 +540,27 @@ def test_error_if_more_than_999_columns(fresh_db, num_columns, should_error):
"columns,index_name,expected_index",
(
(
["is_good_dog"],
["is good dog"],
None,
Index(
seq=0,
name="idx_dogs_is_good_dog",
name="idx_dogs_is good dog",
unique=0,
origin="c",
partial=0,
columns=["is_good_dog"],
columns=["is good dog"],
),
),
(
["is_good_dog", "age"],
["is good dog", "age"],
None,
Index(
seq=0,
name="idx_dogs_is_good_dog_age",
name="idx_dogs_is good dog_age",
unique=0,
origin="c",
partial=0,
columns=["is_good_dog", "age"],
columns=["is good dog", "age"],
),
),
(
@ -579,7 +579,7 @@ def test_error_if_more_than_999_columns(fresh_db, num_columns, should_error):
)
def test_create_index(fresh_db, columns, index_name, expected_index):
dogs = fresh_db["dogs"]
dogs.insert({"name": "Cleo", "twitter": "cleopaws", "age": 3, "is_good_dog": True})
dogs.insert({"name": "Cleo", "twitter": "cleopaws", "age": 3, "is good dog": True})
assert [] == dogs.indexes
dogs.create_index(columns, index_name)
assert expected_index == dogs.indexes[0]