fix expression aritmetic

This commit is contained in:
2026-02-17 08:49:30 -05:00
parent 225a1533cc
commit d8a80bd728
2 changed files with 4 additions and 90 deletions

View File

@@ -111,7 +111,7 @@ tokenizer_next :: proc(t: ^Tokenizer) -> Maybe(string) {
}
// Single-character operators
if c == '=' || c == '<' || c == '>' {
if c == '=' || c == '<' || c == '>' || c == '+' || c == '-' {
t.pos += 1
return t.input[start:t.pos]
}
@@ -140,7 +140,7 @@ is_ident_char :: proc(c: byte) -> bool {
return (c >= 'a' && c <= 'z') ||
(c >= 'A' && c <= 'Z') ||
(c >= '0' && c <= '9') ||
c == '_' || c == ':' || c == '#' || c == '-' || c == '.'
c == '_' || c == ':' || c == '#' || c == '.'
}
// ---------------------------------------------------------------------------

View File

@@ -234,92 +234,6 @@ gsi_batch_delete_entries :: proc(
return .None
}
// ============================================================================
// DEPRECATED - Non-atomic GSI maintenance
//
// These procedures are kept for backwards compatibility but should NOT be used.
// They perform individual database writes which is NOT atomic.
// Use gsi_batch_write_entries and gsi_batch_delete_entries instead.
// ============================================================================
// DEPRECATED: Use gsi_batch_write_entries instead for atomic operations.
// Write GSI entries for an item across all GSIs defined on the table.
// WARNING: This performs individual writes which is NOT atomic!
gsi_write_entries :: proc(
engine: ^Storage_Engine,
table_name: string,
item: Item,
metadata: ^Table_Metadata,
) -> Storage_Error {
gsis, has_gsis := metadata.global_secondary_indexes.?
if !has_gsis || len(gsis) == 0 {
return .None
}
for &gsi in gsis {
// Extract GSI key from item
gsi_kv, kv_ok := gsi_extract_key_values(item, gsi.key_schema)
if !kv_ok {
continue // Sparse: item doesn't have GSI PK, skip
}
// Build GSI storage key
gsi_storage_key := build_gsi_key(table_name, gsi.index_name, gsi_kv.pk, gsi_kv.sk)
defer delete(gsi_storage_key)
// Build projected item
projected := gsi_project_item(item, &gsi, metadata.key_schema)
defer item_destroy(&projected)
// Encode projected item
encoded, encode_ok := encode(projected)
if !encode_ok {
return .Serialization_Error
}
defer delete(encoded)
// Write to RocksDB
put_err := rocksdb.db_put(&engine.db, gsi_storage_key, encoded)
if put_err != .None {
return .RocksDB_Error
}
}
return .None
}
// DEPRECATED: Use gsi_batch_delete_entries instead for atomic operations.
// Delete GSI entries for an item across all GSIs.
// WARNING: This performs individual writes which is NOT atomic!
gsi_delete_entries :: proc(
engine: ^Storage_Engine,
table_name: string,
old_item: Item,
metadata: ^Table_Metadata,
) -> Storage_Error {
gsis, has_gsis := metadata.global_secondary_indexes.?
if !has_gsis || len(gsis) == 0 {
return .None
}
for &gsi in gsis {
gsi_kv, kv_ok := gsi_extract_key_values(old_item, gsi.key_schema)
if !kv_ok {
continue // Item didn't have a GSI entry
}
gsi_storage_key := build_gsi_key(table_name, gsi.index_name, gsi_kv.pk, gsi_kv.sk)
defer delete(gsi_storage_key)
del_err := rocksdb.db_delete(&engine.db, gsi_storage_key)
if del_err != .None {
return .RocksDB_Error
}
}
return .None
}
// ============================================================================
// GSI Query
//