mirror of
https://github.com/asg017/sqlite-vec.git
synced 2026-04-26 17:26:25 +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;
|
||||
}
|
||||
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;
|
||||
}
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1154,24 +1154,28 @@
|
|||
'message': 'Expected 0 or 1 for BOOLEAN metadata column b',
|
||||
})
|
||||
# ---
|
||||
# name: test_types[illegal-float]
|
||||
OrderedDict({
|
||||
'sql': 'insert into v(vector, b, n, f, t) values (?, ?, ?, ?, ?)',
|
||||
'rows': list([
|
||||
]),
|
||||
# name: test_types[illegal-type-boolean]
|
||||
dict({
|
||||
'error': 'OperationalError',
|
||||
'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({
|
||||
'error': 'OperationalError',
|
||||
'message': 'Expected integer for INTEGER metadata column n, received TEXT',
|
||||
})
|
||||
# ---
|
||||
# name: test_types[illegal-text]
|
||||
OrderedDict({
|
||||
'sql': 'insert into v(vector, b, n, f, t) values (?, ?, ?, ?, ?)',
|
||||
'rows': list([
|
||||
]),
|
||||
# name: test_types[illegal-type-text]
|
||||
dict({
|
||||
'error': 'OperationalError',
|
||||
'message': 'Expected text for TEXT metadata column t, received INTEGER',
|
||||
})
|
||||
# ---
|
||||
# name: test_types[legal]
|
||||
|
|
|
|||
|
|
@ -55,12 +55,16 @@ def test_types(db, snapshot):
|
|||
)
|
||||
|
||||
# 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", 1, 'illegal', 1.1, 'test']) == snapshot(name="illegal-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, 1.1, 420]) == snapshot(name="illegal-text")
|
||||
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-type-int")
|
||||
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-type-text")
|
||||
# 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):
|
||||
pass
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue