I'm fairly dissatisfied with the naming of Greg Stark's proposed new
feature for creating indexes without blocking writers of the table.
To my mind, "ONLINE" just doesn't convey any useful information ---
the existing CREATE INDEX functionality could already be said to be
"online", in the sense that you don't have to take down the database
to do it.  I thought about "SHARED" but someone could probably raise
the same objection to it.  Anyone have a better idea?

I'm also wondering about where in the command the keyword should go.
As submitted it's

      ( { <replaceable class="parameter">column</replaceable> | ( <replaceable 
class="parameter">expression</replaceable> ) } [ <replaceable 
class="parameter">opclass</replaceable> ] [, ...] )
      [ WITH ( <replaceable class="PARAMETER">storage_parameter</replaceable> = 
<replaceable class="PARAMETER">value</replaceable> [, ... ] ) ]
      [ TABLESPACE <replaceable class="parameter">tablespace</replaceable> ]
+     [ ONLINE]
      [ WHERE <replaceable class="parameter">predicate</replaceable> ]

which seems a bit randomly chosen; what's more it creates a problem for
psql, which would have to parse nearly the entire command to discover
whether it's safe to execute inside a transaction block or not.
I'm tempted to put the new keyword at the very front:

        SHARED CREATE INDEX ....

which would probably mean that we'd have to document it as if it were a
completely separate command from CREATE INDEX, but then again that might
not be a bad thing considering how differently the two cases behave.
If not that, we probably still need to put it somewhere near the front
for psql's sake.

Comments?

                        regards, tom lane

---------------------------(end of broadcast)---------------------------
TIP 2: Don't 'kill -9' the postmaster

Reply via email to