diff --git a/migration/i2.0/oracle/201311201011_IDEMPIERE-1520.sql b/migration/i2.0/oracle/201311201011_IDEMPIERE-1520.sql new file mode 100644 index 0000000000..421d0b3c8b --- /dev/null +++ b/migration/i2.0/oracle/201311201011_IDEMPIERE-1520.sql @@ -0,0 +1,26 @@ +SET SQLBLANKLINES ON +SET DEFINE OFF + +-- Nov 20, 2013 10:07:29 AM CET +-- IDEMPIERE-1520 Ability to delete an index within AD +INSERT INTO AD_Element (AD_Client_ID,AD_Element_ID,AD_Element_UU,AD_Org_ID,ColumnName,Created,CreatedBy,EntityType,IsActive,Name,PrintName,Updated,UpdatedBy) VALUES (0,202628,'e7399236-2b73-40af-a72e-16158c2df11f',0,'TableIndexDrop',TO_DATE('2013-11-20 10:07:27','YYYY-MM-DD HH24:MI:SS'),100,'D','Y','Drop table index','Drop table index',TO_DATE('2013-11-20 10:07:27','YYYY-MM-DD HH24:MI:SS'),100) +; + +-- Nov 20, 2013 10:08:06 AM CET +INSERT INTO AD_Process (AD_Client_ID,AD_Org_ID,AD_Process_ID,AD_Process_UU,AccessLevel,Classname,CopyFromProcess,Created,CreatedBy,EntityType,IsActive,IsBetaFunctionality,IsDirectPrint,IsReport,IsServerProcess,Name,ShowHelp,Statistic_Count,Statistic_Seconds,Updated,UpdatedBy,Value) VALUES (0,0,200065,'e93b81bb-e3a1-4fb4-b825-39ebfbbe212f','4','org.compiere.process.TableIndexDrop','N',TO_DATE('2013-11-20 10:08:06','YYYY-MM-DD HH24:MI:SS'),100,'D','Y','N','N','N','N','Drop Table Index','Y',0,0,TO_DATE('2013-11-20 10:08:06','YYYY-MM-DD HH24:MI:SS'),100,'TableIndexDrop') +; + +-- Nov 20, 2013 10:08:30 AM CET +INSERT INTO AD_Column (AD_Client_ID,AD_Column_ID,AD_Column_UU,AD_Element_ID,AD_Org_ID,AD_Process_ID,AD_Reference_ID,AD_Table_ID,ColumnName,Created,CreatedBy,EntityType,FKConstraintType,FieldLength,IsActive,IsAllowCopy,IsAllowLogging,IsAlwaysUpdateable,IsAutocomplete,IsEncrypted,IsIdentifier,IsKey,IsMandatory,IsParent,IsSecure,IsSelectionColumn,IsSyncDatabase,IsToolbarButton,IsTranslated,IsUpdateable,Name,SeqNo,SeqNoSelection,Updated,UpdatedBy,Version) VALUES (0,210889,'5a7e6f14-4e5f-4051-ae2d-88cc6642fa24',202628,0,200065,28,200085,'TableIndexDrop',TO_DATE('2013-11-20 10:08:30','YYYY-MM-DD HH24:MI:SS'),100,'D','N',1,'Y','Y','Y','N','N','N','N','N','N','N','N','N','N','Y','N','Y','Drop table index',0,0,TO_DATE('2013-11-20 10:08:30','YYYY-MM-DD HH24:MI:SS'),100,0) +; + +-- Nov 20, 2013 10:08:33 AM CET +ALTER TABLE AD_TableIndex ADD TableIndexDrop CHAR(1) DEFAULT NULL +; + +-- Nov 20, 2013 10:09:27 AM CET +INSERT INTO AD_Field (AD_Client_ID,AD_Column_ID,AD_Field_ID,AD_Field_UU,AD_Org_ID,AD_Tab_ID,ColumnSpan,Created,CreatedBy,DisplayLength,EntityType,IsActive,IsCentrallyMaintained,IsDisplayed,IsEncrypted,IsFieldOnly,IsHeading,IsReadOnly,IsSameLine,Name,SeqNo,Updated,UpdatedBy,XPosition) VALUES (0,210889,202535,'25be136d-efd6-4afc-8792-c47e3e0b53ef',0,200096,2,TO_DATE('2013-11-20 10:09:26','YYYY-MM-DD HH24:MI:SS'),100,1,'D','Y','Y','Y','N','N','N','N','N','Drop table index',130,TO_DATE('2013-11-20 10:09:26','YYYY-MM-DD HH24:MI:SS'),100,2) +; + +SELECT register_migration_script('201311201011_IDEMPIERE-1520.sql') FROM dual +; diff --git a/migration/i2.0/postgresql/201311201011_IDEMPIERE-1520.sql b/migration/i2.0/postgresql/201311201011_IDEMPIERE-1520.sql new file mode 100644 index 0000000000..eb8b717a99 --- /dev/null +++ b/migration/i2.0/postgresql/201311201011_IDEMPIERE-1520.sql @@ -0,0 +1,23 @@ +-- Nov 20, 2013 10:07:29 AM CET +-- IDEMPIERE-1520 Ability to delete an index within AD +INSERT INTO AD_Element (AD_Client_ID,AD_Element_ID,AD_Element_UU,AD_Org_ID,ColumnName,Created,CreatedBy,EntityType,IsActive,Name,PrintName,Updated,UpdatedBy) VALUES (0,202628,'e7399236-2b73-40af-a72e-16158c2df11f',0,'TableIndexDrop',TO_TIMESTAMP('2013-11-20 10:07:27','YYYY-MM-DD HH24:MI:SS'),100,'D','Y','Drop table index','Drop table index',TO_TIMESTAMP('2013-11-20 10:07:27','YYYY-MM-DD HH24:MI:SS'),100) +; + +-- Nov 20, 2013 10:08:06 AM CET +INSERT INTO AD_Process (AD_Client_ID,AD_Org_ID,AD_Process_ID,AD_Process_UU,AccessLevel,Classname,CopyFromProcess,Created,CreatedBy,EntityType,IsActive,IsBetaFunctionality,IsDirectPrint,IsReport,IsServerProcess,Name,ShowHelp,Statistic_Count,Statistic_Seconds,Updated,UpdatedBy,Value) VALUES (0,0,200065,'e93b81bb-e3a1-4fb4-b825-39ebfbbe212f','4','org.compiere.process.TableIndexDrop','N',TO_TIMESTAMP('2013-11-20 10:08:06','YYYY-MM-DD HH24:MI:SS'),100,'D','Y','N','N','N','N','Drop Table Index','Y',0,0,TO_TIMESTAMP('2013-11-20 10:08:06','YYYY-MM-DD HH24:MI:SS'),100,'TableIndexDrop') +; + +-- Nov 20, 2013 10:08:30 AM CET +INSERT INTO AD_Column (AD_Client_ID,AD_Column_ID,AD_Column_UU,AD_Element_ID,AD_Org_ID,AD_Process_ID,AD_Reference_ID,AD_Table_ID,ColumnName,Created,CreatedBy,EntityType,FKConstraintType,FieldLength,IsActive,IsAllowCopy,IsAllowLogging,IsAlwaysUpdateable,IsAutocomplete,IsEncrypted,IsIdentifier,IsKey,IsMandatory,IsParent,IsSecure,IsSelectionColumn,IsSyncDatabase,IsToolbarButton,IsTranslated,IsUpdateable,Name,SeqNo,SeqNoSelection,Updated,UpdatedBy,Version) VALUES (0,210889,'5a7e6f14-4e5f-4051-ae2d-88cc6642fa24',202628,0,200065,28,200085,'TableIndexDrop',TO_TIMESTAMP('2013-11-20 10:08:30','YYYY-MM-DD HH24:MI:SS'),100,'D','N',1,'Y','Y','Y','N','N','N','N','N','N','N','N','N','N','Y','N','Y','Drop table index',0,0,TO_TIMESTAMP('2013-11-20 10:08:30','YYYY-MM-DD HH24:MI:SS'),100,0) +; + +-- Nov 20, 2013 10:08:33 AM CET +ALTER TABLE AD_TableIndex ADD COLUMN TableIndexDrop CHAR(1) DEFAULT NULL +; + +-- Nov 20, 2013 10:09:27 AM CET +INSERT INTO AD_Field (AD_Client_ID,AD_Column_ID,AD_Field_ID,AD_Field_UU,AD_Org_ID,AD_Tab_ID,ColumnSpan,Created,CreatedBy,DisplayLength,EntityType,IsActive,IsCentrallyMaintained,IsDisplayed,IsEncrypted,IsFieldOnly,IsHeading,IsReadOnly,IsSameLine,Name,SeqNo,Updated,UpdatedBy,XPosition) VALUES (0,210889,202535,'25be136d-efd6-4afc-8792-c47e3e0b53ef',0,200096,2,TO_TIMESTAMP('2013-11-20 10:09:26','YYYY-MM-DD HH24:MI:SS'),100,1,'D','Y','Y','Y','N','N','N','N','N','Drop table index',130,TO_TIMESTAMP('2013-11-20 10:09:26','YYYY-MM-DD HH24:MI:SS'),100,2) +; + +SELECT register_migration_script('201311201011_IDEMPIERE-1520.sql') FROM dual +; diff --git a/org.adempiere.base/src/org/compiere/process/TableIndexDrop.java b/org.adempiere.base/src/org/compiere/process/TableIndexDrop.java new file mode 100644 index 0000000000..d7154b9963 --- /dev/null +++ b/org.adempiere.base/src/org/compiere/process/TableIndexDrop.java @@ -0,0 +1,39 @@ +/****************************************************************************** + * Product: iDempiere ERP & CRM Smart Business Solution * + * This program is free software; you can redistribute it and/or modify it * + * under the terms version 2 of the GNU General Public License as published * + * by the Free Software Foundation. This program is distributed in the hope * + * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied * + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * + * See the GNU General Public License for more details. * + * You should have received a copy of the GNU General Public License along * + * with this program; if not, write to the Free Software Foundation, Inc., * + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. * + ******************************************************************************/ +package org.compiere.process; + +import org.compiere.model.MTableIndex; +import org.compiere.util.DB; + +public class TableIndexDrop extends SvrProcess { + + private int p_AD_TableIndex_ID = 0; + + @Override + protected void prepare() + { + p_AD_TableIndex_ID = getRecord_ID(); + } + + protected String doIt() throws Exception + { + MTableIndex index = new MTableIndex(getCtx(), p_AD_TableIndex_ID, get_TrxName()); + log.info(index.toString()); + + String sql = "DROP INDEX " + index.getName(); + int rvalue = DB.executeUpdateEx(sql, get_TrxName()); + + return rvalue + " - " + sql; + } + +} // TableIndexDrop \ No newline at end of file diff --git a/org.adempiere.base/src/org/compiere/process/TableIndexValidate.java b/org.adempiere.base/src/org/compiere/process/TableIndexValidate.java index d22a013fef..e829500a46 100644 --- a/org.adempiere.base/src/org/compiere/process/TableIndexValidate.java +++ b/org.adempiere.base/src/org/compiere/process/TableIndexValidate.java @@ -95,13 +95,10 @@ public class TableIndexValidate extends SvrProcess { else if (!found) { String sql = index.getDDL(); - int rvalue = DB.executeUpdate(sql, (Object[]) null, true, trxName); + int rvalue = DB.executeUpdateEx(sql, (Object[]) null, trxName); if (pi != null) pi.addLog(0, null, new BigDecimal(rvalue), sql); - if (rvalue == -1) - throw new AdempiereException(Msg.getMsg(ctx, "Failed to create index")); - else - return Msg.getMsg(ctx, "CreatedIndexSuccess"); + return Msg.getMsg(ctx, "CreatedIndexSuccess"); } else {