/ Check-in [6f330501]
Login

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:Hold the database mutex for the duration of sqlite3session_diff().
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | sessions
Files: files | file ages | folders
SHA1:6f33050115562833c43da3c99dd37aeb0bf966b6
User & Date: dan 2015-04-17 11:31:08
Context
2015-04-20
01:32
Merge all recent trunk enhancements and fixes into the sessions branch. check-in: b8ef1cde user: drh tags: sessions
2015-04-17
11:31
Hold the database mutex for the duration of sqlite3session_diff(). check-in: 6f330501 user: dan tags: sessions
2015-04-16
13:52
Fix a stray backslash character in a printf format string in sessionDiffFindModified() check-in: abb192a1 user: drh tags: sessions
Changes
Hide Diffs Unified Diffs Show Whitespace Changes Patch

Changes to ext/session/sqlite3session.c.

1451
1452
1453
1454
1455
1456
1457

1458
1459
1460
1461
1462
1463
1464
....
1517
1518
1519
1520
1521
1522
1523

1524
1525
1526
1527
1528
1529
1530
  const char *zDb = pSession->zDb;
  int rc = pSession->rc;
  SessionDiffCtx d;

  memset(&d, 0, sizeof(d));
  sessionDiffHooks(pSession, &d);


  if( pzErrMsg ) *pzErrMsg = 0;
  if( rc==SQLITE_OK ){
    char *zExpr = 0;
    sqlite3 *db = pSession->db;
    SessionTable *pTo;            /* Table zTbl */

    /* Locate and if necessary initialize the target table object */
................................................................................
    }

    sqlite3_free(zExpr);
  }

 diff_out:
  sessionPreupdateHooks(pSession);

  return rc;
}

/*
** Create a session object. This session object will record changes to
** database zDb attached to connection db.
*/







>







 







>







1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
....
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
  const char *zDb = pSession->zDb;
  int rc = pSession->rc;
  SessionDiffCtx d;

  memset(&d, 0, sizeof(d));
  sessionDiffHooks(pSession, &d);

  sqlite3_mutex_enter(sqlite3_db_mutex(pSession->db));
  if( pzErrMsg ) *pzErrMsg = 0;
  if( rc==SQLITE_OK ){
    char *zExpr = 0;
    sqlite3 *db = pSession->db;
    SessionTable *pTo;            /* Table zTbl */

    /* Locate and if necessary initialize the target table object */
................................................................................
    }

    sqlite3_free(zExpr);
  }

 diff_out:
  sessionPreupdateHooks(pSession);
  sqlite3_mutex_leave(sqlite3_db_mutex(pSession->db));
  return rc;
}

/*
** Create a session object. This session object will record changes to
** database zDb attached to connection db.
*/