I agree. 5.0 is a major release and provides an opportunity to switch defaults.

> On May 9, 2023, at 7:00 PM, Jonathan Ellis <jbel...@gmail.com> wrote:
> 
> +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 
> <mailto: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 
>>> <mailto: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 <http://www.datastax.com/>
> @spyced

Reply via email to