mirror of
https://github.com/asg017/sqlite-vec.git
synced 2026-04-25 16:56:27 +02:00
finish type checking
This commit is contained in:
parent
9fffdc4d1b
commit
f12be5292b
3 changed files with 33 additions and 17 deletions
12
sqlite-vec.c
12
sqlite-vec.c
|
|
@ -7334,11 +7334,19 @@ int vec0_insert_metadata_values(vec0_vtab *p, int argc, sqlite3_value ** argv, i
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case VEC0_METADATA_COLUMN_KIND_FLOAT: {
|
case VEC0_METADATA_COLUMN_KIND_FLOAT: {
|
||||||
// TODO verify v is SQLITE_FLOAT
|
if(sqlite3_value_type(v) != SQLITE_FLOAT) {
|
||||||
|
rc = SQLITE_ERROR;
|
||||||
|
vtab_set_error(&p->base, "Expected float for FLOAT metadata column %.*s, received %s", p->metadata_columns[metadata_idx].name_length, p->metadata_columns[metadata_idx].name, type_name(sqlite3_value_type(v)));
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case VEC0_METADATA_COLUMN_KIND_TEXT: {
|
case VEC0_METADATA_COLUMN_KIND_TEXT: {
|
||||||
// TODO verify v is SQLITE_TEXT
|
if(sqlite3_value_type(v) != SQLITE_TEXT) {
|
||||||
|
rc = SQLITE_ERROR;
|
||||||
|
vtab_set_error(&p->base, "Expected text for TEXT metadata column %.*s, received %s", p->metadata_columns[metadata_idx].name_length, p->metadata_columns[metadata_idx].name, type_name(sqlite3_value_type(v)));
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1154,24 +1154,28 @@
|
||||||
'message': 'Expected 0 or 1 for BOOLEAN metadata column b',
|
'message': 'Expected 0 or 1 for BOOLEAN metadata column b',
|
||||||
})
|
})
|
||||||
# ---
|
# ---
|
||||||
# name: test_types[illegal-float]
|
# name: test_types[illegal-type-boolean]
|
||||||
OrderedDict({
|
dict({
|
||||||
'sql': 'insert into v(vector, b, n, f, t) values (?, ?, ?, ?, ?)',
|
'error': 'OperationalError',
|
||||||
'rows': list([
|
'message': 'Expected 0 or 1 for BOOLEAN metadata column b',
|
||||||
]),
|
|
||||||
})
|
})
|
||||||
# ---
|
# ---
|
||||||
# name: test_types[illegal-int]
|
# name: test_types[illegal-type-float]
|
||||||
|
dict({
|
||||||
|
'error': 'OperationalError',
|
||||||
|
'message': 'Expected float for FLOAT metadata column f, received TEXT',
|
||||||
|
})
|
||||||
|
# ---
|
||||||
|
# name: test_types[illegal-type-int]
|
||||||
dict({
|
dict({
|
||||||
'error': 'OperationalError',
|
'error': 'OperationalError',
|
||||||
'message': 'Expected integer for INTEGER metadata column n, received TEXT',
|
'message': 'Expected integer for INTEGER metadata column n, received TEXT',
|
||||||
})
|
})
|
||||||
# ---
|
# ---
|
||||||
# name: test_types[illegal-text]
|
# name: test_types[illegal-type-text]
|
||||||
OrderedDict({
|
dict({
|
||||||
'sql': 'insert into v(vector, b, n, f, t) values (?, ?, ?, ?, ?)',
|
'error': 'OperationalError',
|
||||||
'rows': list([
|
'message': 'Expected text for TEXT metadata column t, received INTEGER',
|
||||||
]),
|
|
||||||
})
|
})
|
||||||
# ---
|
# ---
|
||||||
# name: test_types[legal]
|
# name: test_types[legal]
|
||||||
|
|
|
||||||
|
|
@ -55,12 +55,16 @@ def test_types(db, snapshot):
|
||||||
)
|
)
|
||||||
|
|
||||||
# fmt: off
|
# fmt: off
|
||||||
assert exec(db, INSERT, [b"\x11\x11\x11\x11", 'illegal', 1, 1.1, 'test']) == snapshot(name="illegal-boolean")
|
assert exec(db, INSERT, [b"\x11\x11\x11\x11", 'illegal', 1, 1.1, 'test']) == snapshot(name="illegal-type-boolean")
|
||||||
assert exec(db, INSERT, [b"\x11\x11\x11\x11", 1, 'illegal', 1.1, 'test']) == snapshot(name="illegal-int")
|
assert exec(db, INSERT, [b"\x11\x11\x11\x11", 1, 'illegal', 1.1, 'test']) == snapshot(name="illegal-type-int")
|
||||||
assert exec(db, INSERT, [b"\x11\x11\x11\x11", 1, 1, 'illegal', 'test']) == snapshot(name="illegal-float")
|
assert exec(db, INSERT, [b"\x11\x11\x11\x11", 1, 1, 'illegal', 'test']) == snapshot(name="illegal-type-float")
|
||||||
assert exec(db, INSERT, [b"\x11\x11\x11\x11", 1, 1, 1.1, 420]) == snapshot(name="illegal-text")
|
assert exec(db, INSERT, [b"\x11\x11\x11\x11", 1, 1, 1.1, 420]) == snapshot(name="illegal-type-text")
|
||||||
# fmt: on
|
# fmt: on
|
||||||
|
|
||||||
|
assert exec(db, INSERT, [b"\x11\x11\x11\x11", 44, 1, 1.1, "test"]) == snapshot(
|
||||||
|
name="illegal-boolean"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
def test_updates(db, snapshot):
|
def test_updates(db, snapshot):
|
||||||
pass
|
pass
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue