03.12.2007, 17:42 | #1 |
Участник
|
Вопрос поисследовать SqlScanMain\dropIndex
Имеем:
Ax4.0 sp1, sql 2005 таблица TransactTxt при запуске синхронизации с проверкой Аксапте рвет голову на индексе DataRecidIdx, в котором поля dataAreaId, Recid. Она считает, что поля в скуле и в словаре поменяны местами - ну это ладно, дальше она пытается этот индекс дропнуть : X++: void dropIndex(Statement stmt) { SqlStatementExecutePermission ssep; str sqlString; ; if (sQLIndex.isIndexPrimary()) this.dropConstraint(sQLIndex.getIndexName()); // on Oracle, the primary index is dropped together with the constraint if (!(sQLIndex.isIndexPrimary() && SqlSystem::databaseBackendId() == DatabaseId::Oracle)) { if( nIndexMask & #SQLFIELD_FLAG ) // Flag designating that index references must be prefixes with tablename sqlString = 'drop index ' + dictTable.name(DbBackend::Sql) + '.' + sQLIndex.getIndexName(); else sqlString = 'drop index ' + sQLIndex.getIndexName(); // dangerous API mitigation ssep = new SqlStatementExecutePermission(sqlString); ssep.assert(); // BP Deviation Documented stmt.executeUpdate(sqlString); } } X++: if (sQLIndex.isIndexPrimary())
this.dropConstraint(sQLIndex.getIndexName()); X++: // on Oracle, the primary index is dropped together with the constraint X++: alter table TRANSACTTXT drop constraint I_483DATARECIDIDX Напрашивается очевидное лечение (в данное время в данном месте - как в предыдущих скулях не смотрел, может надо учесть) X++: if (sQLIndex.isIndexPrimary()) { this.dropConstraint(sQLIndex.getIndexName()); return; } Если тема где-то уже проскальзывала - ткните, я не нашел.. Последний раз редактировалось MironovI; 03.12.2007 в 17:51. |
|
04.12.2007, 12:52 | #2 |
Участник
|
up что-ли..
|
|
04.12.2007, 13:30 | #3 |
Модератор
|
Да
Там еще один прикол похоже зарыт, готовьтесь X++: boolean removeIndex(Statement stmt) { boolean indexDropped = false; ; if (sQLIndex.isIndexClustering()) { this.printStringInReport( this.printReportFormatLine( dictTable.name(), '*' + dictIndex.name(), "@SYS62520", false)); return(false); // cannot drop a clustering index without dropping the table }
__________________
-ТСЯ или -ТЬСЯ ? |
|
04.12.2007, 16:21 | #4 |
Участник
|
Мда, на это я тож нарвался - Аксапте чем-то не понравился индекс по полю с типом GUID и она тут же зохотела его убить, заботится о производительности что-ли?
|
|