понедельник, 26 октября 2009 г.

Использование таблиц из приаттаченных баз в SQLite view

В одном из релизов была изменена логика работы с приаттаченными базами. Теперь можно создавать только временные виды, которые обращаются к таблицам из других баз. Конечно, так надежнее, но для многих систем анализа нереально копировать огромные таблицы в целевую базу, так что приходится идти на то, чтобы позволять создавать view с использованием приаттаченных баз. Разумеется, база с такими view может быть некорректна, если не приаттачены дополнительные базы. Представленный ниже патч решает вопрос в нашу пользу.


--- sqlite3-3.6.19.orig/src/attach.c
+++ sqlite3-3.6.19/src/attach.c
@@ -447,10 +447,11 @@
if( pItem->zDatabase==0 ){
pItem->zDatabase = sqlite3DbStrDup(pFix->pParse->db, zDb);
}else if( sqlite3StrICmp(pItem->zDatabase,zDb)!=0 ){
- sqlite3ErrorMsg(pFix->pParse,
+/* sqlite3ErrorMsg(pFix->pParse,
"%s %T cannot reference objects in database %s",
pFix->zType, pFix->pName, pItem->zDatabase);
- return 1;
+ return 1;*/
+ return 0;
}
#if !defined(SQLITE_OMIT_VIEW) || !defined(SQLITE_OMIT_TRIGGER)
if( sqlite3FixSelect(pFix, pItem->pSelect) ) return 1;

Комментариев нет:


(C) Alexey Pechnikov aka MBG, mobigroup.ru