summaryrefslogtreecommitdiff
path: root/ext/sqlite/libsqlite/src/copy.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/sqlite/libsqlite/src/copy.c')
-rw-r--r--ext/sqlite/libsqlite/src/copy.c16
1 files changed, 3 insertions, 13 deletions
diff --git a/ext/sqlite/libsqlite/src/copy.c b/ext/sqlite/libsqlite/src/copy.c
index 5fca758d63..2f70fce17b 100644
--- a/ext/sqlite/libsqlite/src/copy.c
+++ b/ext/sqlite/libsqlite/src/copy.c
@@ -37,7 +37,6 @@ void sqliteCopy(
int i;
Vdbe *v;
int addr, end;
- Index *pIdx;
char *zFile = 0;
const char *zDb;
sqlite *db = pParse->db;
@@ -58,18 +57,9 @@ void sqliteCopy(
v = sqliteGetVdbe(pParse);
if( v ){
sqliteBeginWriteOperation(pParse, 1, pTab->iDb);
- addr = sqliteVdbeAddOp(v, OP_FileOpen, 0, 0);
- sqliteVdbeChangeP3(v, addr, pFilename->z, pFilename->n);
+ addr = sqliteVdbeOp3(v, OP_FileOpen, 0, 0, pFilename->z, pFilename->n);
sqliteVdbeDequoteP3(v, addr);
- sqliteVdbeAddOp(v, OP_Integer, pTab->iDb, 0);
- sqliteVdbeAddOp(v, OP_OpenWrite, 0, pTab->tnum);
- sqliteVdbeChangeP3(v, -1, pTab->zName, P3_STATIC);
- for(i=1, pIdx=pTab->pIndex; pIdx; pIdx=pIdx->pNext, i++){
- assert( pIdx->iDb==1 || pIdx->iDb==pTab->iDb );
- sqliteVdbeAddOp(v, OP_Integer, pIdx->iDb, 0);
- sqliteVdbeAddOp(v, OP_OpenWrite, i, pIdx->tnum);
- sqliteVdbeChangeP3(v, -1, pIdx->zName, P3_STATIC);
- }
+ sqliteOpenTableAndIndices(pParse, pTab, 0);
if( db->flags & SQLITE_CountRows ){
sqliteVdbeAddOp(v, OP_Integer, 0, 0); /* Initialize the row count */
}
@@ -107,7 +97,7 @@ void sqliteCopy(
sqliteVdbeAddOp(v, OP_Noop, 0, 0);
sqliteEndWriteOperation(pParse);
if( db->flags & SQLITE_CountRows ){
- sqliteVdbeAddOp(v, OP_ColumnName, 0, 0);
+ sqliteVdbeAddOp(v, OP_ColumnName, 0, 1);
sqliteVdbeChangeP3(v, -1, "rows inserted", P3_STATIC);
sqliteVdbeAddOp(v, OP_Callback, 1, 0);
}