Got it, so this should work fine, so long as I'm careful to always re-add the collate functions to each database handle before accessing the table with that index. Cool, thanks!
-david On Sun, Jan 18, 2015 at 1:16 PM, Simon Slavin <slav...@bigfraud.org> wrote: > > On 18 Jan 2015, at 8:29pm, David Barrett <dbarr...@expensify.com> wrote: > > > SELECT createNewJSONCollationFunction( "FooCollationSequence", "foo" > ); > > SELECT createNewJSONCollationFunction( "BarCollationSequence", "bar" > ); > > Those two might be okay depending on what the quoted values are meant to > be. > > > CREATE INDEX ON testDataFoo ( "json" FooCollationSequence ); > > CREATE INDEX ON testDataBar ( "json" BarCollationSequence ); > > Syntax wrong. > > CREATE INDEX indexname ON tablename (columnname COLLATE collatefunction) > > Indexes need a name each. Inside the brackets goes the name of the column > you're indexing on, then COLLATE, then the collation function to use (which > can be your own). You cannot make the collation function take a parameter > at this point. > > > Before giving that a shot, however, I'm hoping someone here can give me a > > sense of whether that'll work? Specifically, if I'm generating these > > dynamic collation sequences on the fly, how does sqlite store the index > on > > disk? > > SQLite uses the simplest most obvious way to do it: the values returned by > your COLLATE function are stored in the index when a new row is added to a > table. If your COLLATE function changes after rows have been added to the > index, SQLite does not understand the problem and can corrupt the index as > it tries to change it assuming that the old values are correct. > > Simon. > _______________________________________________ > sqlite-users mailing list > sqlite-users@sqlite.org > http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users > _______________________________________________ sqlite-users mailing list sqlite-users@sqlite.org http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users