From c0cb4f6cea5716d0e14c6577538b00740c7a0446 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 4 Mar 2005 22:49:34 +0000 Subject: [PATCH] =?UTF-8?q?Fix:=20Le=20nom=20des=20index=20g=E9n=E9r=E9s?= =?UTF-8?q?=20pour=20pgsql=20inclus=20la=20table=20car=20sous=20pgsql=20on?= =?UTF-8?q?=20un=20nom=20d'index=20doit=20etre=20unique=20pour=20toute=20l?= =?UTF-8?q?a=20base=20(sous=20mysql,=20unique=20par=20table)=20Fix:=20Corr?= =?UTF-8?q?ige=20probl=E8me=20de=20quot=20sur=20UNIQUE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build/dolibarr_mysql2pgsql.pl | 55 +++++++++++++++++++++++++++-------- 1 file changed, 43 insertions(+), 12 deletions(-) diff --git a/build/dolibarr_mysql2pgsql.pl b/build/dolibarr_mysql2pgsql.pl index 202c08df597..d8e52105c80 100644 --- a/build/dolibarr_mysql2pgsql.pl +++ b/build/dolibarr_mysql2pgsql.pl @@ -234,30 +234,61 @@ foreach my $file (keys %filelist) { s/^double/real/i; s/(\s*)double/${1}real/i; - # Ignore "unique key(xx, yy)" (key on double fields not supported by postgres) - next if (/unique key\s*\(\w+\s*,\s*\w+\)/i); - next if (/unique index\s*\(\w+\s*,\s*\w+\)/i); - - if (/\bkey\b/i && !/^\s+primary key\s+/i) { - s/KEY(\s+)[^(]*(\s+)/$1 UNIQUE $2/i; # hack off name of the non-primary key + # unique key(field1,field2) + if (/unique key\s*\((\w+\s*,\s*\w+)\)/i) { + s/unique key\s*\((\w+\s*,\s*\w+)\)/UNIQUE\($1\)/i; + $create_sql.=$_; + next; + } + # unique index(field1,field2) + if (/unique index\s*\((\w+\s*,\s*\w+)\)/i) { + s/unique index\s*\((\w+\s*,\s*\w+)\)/UNIQUE\($1\)/i; + $create_sql.=$_; + next; } - # unique index(field) + # unique key [name] (field) + if (/unique key\s*(\w*)\s*\((\w+)\)/i) { + s/unique key\s*(\w*)\s*\((\w+)\)/UNIQUE\($2\)/i; + my $idxname=($1?"$1":"idx_${table}_$2"); + $create_sql.=$_; + $create_index .= "CREATE INDEX $idxname ON $table ($2);\n"; + next; + } + # unique index [name] (field) if (/unique index\s*(\w*)\s*\((\w+)\)/i) { - $create_index .= "CREATE INDEX ".($1?"$1":"idx_$2")." ON $table ($2);\n"; + s/unique index\s*(\w*)\s*\((\w+)\)/UNIQUE\($2\)/i; + my $idxname=($1?"$1":"idx_${table}_$2"); + $create_sql.=$_; + $create_index .= "CREATE INDEX $idxname ON $table ($2);\n"; + next; + } + # unique (field) et unique (field1, field2 ...) + if (/unique\s*\(([\w,\s]+)\)/i) { + s/unique\s*\(([\w,\s]+)\)/UNIQUE\($1\)/i; + my $idxname="idx_${table}_$1"; + $idxname =~ s/\W/_/g; + $create_sql.=$_; + $create_index .= "CREATE INDEX $idxname ON $table ($1);\n"; next; } # index(field) if (/index\s*(\w*)\s*\((\w+)\)/i) { - $create_index .= "CREATE INDEX ".($1?"$1":"idx_$2")." ON $table ($2);\n"; + my $idxname=($1?"$1":"idx_${table}_$2"); + $create_index .= "CREATE INDEX $idxname ON $table ($2);\n"; next; } - + + # primary key + if (/\bkey\b/i && !/^\s+primary key\s+/i) { + s/KEY(\s+)[^(]*(\s+)/$1 UNIQUE $2/i; # hack off name of the non-primary key + } + # key(xxx) if (/key\s*\((\w+)\)/i) { - #$create_index .= "CREATE INDEX ${table}_$1 ON $table ($1);\n"; - $create_index .= "CREATE INDEX idx_$1 ON $table ($1);\n"; + my $idxname="idx_${table}_$1"; + $create_index .= "CREATE INDEX $idxname ON $table ($1);\n"; next; }