mirror of
https://github.com/ncruces/go-sqlite3.git
synced 2026-01-12 05:59:14 +00:00
122 lines
5.2 KiB
Go
122 lines
5.2 KiB
Go
package sqlite3vfs
|
|
|
|
// OpenFlag is a flag for the [VFS.Open] method.
|
|
//
|
|
// https://www.sqlite.org/c3ref/c_open_autoproxy.html
|
|
type OpenFlag uint32
|
|
|
|
const (
|
|
OPEN_READONLY OpenFlag = 0x00000001 /* Ok for sqlite3_open_v2() */
|
|
OPEN_READWRITE OpenFlag = 0x00000002 /* Ok for sqlite3_open_v2() */
|
|
OPEN_CREATE OpenFlag = 0x00000004 /* Ok for sqlite3_open_v2() */
|
|
OPEN_DELETEONCLOSE OpenFlag = 0x00000008 /* VFS only */
|
|
OPEN_EXCLUSIVE OpenFlag = 0x00000010 /* VFS only */
|
|
OPEN_AUTOPROXY OpenFlag = 0x00000020 /* VFS only */
|
|
OPEN_URI OpenFlag = 0x00000040 /* Ok for sqlite3_open_v2() */
|
|
OPEN_MEMORY OpenFlag = 0x00000080 /* Ok for sqlite3_open_v2() */
|
|
OPEN_MAIN_DB OpenFlag = 0x00000100 /* VFS only */
|
|
OPEN_TEMP_DB OpenFlag = 0x00000200 /* VFS only */
|
|
OPEN_TRANSIENT_DB OpenFlag = 0x00000400 /* VFS only */
|
|
OPEN_MAIN_JOURNAL OpenFlag = 0x00000800 /* VFS only */
|
|
OPEN_TEMP_JOURNAL OpenFlag = 0x00001000 /* VFS only */
|
|
OPEN_SUBJOURNAL OpenFlag = 0x00002000 /* VFS only */
|
|
OPEN_SUPER_JOURNAL OpenFlag = 0x00004000 /* VFS only */
|
|
OPEN_NOMUTEX OpenFlag = 0x00008000 /* Ok for sqlite3_open_v2() */
|
|
OPEN_FULLMUTEX OpenFlag = 0x00010000 /* Ok for sqlite3_open_v2() */
|
|
OPEN_SHAREDCACHE OpenFlag = 0x00020000 /* Ok for sqlite3_open_v2() */
|
|
OPEN_PRIVATECACHE OpenFlag = 0x00040000 /* Ok for sqlite3_open_v2() */
|
|
OPEN_WAL OpenFlag = 0x00080000 /* VFS only */
|
|
OPEN_NOFOLLOW OpenFlag = 0x01000000 /* Ok for sqlite3_open_v2() */
|
|
)
|
|
|
|
// AccessFlag is a flag for the [VFS.Access] method.
|
|
//
|
|
// https://www.sqlite.org/c3ref/c_access_exists.html
|
|
type AccessFlag uint32
|
|
|
|
const (
|
|
ACCESS_EXISTS AccessFlag = 0
|
|
ACCESS_READWRITE AccessFlag = 1 /* Used by PRAGMA temp_store_directory */
|
|
ACCESS_READ AccessFlag = 2 /* Unused */
|
|
)
|
|
|
|
// SyncFlag is a flag for the [File.Sync] method.
|
|
//
|
|
// https://www.sqlite.org/c3ref/c_sync_dataonly.html
|
|
type SyncFlag uint32
|
|
|
|
const (
|
|
SYNC_NORMAL SyncFlag = 0x00002
|
|
SYNC_FULL SyncFlag = 0x00003
|
|
SYNC_DATAONLY SyncFlag = 0x00010
|
|
)
|
|
|
|
// LockLevel is a value used with [File.Lock] and [File.Unlock] methods.
|
|
//
|
|
// https://www.sqlite.org/c3ref/c_lock_exclusive.html
|
|
type LockLevel uint32
|
|
|
|
const (
|
|
// No locks are held on the database.
|
|
// The database may be neither read nor written.
|
|
// Any internally cached data is considered suspect and subject to
|
|
// verification against the database file before being used.
|
|
// Other processes can read or write the database as their own locking
|
|
// states permit.
|
|
// This is the default state.
|
|
LOCK_NONE LockLevel = 0 /* xUnlock() only */
|
|
|
|
// The database may be read but not written.
|
|
// Any number of processes can hold SHARED locks at the same time,
|
|
// hence there can be many simultaneous readers.
|
|
// But no other thread or process is allowed to write to the database file
|
|
// while one or more SHARED locks are active.
|
|
LOCK_SHARED LockLevel = 1 /* xLock() or xUnlock() */
|
|
|
|
// A RESERVED lock means that the process is planning on writing to the
|
|
// database file at some point in the future but that it is currently just
|
|
// reading from the file.
|
|
// Only a single RESERVED lock may be active at one time,
|
|
// though multiple SHARED locks can coexist with a single RESERVED lock.
|
|
// RESERVED differs from PENDING in that new SHARED locks can be acquired
|
|
// while there is a RESERVED lock.
|
|
LOCK_RESERVED LockLevel = 2 /* xLock() only */
|
|
|
|
// A PENDING lock means that the process holding the lock wants to write to
|
|
// the database as soon as possible and is just waiting on all current
|
|
// SHARED locks to clear so that it can get an EXCLUSIVE lock.
|
|
// No new SHARED locks are permitted against the database if a PENDING lock
|
|
// is active, though existing SHARED locks are allowed to continue.
|
|
LOCK_PENDING LockLevel = 3 /* internal use only */
|
|
|
|
// An EXCLUSIVE lock is needed in order to write to the database file.
|
|
// Only one EXCLUSIVE lock is allowed on the file and no other locks of any
|
|
// kind are allowed to coexist with an EXCLUSIVE lock.
|
|
// In order to maximize concurrency, SQLite works to minimize the amount of
|
|
// time that EXCLUSIVE locks are held.
|
|
LOCK_EXCLUSIVE LockLevel = 4 /* xLock() only */
|
|
)
|
|
|
|
// DeviceCharacteristic is a flag retuned by the [File.DeviceCharacteristic] method.
|
|
//
|
|
// https://www.sqlite.org/c3ref/c_iocap_atomic.html
|
|
type DeviceCharacteristic uint32
|
|
|
|
const (
|
|
IOCAP_ATOMIC DeviceCharacteristic = 0x00000001
|
|
IOCAP_ATOMIC512 DeviceCharacteristic = 0x00000002
|
|
IOCAP_ATOMIC1K DeviceCharacteristic = 0x00000004
|
|
IOCAP_ATOMIC2K DeviceCharacteristic = 0x00000008
|
|
IOCAP_ATOMIC4K DeviceCharacteristic = 0x00000010
|
|
IOCAP_ATOMIC8K DeviceCharacteristic = 0x00000020
|
|
IOCAP_ATOMIC16K DeviceCharacteristic = 0x00000040
|
|
IOCAP_ATOMIC32K DeviceCharacteristic = 0x00000080
|
|
IOCAP_ATOMIC64K DeviceCharacteristic = 0x00000100
|
|
IOCAP_SAFE_APPEND DeviceCharacteristic = 0x00000200
|
|
IOCAP_SEQUENTIAL DeviceCharacteristic = 0x00000400
|
|
IOCAP_UNDELETABLE_WHEN_OPEN DeviceCharacteristic = 0x00000800
|
|
IOCAP_POWERSAFE_OVERWRITE DeviceCharacteristic = 0x00001000
|
|
IOCAP_IMMUTABLE DeviceCharacteristic = 0x00002000
|
|
IOCAP_BATCH_ATOMIC DeviceCharacteristic = 0x00004000
|
|
)
|