DB: Firebird 2.5.4Utilizzando indice superiore calcolato in Firebird per confrontare le stringhe di caso insensitive
campo ho 1 tavolo, 2 campi stringa e 1 calcolato:
Files
name varchar 256
extension varchar 4
filename computed by name||extension
voglio cercare un nome di file in questa tabella (caso insensisive)
La query è
Select *
from files f
where upper(f.filename) = upper('test.txt')
questo è il lavoro di Naturalmente, e per accelerare la query, ho creato un indice calcolato su file su upper(filename)
CREATE INDEX test ON FILES COMPUTED BY (upper(filename));
Ora, la stessa query non funziona più! Non restituisce nulla. Ho provato un indice in basso, ma non funziona neanche.
wtf? Ho perso un'opzione da qualche parte?
A prima vista sembra un bug, vedrò se riesco a riprodurre (stasera, non ho accesso a un'istanza di Firebird adesso) –
Ho modificato il post con una descrizione più completa di 2 minuti fa. –
La settimana scorsa c'era un post sulla mailing list di supporto per firebird in cui qualcuno menzionava un problema simile con gli indici sulle colonne calcolate. Come soluzione alternativa potresti probabilmente rendere 'filename' una colonna normale e popolarla in un trigger su update e insert. –