@@ -66,7 +66,7 @@ xdb_create_table (xdb_stmt_tbl_t *pStmt)
6666{
6767 int rc ;
6868 xdb_conn_t * pConn = pStmt -> pConn ;
69- xdb_dbm_t * pDbm = pConn -> pCurDbm ;
69+ xdb_dbm_t * pDbm = pStmt -> pDbm ;
7070 xdb_tblm_t * pTblm = NULL ;
7171
7272 if (NULL != pStmt -> pTblm ) {
@@ -329,7 +329,10 @@ xdb_dump_create_table (xdb_tblm_t *pTblm, char buf[], xdb_size size, uint32_t fl
329329{
330330 xdb_size len = 0 ;
331331
332- len += sprintf (buf + len , "CREATE TABLE %s (\n" , XDB_OBJ_NAME (pTblm ));
332+ len += sprintf (buf + len , "CREATE TABLE%s %s%s%s (\n" , (flags & XDB_DUMP_EXIST ) ? " IF NOT EXISTS" : "" ,
333+ (flags & XDB_DUMP_FULLNAME ) ? XDB_OBJ_NAME (pTblm -> pDbm ) : "" ,
334+ (flags & XDB_DUMP_FULLNAME ) ? "." : "" ,
335+ XDB_OBJ_NAME (pTblm ));
333336
334337 // dump field
335338 for (int i = 0 ; i < pTblm -> fld_count ; ++ i ) {
@@ -375,16 +378,11 @@ xdb_dump_create_table (xdb_tblm_t *pTblm, char buf[], xdb_size size, uint32_t fl
375378 if (pTblm -> bMemory && !pTblm -> pDbm -> bMemory ) {
376379 len += sprintf (buf + len , " ENGINE=MEMORY" );
377380 }
378- if (0 == flags ) {
379- len += sprintf (buf + len , ";\n" );
380- } else {
381- len += sprintf (buf + len , " XOID=%d;\n" , XDB_OBJ_ID (pTblm ));
382- }
383-
384- if (0 == flags ) {
385- len -- ;
386- buf [len ] = '\0' ;
381+ if (flags & XDB_DUMP_XOID ) {
382+ len += sprintf (buf + len , " XOID=%d" , XDB_OBJ_ID (pTblm ));
387383 }
384+ buf [len ++ ] = ';' ;
385+ buf [len ] = '\0' ;
388386
389387 return len ;
390388}
0 commit comments