From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Date: Fri, 6 Apr 2018 18:25:57 +0300 From: Vladimir Davydov Subject: Re: [PATCH v2 2/2] alter: zap space_vtab::commit_alter Message-ID: <20180406152557.564tqm54762uqysr@esperanza> References: <20180406141001.GE18946@atlas> <20180406142339.3vzwcwv7z7ttdibu@esperanza> <20180406142847.GA13233@atlas> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20180406142847.GA13233@atlas> To: Konstantin Osipov Cc: tarantool-patches@freelists.org List-ID: On Fri, Apr 06, 2018 at 05:28:47PM +0300, Konstantin Osipov wrote: > * Vladimir Davydov [18/04/06 17:25]: > > On Fri, Apr 06, 2018 at 05:10:01PM +0300, Konstantin Osipov wrote: > > > * Vladimir Davydov [18/04/06 16:20]: > > > > > > > space_vtab::commit_alter is implemented only by memtx, which uses it > > > > to set bsize for a new space. However, it isn't necessary to use > > > > commit_alter for this - instead we can set bsize in prepare_alter and > > > > reset it in drop_primary_key, along with memtx_space::replace. Let's > > > > do it and zap space_vtab::commit_alter altogether, because the callback > > > > is confusing: judging by its name it should be called after WAL write, > > > > but it is called before. > > > > void > > > > DropIndex::alter(struct alter_space *alter) > > > > { > > > > - space_drop_primary_key(alter->new_space); > > > > + if (old_index_def->iid == 0) > > > > + space_drop_primary_key(alter->new_space); > > > > } > > > > > > I keep wondering why you ditched a nice comment. > > > If you think it was bad, please write a better one. > > > > This comment is only pertinent to memtx so I just moved it to > > memtx_space_drop_primary_key. > > > > > - /* > > > > - * If it's not the primary key, nothing to do -- > > > > - * the dropped index didn't exist in the new space > > > > - * definition, so does not exist in the created space. > > > > - */ > > What about this hunk? > > Anyway, it's not self-explanatory. Why aren't we doing anything > here for the secondary index and have to take an extra step for > primary? Because there's an engine that needs it, no? If someone needs more details, they can look into engine implementation, memtx in this case. Regarding the particular comment you mentioned. I removed it, because now it contradicts the code: now we call drop_primary_key if iid == 0, not if new_space->index[0] == NULL (I explained why in the comment to the patch). I could "fix" the comment, but then we'd have /* * If it's not the primary key, nothing to do. */ if (old_index_def->iid == 0) return; space_drop_primary_key(alter->new_space); Such a comment would be useless IMHO.