+1 for this, especially in the long term. CREATE INDEX should do the right thing for most people without requiring extra ceremony.
On Tue, May 9, 2023 at 5:20 PM Jeremiah D Jordan <jeremiah.jor...@gmail.com> wrote: > If the consensus is that SAI is the right default index, then we should > just change CREATE INDEX to be SAI, and legacy 2i to be a CUSTOM INDEX. > > > On May 9, 2023, at 4:44 PM, Caleb Rackliffe <calebrackli...@gmail.com> > wrote: > > Earlier today, Mick started a thread on the future of our index creation > DDL on Slack: > > https://the-asf.slack.com/archives/C018YGVCHMZ/p1683527794220019 > > At the moment, there are two ways to create a secondary index. > > *1.) CREATE INDEX [IF NOT EXISTS] [name] ON <table> (<column>)* > > This creates an optionally named legacy 2i on the provided table and > column. > > ex. CREATE INDEX my_index ON kd.tbl(my_text_col) > > *2.) CREATE CUSTOM INDEX [IF NOT EXISTS] [name] ON <table> (<column>) > USING <class|alias> [WITH OPTIONS = <options>]* > > This creates a secondary index on the provided table and column using the > specified 2i implementation class and (optional) parameters. > > ex. CREATE CUSTOM INDEX my_index ON ks.tbl(my_text_col) USING > 'StorageAttachedIndex' > > (Note that the work on SAI added aliasing, so `StorageAttachedIndex` is > shorthand for the fully-qualified class name, which is also valid.) > > So what is there to discuss? > > The concern Mick raised is... > > "...just folk continuing to use CREATE INDEX because they think CREATE > CUSTOM INDEX is advanced (or just don't know of it), and we leave users > doing 2i (when they think they are, and/or we definitely want them to be, > using SAI)" > > To paraphrase, we want people to use SAI once it's available where > possible, and the default behavior of CREATE INDEX could be at odds w/ > that. > > The proposal we seem to have landed on is something like the following: > > For 5.0: > > 1.) Disable by default the creation of new legacy 2i via CREATE INDEX. > 2.) Leave CREATE CUSTOM INDEX...USING... available by default. > > (Note: How this would interact w/ the existing secondary_indexes_enabled > YAML options isn't clear yet.) > > Post-5.0: > > 1.) Deprecate and eventually remove SASI when SAI hits full feature parity > w/ it. > 2.) Replace both CREATE INDEX and CREATE CUSTOM INDEX w/ something of a > hybrid between the two. For example, CREATE INDEX...USING...WITH. This > would both be flexible enough to accommodate index implementation selection > and prescriptive enough to force the user to make a decision (and wouldn't > change the legacy behavior of the existing CREATE INDEX). In this world, > creating a legacy 2i might look something like CREATE INDEX...USING > `legacy`. > 3.) Eventually deprecate CREATE CUSTOM INDEX...USING. > > Eventually we would have a single enabled DDL statement for index creation > that would be minimal but also explicit/able to handle some evolution. > > What does everyone think? > > > -- Jonathan Ellis co-founder, http://www.datastax.com @spyced