[tarantool-patches] Re: [PATCH 2/2] sql: take sql field in index_opts_cmp

n.pettik korablev at tarantool.org
Tue Aug 21 13:26:44 MSK 2018


> diff --git a/src/box/index_def.h b/src/box/index_def.h
> index 48a7820..8960e3d 100644
> --- a/src/box/index_def.h
> +++ b/src/box/index_def.h
> @@ -212,6 +212,14 @@ index_opts_cmp(const struct index_opts *o1, const struct index_opts *o2)
> 		return o1->run_size_ratio < o2->run_size_ratio ? -1 : 1;
> 	if (o1->bloom_fpr != o2->bloom_fpr)
> 		return o1->bloom_fpr < o2->bloom_fpr ? -1 : 1;
> +

Nitpicking: don’t put extra new line: it breaks whole function look.

> +	if ((o1->sql == NULL) != (o2->sql == NULL))
> +		return 1;
> +	if ((o1->sql != NULL) && (o2->sql != NULL)) {

Nitpicking: after previous check o1->sql and o2->sql are both NULL or not.
So I guess only one check is enough: if (o1->sql != NULL).

> +		int rc = strcmp(o1->sql, o2->sql);
> +		if (rc != 0)
> +			return rc;

Why not simply return strcmp()?

> +	}
> 	return 0;
> }
> 
> diff --git a/test/sql/gh-3613-idx-alter-update-2.test.lua b/test/sql/gh-3613-idx-alter-update-2.test.lua
> new file mode 100644
> index 0000000..e2beb7a
> --- /dev/null
> +++ b/test/sql/gh-3613-idx-alter-update-2.test.lua

Can you merge this test file with previous one?
I strongly dislike the fact that such simple tests are put in
separate files. Even though we already have sql-tap/alter.test.lua.

> @@ -0,0 +1,16 @@
> +test_run = require('test_run').new()
> +engine = test_run:get_cfg('engine')
> +box.sql.execute('pragma sql_default_engine=\''..engine..'\'')
> +
> +box.sql.execute('CREATE TABLE t (s1 INT PRIMARY KEY)')
> +box.sql.execute('CREATE INDEX i ON t (s1)')
> +box.sql.execute('ALTER TABLE t RENAME TO j3')
> +
> +-- After gh-3613 fix, bug in cmp_def was discovered.
> +-- Comparison didn't take .opts.sql into account.
> +test_run:cmd('restart server default')
> +
> +box.sql.execute('DROP INDEX i ON j3')
> +
> +-- Cleanup
> +box.sql.execute('DROP TABLE j3')
> -- 
> 2.16.2
> 
> 





More information about the Tarantool-patches mailing list