| 20541 | } |
| 20542 | #ifndef SQLITE_OMIT_DESERIALIZE |
| 20543 | else |
| 20544 | if( p->openMode==SHELL_OPEN_DESERIALIZE || p->openMode==SHELL_OPEN_HEXDB ){ |
| 20545 | int rc; |
| 20546 | int nData = 0; |
| 20547 | unsigned char *aData; |
| 20548 | if( p->openMode==SHELL_OPEN_DESERIALIZE ){ |
| 20549 | aData = (unsigned char*)readFile(zDbFilename, &nData); |
| 20550 | }else{ |
| 20551 | aData = readHexDb(p, &nData); |
| 20552 | if( aData==0 ){ |
| 20553 | return; |
| 20554 | } |
| 20555 | } |
| 20556 | rc = sqlite3_deserialize(p->db, "main", aData, nData, nData, |
| 20557 | SQLITE_DESERIALIZE_RESIZEABLE | |
| 20558 | SQLITE_DESERIALIZE_FREEONCLOSE); |
| 20559 | if( rc ){ |
| 20560 | utf8_printf(stderr, "Error: sqlite3_deserialize() returns %d\n", rc); |
| 20561 | } |
| 20562 | if( p->szMax>0 ){ |
| 20563 | sqlite3_file_control(p->db, "main", SQLITE_FCNTL_SIZE_LIMIT, &p->szMax); |
| 20564 | } |
| 20565 | } |
| 20566 | #endif |
| 20567 | } |
| 20568 | if( p->bSafeModePersist && p->db!=0 ){ |