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