@@ -117,10 +117,11 @@
117 117 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
118 118 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Arrange for the given file to be deleted on a failure.
119 119 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
120 120 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void db_delete_on_failure(const char *zFilename){
121 121 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
assert( db.nDeleteOnFail<count(db.azDeleteOnFail) );
122 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( zFilename==0 ) return;
122 123 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db.azDeleteOnFail[db.nDeleteOnFail++] = fossil_strdup(zFilename);
123 124 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
124 125 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
125 126 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
126 127 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Return the transaction nesting depth. 0 means we are currently
@@ -799,10 +800,13 @@
799 800 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
800 801 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
801 802 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
802 803 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Initialize a new database file with the given schema. If anything
803 804 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** goes wrong, call db_err() to exit.
805 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
806 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** If zFilename is NULL, then create an empty repository in an in-memory
807 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** database.
804 808 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
805 809 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void db_init_database(
806 810 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zFileName, /* Name of database file to create */
807 811 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zSchema, /* First part of schema */
808 812 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
... /* Additional SQL to run. Terminate with NULL. */
@@ -810,11 +814,11 @@
810 814 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3 *db;
811 815 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int rc;
812 816 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zSql;
813 817 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
va_list ap;
814 818 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
815 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- db = db_open(zFileName);
819 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db = db_open(zFileName ? zFileName : ":memory:");
816 820 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_exec(db, "BEGIN EXCLUSIVE", 0, 0, 0);
817 821 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rc = sqlite3_exec(db, zSchema, 0, 0, 0);
818 822 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( rc!=SQLITE_OK ){
819 823 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_err("%s", sqlite3_errmsg(db));
820 824 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -825,11 +829,15 @@
825 829 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_err("%s", sqlite3_errmsg(db));
826 830 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
827 831 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
828 832 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
va_end(ap);
829 833 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
sqlite3_exec(db, "COMMIT", 0, 0, 0);
830 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- sqlite3_close(db);
834 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( zFileName || g.db!=0 ){
835 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sqlite3_close(db);
836 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
837 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ g.db = db;
838 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
831 839 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
832 840 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
833 841 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
834 842 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Function to return the number of seconds since 1970. This is
835 843 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the same as strftime('%s','now') but is more compact.
@@ -1768,12 +1776,13 @@
1768 1776 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1769 1777 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
1770 1778 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Flags for the db_find_and_open_repository() function.
1771 1779 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
1772 1780 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#if INTERFACE
1773 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OPEN_OK_NOT_FOUND 0x001 /* Do not error out if not found */
1774 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define OPEN_ANY_SCHEMA 0x002 /* Do not error if schema is wrong */
1781 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OPEN_OK_NOT_FOUND 0x001 /* Do not error out if not found */
1782 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OPEN_ANY_SCHEMA 0x002 /* Do not error if schema is wrong */
1783 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define OPEN_SUBSTITUTE 0x004 /* Fake in-memory repo if not found */
1775 1784 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
1776 1785 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1777 1786 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
1778 1787 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Try to find the repository and open it. Use the -R or --repository
1779 1788 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** option to locate the repository. If no such option is available, then
@@ -1802,11 +1811,16 @@
1802 1811 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( g.repositoryOpen ){
1803 1812 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (bFlags & OPEN_ANY_SCHEMA)==0 ) db_verify_schema();
1804 1813 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return;
1805 1814 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1806 1815 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rep_not_found:
1807 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( (bFlags & OPEN_OK_NOT_FOUND)==0 ){
1816 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( bFlags & OPEN_OK_NOT_FOUND ){
1817 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* No errors if the database is not found */
1818 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( bFlags & OPEN_SUBSTITUTE ){
1819 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_create_repository(0);
1820 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1821 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
1808 1822 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef FOSSIL_ENABLE_JSON
1809 1823 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
g.json.resultCode = FSL_JSON_E_DB_NOT_FOUND;
1810 1824 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
1811 1825 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( nArgUsed==0 ){
1812 1826 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fossil_fatal("use --repository or -R to specify the repository database");
1813 1827 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!