Le 02/04/10 13:27, Cédric Krier a écrit :
On 02/04/10 13:20 +0200, Chenal Bertrand wrote:
Le 02/04/10 11:10, Cédric Krier a écrit :
Hi,

I would like to bring some attention on the issue1422[1]. I think we should
try to fix this before release 1.6.0.
There is a possible solution that will work only for PostgreSQL:

      CREATE UNIQUE INDEX "index" ON "table" ("name", COALESCE("parent", 0));

Is there anybody who has better solution?


[1] http://bugs.tryton.org/roundup/issue1422

For me it's a good solution, but what about Mysql ?
(for Sqlite it's already handled in the python code).
SQLite doesn't work because NULL != NULL (for PostgreSQL, SQLite and MySQL).
So it will not work for SQLite nor MySQL because they don't allow to put
expressions in the definition of an index (only column names).

OK, but aren't we talking about a this:

self._constraints += [('unique_parent_name', 'UNIQUE(parent, name)', 'msg' )]"

in the python code ?

And it generates

ALTER TABLE "table" ADD CONTRAINT "unique_parent_name" unique(parent, name)

that implicitly creates the index.

This case is correctly handled with sqlite because constraint are enforced by an extra query in _validate method in modelsql.py and this extra query support the coalesce trick.

--
Bertrand Chenal

B2CK SPRL
Rue de Rotterdam, 4
4000 Liège
Belgium
Tel: +32 474 207 906
Email: [email protected]
Website: http://www.b2ck.com/

--
[email protected] mailing list

Reply via email to