diff options
Diffstat (limited to 'ext/sqlite/libsqlite/src/copy.c')
-rw-r--r-- | ext/sqlite/libsqlite/src/copy.c | 16 |
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); } |