// Code generated by modernc.org/undup from the per-target sqlite_*.go files; DO NOT EDIT. //go:build (darwin && amd64) || (darwin && arm64) || (freebsd && 386) || (freebsd && amd64) || (freebsd && arm) || (freebsd && arm64) package sqlite3 import ( "unsafe" "modernc.org/libc" ) const AT_RESOLVE_BENEATH = 8192 const ENOTSUP = 45 const IOCPARM_MAX = 8192 const MADV_FREE = 5 const MAP_RESERVED0080 = 128 const MINCORE_INCORE = 1 const MINCORE_MODIFIED = 4 const MINCORE_MODIFIED_OTHER = 16 const MINCORE_REFERENCED = 2 const MINCORE_REFERENCED_OTHER = 8 const NFDBITS = 0 const SF_NOUNLINK = 1048576 type T_RuneRange = struct { F__nranges int32 F__ranges uintptr } type Tdl_info = TDl_info const UF_HIDDEN = 32768 const UTIME_NOW = -1 const UTIME_OMIT = -2 const _CACHED_RUNES = 256 const _CRMASK = -256 const _CTYPE_A = 256 const _CTYPE_B = 131072 const _CTYPE_C = 512 const _CTYPE_D = 1024 const _CTYPE_G = 2048 const _CTYPE_I = 524288 const _CTYPE_L = 4096 const _CTYPE_P = 8192 const _CTYPE_Q = 2097152 const _CTYPE_R = 262144 const _CTYPE_S = 16384 const _CTYPE_SW0 = 536870912 const _CTYPE_SW1 = 1073741824 const _CTYPE_SW2 = 2147483648 const _CTYPE_SW3 = 3221225472 const _CTYPE_SWM = 3758096384 const _CTYPE_SWS = 30 const _CTYPE_T = 1048576 const _CTYPE_U = 32768 const _CTYPE_X = 65536 const _POSIX2_FORT_RUN = 200112 const _POSIX_MEMLOCK = -1 const _POSIX_THREAD_PROCESS_SHARED = 200112 type _RuneEntry = T_RuneEntry type _RuneRange = T_RuneRange const _SC_2_PBS = 59 const _SC_2_PBS_ACCOUNTING = 60 const _SC_2_PBS_CHECKPOINT = 61 const _SC_2_PBS_LOCATE = 62 const _SC_2_PBS_MESSAGE = 63 const _SC_2_PBS_TRACK = 64 const _SC_ADVISORY_INFO = 65 const _SC_ASYNCHRONOUS_IO = 28 const _SC_ATEXIT_MAX = 107 const _SC_BARRIERS = 66 const _SC_CLOCK_SELECTION = 67 const _SC_CPUTIME = 68 const _SC_DELAYTIMER_MAX = 45 const _SC_FILE_LOCKING = 69 const _SC_FSYNC = 38 const _SC_GETGR_R_SIZE_MAX = 70 const _SC_GETPW_R_SIZE_MAX = 71 const _SC_HOST_NAME_MAX = 72 const _SC_IOV_MAX = 56 const _SC_IPV6 = 118 const _SC_LOGIN_NAME_MAX = 73 const _SC_MEMLOCK = 30 const _SC_MEMLOCK_RANGE = 31 const _SC_MEMORY_PROTECTION = 32 const _SC_MESSAGE_PASSING = 33 const _SC_MONOTONIC_CLOCK = 74 const _SC_MQ_OPEN_MAX = 46 const _SC_MQ_PRIO_MAX = 75 const _SC_NPROCESSORS_CONF = 57 const _SC_NPROCESSORS_ONLN = 58 const _SC_PRIORITIZED_IO = 34 const _SC_PRIORITY_SCHEDULING = 35 const _SC_RAW_SOCKETS = 119 const _SC_READER_WRITER_LOCKS = 76 const _SC_REALTIME_SIGNALS = 36 const _SC_REGEXP = 77 const _SC_RTSIG_MAX = 48 const _SC_SEMAPHORES = 37 const _SC_SEM_NSEMS_MAX = 49 const _SC_SEM_VALUE_MAX = 50 const _SC_SHARED_MEMORY_OBJECTS = 39 const _SC_SHELL = 78 const _SC_SIGQUEUE_MAX = 51 const _SC_SPAWN = 79 const _SC_SPIN_LOCKS = 80 const _SC_SPORADIC_SERVER = 81 const _SC_SYMLOOP_MAX = 120 const _SC_SYNCHRONIZED_IO = 40 const _SC_THREADS = 96 const _SC_THREAD_ATTR_STACKADDR = 82 const _SC_THREAD_ATTR_STACKSIZE = 83 const _SC_THREAD_CPUTIME = 84 const _SC_THREAD_DESTRUCTOR_ITERATIONS = 85 const _SC_THREAD_KEYS_MAX = 86 const _SC_THREAD_PRIORITY_SCHEDULING = 89 const _SC_THREAD_PRIO_INHERIT = 87 const _SC_THREAD_PRIO_PROTECT = 88 const _SC_THREAD_PROCESS_SHARED = 90 const _SC_THREAD_SAFE_FUNCTIONS = 91 const _SC_THREAD_SPORADIC_SERVER = 92 const _SC_THREAD_STACK_MIN = 93 const _SC_THREAD_THREADS_MAX = 94 const _SC_TIMEOUTS = 95 const _SC_TIMERS = 41 const _SC_TIMER_MAX = 52 const _SC_TRACE = 97 const _SC_TRACE_EVENT_FILTER = 98 const _SC_TRACE_INHERIT = 99 const _SC_TRACE_LOG = 100 const _SC_TTY_NAME_MAX = 101 const _SC_TYPED_MEMORY_OBJECTS = 102 const _SC_V6_ILP32_OFF32 = 103 const _SC_V6_ILP32_OFFBIG = 104 const _SC_V6_LP64_OFF64 = 105 const _SC_V6_LPBIG_OFFBIG = 106 const _SC_XOPEN_CRYPT = 108 const _SC_XOPEN_ENH_I18N = 109 const _SC_XOPEN_LEGACY = 110 const _SC_XOPEN_REALTIME = 111 const _SC_XOPEN_REALTIME_THREADS = 112 const _SC_XOPEN_SHM = 113 const _SC_XOPEN_STREAMS = 114 const _SC_XOPEN_UNIX = 115 const _SC_XOPEN_VERSION = 116 const _V6_ILP32_OFF32 = -1 const __SIGN = 32768 var _aDateTimeFuncs = [10]TFuncDef{ 0: { FnArg: int16(-int32(1)), FfuncFlags: libc.Uint32FromInt32(libc.Int32FromInt32(SQLITE_FUNC_BUILTIN) | libc.Int32FromInt32(SQLITE_FUNC_SLOCHNG) | libc.Int32FromInt32(SQLITE_UTF8) | libc.Int32FromInt32(SQLITE_FUNC_CONSTANT)), FpUserData: uintptr(unsafe.Pointer(&_sqlite3Config)), FzName: __ccgo_ts + 1289, }, 1: { FnArg: int16(-int32(1)), FfuncFlags: libc.Uint32FromInt32(libc.Int32FromInt32(SQLITE_FUNC_BUILTIN) | libc.Int32FromInt32(SQLITE_FUNC_SLOCHNG) | libc.Int32FromInt32(SQLITE_UTF8) | libc.Int32FromInt32(SQLITE_FUNC_CONSTANT)), FpUserData: uintptr(unsafe.Pointer(&_sqlite3Config)), FzName: __ccgo_ts + 1309, }, 2: { FnArg: int16(-int32(1)), FfuncFlags: libc.Uint32FromInt32(libc.Int32FromInt32(SQLITE_FUNC_BUILTIN) | libc.Int32FromInt32(SQLITE_FUNC_SLOCHNG) | libc.Int32FromInt32(SQLITE_UTF8) | libc.Int32FromInt32(SQLITE_FUNC_CONSTANT)), FpUserData: uintptr(unsafe.Pointer(&_sqlite3Config)), FzName: __ccgo_ts + 1517, }, 3: { FnArg: int16(-int32(1)), FfuncFlags: libc.Uint32FromInt32(libc.Int32FromInt32(SQLITE_FUNC_BUILTIN) | libc.Int32FromInt32(SQLITE_FUNC_SLOCHNG) | libc.Int32FromInt32(SQLITE_UTF8) | libc.Int32FromInt32(SQLITE_FUNC_CONSTANT)), FpUserData: uintptr(unsafe.Pointer(&_sqlite3Config)), FzName: __ccgo_ts + 1522, }, 4: { FnArg: int16(-int32(1)), FfuncFlags: libc.Uint32FromInt32(libc.Int32FromInt32(SQLITE_FUNC_BUILTIN) | libc.Int32FromInt32(SQLITE_FUNC_SLOCHNG) | libc.Int32FromInt32(SQLITE_UTF8) | libc.Int32FromInt32(SQLITE_FUNC_CONSTANT)), FpUserData: uintptr(unsafe.Pointer(&_sqlite3Config)), FzName: __ccgo_ts + 1527, }, 5: { FnArg: int16(-int32(1)), FfuncFlags: libc.Uint32FromInt32(libc.Int32FromInt32(SQLITE_FUNC_BUILTIN) | libc.Int32FromInt32(SQLITE_FUNC_SLOCHNG) | libc.Int32FromInt32(SQLITE_UTF8) | libc.Int32FromInt32(SQLITE_FUNC_CONSTANT)), FpUserData: uintptr(unsafe.Pointer(&_sqlite3Config)), FzName: __ccgo_ts + 1536, }, 6: { FnArg: int16(2), FfuncFlags: libc.Uint32FromInt32(libc.Int32FromInt32(SQLITE_FUNC_BUILTIN) | libc.Int32FromInt32(SQLITE_FUNC_SLOCHNG) | libc.Int32FromInt32(SQLITE_UTF8) | libc.Int32FromInt32(SQLITE_FUNC_CONSTANT)), FpUserData: uintptr(unsafe.Pointer(&_sqlite3Config)), FzName: __ccgo_ts + 1545, }, 7: { FfuncFlags: libc.Uint32FromInt32(libc.Int32FromInt32(SQLITE_FUNC_BUILTIN) | libc.Int32FromInt32(SQLITE_FUNC_SLOCHNG) | libc.Int32FromInt32(SQLITE_UTF8)), FzName: __ccgo_ts + 1554, }, 8: { FfuncFlags: libc.Uint32FromInt32(libc.Int32FromInt32(SQLITE_FUNC_BUILTIN) | libc.Int32FromInt32(SQLITE_FUNC_SLOCHNG) | libc.Int32FromInt32(SQLITE_UTF8)), FzName: __ccgo_ts + 1567, }, 9: { FfuncFlags: libc.Uint32FromInt32(libc.Int32FromInt32(SQLITE_FUNC_BUILTIN) | libc.Int32FromInt32(SQLITE_FUNC_SLOCHNG) | libc.Int32FromInt32(SQLITE_UTF8)), FzName: __ccgo_ts + 1585, }, } // C documentation // // /* // ** Many system calls are accessed through pointer-to-functions so that // ** they may be overridden at runtime to facilitate fault injection during // ** testing and sandboxing. The following array holds the names and pointers // ** to all overrideable system calls. // */ var _aSyscall = [29]Tunix_syscall{ 0: { FzName: __ccgo_ts + 3540, }, 1: { FzName: __ccgo_ts + 3545, }, 2: { FzName: __ccgo_ts + 3551, }, 3: { FzName: __ccgo_ts + 3558, }, 4: { FzName: __ccgo_ts + 3565, }, 5: { FzName: __ccgo_ts + 3570, }, 6: { FzName: __ccgo_ts + 3576, }, 7: { FzName: __ccgo_ts + 3586, }, 8: { FzName: __ccgo_ts + 3592, }, 9: { FzName: __ccgo_ts + 3597, }, 10: { FzName: __ccgo_ts + 3603, }, 11: { FzName: __ccgo_ts + 3611, }, 12: { FzName: __ccgo_ts + 3617, }, 13: { FzName: __ccgo_ts + 3624, }, 14: { FzName: __ccgo_ts + 3633, }, 15: { FzName: __ccgo_ts + 3640, }, 16: { FzName: __ccgo_ts + 3650, }, 17: { FzName: __ccgo_ts + 3657, }, 18: { FzName: __ccgo_ts + 3671, }, 19: { FzName: __ccgo_ts + 3677, }, 20: { FzName: __ccgo_ts + 3683, }, 21: { FzName: __ccgo_ts + 3690, }, 22: { FzName: __ccgo_ts + 3698, }, 23: { FzName: __ccgo_ts + 3703, }, 24: { FzName: __ccgo_ts + 3710, }, 25: { FzName: __ccgo_ts + 3717, }, 26: { FzName: __ccgo_ts + 3729, }, 27: { FzName: __ccgo_ts + 3738, }, 28: { FzName: __ccgo_ts + 3744, }, } var _azName = [192]uintptr{ 0: __ccgo_ts + 1912, 1: __ccgo_ts + 1922, 2: __ccgo_ts + 1933, 3: __ccgo_ts + 1945, 4: __ccgo_ts + 1956, 5: __ccgo_ts + 1968, 6: __ccgo_ts + 1975, 7: __ccgo_ts + 1983, 8: __ccgo_ts + 1991, 9: __ccgo_ts + 1996, 10: __ccgo_ts + 2001, 11: __ccgo_ts + 2007, 12: __ccgo_ts + 2021, 13: __ccgo_ts + 2027, 14: __ccgo_ts + 2037, 15: __ccgo_ts + 2042, 16: __ccgo_ts + 2047, 17: __ccgo_ts + 2050, 18: __ccgo_ts + 2056, 19: __ccgo_ts + 2063, 20: __ccgo_ts + 2067, 21: __ccgo_ts + 2077, 22: __ccgo_ts + 2084, 23: __ccgo_ts + 2091, 24: __ccgo_ts + 2098, 25: __ccgo_ts + 2105, 26: __ccgo_ts + 2115, 27: __ccgo_ts + 2124, 28: __ccgo_ts + 2135, 29: __ccgo_ts + 2144, 30: __ccgo_ts + 2150, 31: __ccgo_ts + 2160, 32: __ccgo_ts + 2170, 33: __ccgo_ts + 2175, 34: __ccgo_ts + 2189, 35: __ccgo_ts + 2200, 36: __ccgo_ts + 2205, 37: __ccgo_ts + 2212, 38: __ccgo_ts + 2220, 39: __ccgo_ts + 2231, 40: __ccgo_ts + 2236, 41: __ccgo_ts + 2241, 42: __ccgo_ts + 2247, 43: __ccgo_ts + 2253, 44: __ccgo_ts + 2256, 45: __ccgo_ts + 2260, 46: __ccgo_ts + 2266, 47: __ccgo_ts + 2272, 48: __ccgo_ts + 2281, 49: __ccgo_ts + 2292, 50: __ccgo_ts + 2303, 51: __ccgo_ts + 2311, 52: __ccgo_ts + 2318, 53: __ccgo_ts + 2326, 54: __ccgo_ts + 2329, 55: __ccgo_ts + 2332, 56: __ccgo_ts + 2335, 57: __ccgo_ts + 2338, 58: __ccgo_ts + 2341, 59: __ccgo_ts + 2344, 60: __ccgo_ts + 2351, 61: __ccgo_ts + 2360, 62: __ccgo_ts + 2366, 63: __ccgo_ts + 2376, 64: __ccgo_ts + 2389, 65: __ccgo_ts + 2400, 66: __ccgo_ts + 2406, 67: __ccgo_ts + 2413, 68: __ccgo_ts + 2422, 69: __ccgo_ts + 2431, 70: __ccgo_ts + 2438, 71: __ccgo_ts + 2451, 72: __ccgo_ts + 2462, 73: __ccgo_ts + 2467, 74: __ccgo_ts + 2475, 75: __ccgo_ts + 2481, 76: __ccgo_ts + 2488, 77: __ccgo_ts + 2500, 78: __ccgo_ts + 2505, 79: __ccgo_ts + 2514, 80: __ccgo_ts + 2519, 81: __ccgo_ts + 2528, 82: __ccgo_ts + 2533, 83: __ccgo_ts + 2538, 84: __ccgo_ts + 2544, 85: __ccgo_ts + 2552, 86: __ccgo_ts + 2560, 87: __ccgo_ts + 2570, 88: __ccgo_ts + 2578, 89: __ccgo_ts + 2585, 90: __ccgo_ts + 2598, 91: __ccgo_ts + 2603, 92: __ccgo_ts + 2615, 93: __ccgo_ts + 2623, 94: __ccgo_ts + 2630, 95: __ccgo_ts + 2641, 96: __ccgo_ts + 2648, 97: __ccgo_ts + 2655, 98: __ccgo_ts + 2665, 99: __ccgo_ts + 2674, 100: __ccgo_ts + 2685, 101: __ccgo_ts + 2691, 102: __ccgo_ts + 2702, 103: __ccgo_ts + 2712, 104: __ccgo_ts + 2719, 105: __ccgo_ts + 2725, 106: __ccgo_ts + 2735, 107: __ccgo_ts + 2746, 108: __ccgo_ts + 2750, 109: __ccgo_ts + 2759, 110: __ccgo_ts + 2768, 111: __ccgo_ts + 2775, 112: __ccgo_ts + 2785, 113: __ccgo_ts + 2792, 114: __ccgo_ts + 2802, 115: __ccgo_ts + 2811, 116: __ccgo_ts + 2818, 117: __ccgo_ts + 2828, 118: __ccgo_ts + 2836, 119: __ccgo_ts + 2844, 120: __ccgo_ts + 2858, 121: __ccgo_ts + 2872, 122: __ccgo_ts + 2883, 123: __ccgo_ts + 2896, 124: __ccgo_ts + 2907, 125: __ccgo_ts + 2913, 126: __ccgo_ts + 2925, 127: __ccgo_ts + 2934, 128: __ccgo_ts + 2942, 129: __ccgo_ts + 2951, 130: __ccgo_ts + 2960, 131: __ccgo_ts + 2967, 132: __ccgo_ts + 2975, 133: __ccgo_ts + 2982, 134: __ccgo_ts + 2993, 135: __ccgo_ts + 3007, 136: __ccgo_ts + 3018, 137: __ccgo_ts + 3026, 138: __ccgo_ts + 3032, 139: __ccgo_ts + 3040, 140: __ccgo_ts + 3048, 141: __ccgo_ts + 3058, 142: __ccgo_ts + 3071, 143: __ccgo_ts + 3081, 144: __ccgo_ts + 3094, 145: __ccgo_ts + 3103, 146: __ccgo_ts + 3114, 147: __ccgo_ts + 3122, 148: __ccgo_ts + 3128, 149: __ccgo_ts + 3140, 150: __ccgo_ts + 3152, 151: __ccgo_ts + 3160, 152: __ccgo_ts + 3172, 153: __ccgo_ts + 3185, 154: __ccgo_ts + 3195, 155: __ccgo_ts + 3200, 156: __ccgo_ts + 3210, 157: __ccgo_ts + 3222, 158: __ccgo_ts + 3234, 159: __ccgo_ts + 3244, 160: __ccgo_ts + 3250, 161: __ccgo_ts + 3260, 162: __ccgo_ts + 3267, 163: __ccgo_ts + 3279, 164: __ccgo_ts + 3290, 165: __ccgo_ts + 3298, 166: __ccgo_ts + 3307, 167: __ccgo_ts + 3316, 168: __ccgo_ts + 3325, 169: __ccgo_ts + 3332, 170: __ccgo_ts + 3343, 171: __ccgo_ts + 3356, 172: __ccgo_ts + 3366, 173: __ccgo_ts + 3373, 174: __ccgo_ts + 3381, 175: __ccgo_ts + 3390, 176: __ccgo_ts + 3396, 177: __ccgo_ts + 3403, 178: __ccgo_ts + 3411, 179: __ccgo_ts + 3419, 180: __ccgo_ts + 3427, 181: __ccgo_ts + 3437, 182: __ccgo_ts + 3446, 183: __ccgo_ts + 3457, 184: __ccgo_ts + 3468, 185: __ccgo_ts + 3479, 186: __ccgo_ts + 3489, 187: __ccgo_ts + 3495, 188: __ccgo_ts + 3506, 189: __ccgo_ts + 3517, 190: __ccgo_ts + 3522, 191: __ccgo_ts + 3530, } var _azTypes = [5]uintptr{ 0: __ccgo_ts + 1172, 1: __ccgo_ts + 1184, 2: __ccgo_ts + 1189, 3: __ccgo_ts + 1167, 4: __ccgo_ts + 1703, } // C documentation // // /* // ** The CONCAT(...) function. Generate a string result that is the // ** concatentation of all non-null arguments. // */ func _concatFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) { _concatFuncCore(tls, context, argc, argv, 0, __ccgo_ts+1702) } // C documentation // // /* // ** Lock the file with the lock specified by parameter eFileLock - one // ** of the following: // ** // ** (1) SHARED_LOCK // ** (2) RESERVED_LOCK // ** (3) PENDING_LOCK // ** (4) EXCLUSIVE_LOCK // ** // ** Sometimes when requesting one lock state, additional lock states // ** are inserted in between. The locking might fail on one of the later // ** transitions leaving the lock state different from what it started but // ** still short of its goal. The following chart shows the allowed // ** transitions and the inserted intermediate states: // ** // ** UNLOCKED -> SHARED // ** SHARED -> RESERVED // ** SHARED -> (PENDING) -> EXCLUSIVE // ** RESERVED -> (PENDING) -> EXCLUSIVE // ** PENDING -> EXCLUSIVE // ** // ** This routine will only increase a lock. Use the sqlite3OsUnlock() // ** routine to lower a locking level. // ** // ** With dotfile locking, we really only support state (4): EXCLUSIVE. // ** But we track the other locking levels internally. // */ func _dotlockLock(tls *libc.TLS, id uintptr, eFileLock int32) (r int32) { var pFile, zLockFile uintptr var rc, tErrno int32 _, _, _, _ = pFile, rc, tErrno, zLockFile pFile = id zLockFile = (*TunixFile)(unsafe.Pointer(pFile)).FlockingContext rc = SQLITE_OK /* If we have any lock, then the lock file already exists. All we have ** to do is adjust our internal record of the lock level. */ if libc.Int32FromUint8((*TunixFile)(unsafe.Pointer(pFile)).FeFileLock) > NO_LOCK { (*TunixFile)(unsafe.Pointer(pFile)).FeFileLock = libc.Uint8FromInt32(eFileLock) /* Always update the timestamp on the old file */ libc.Xutimes(tls, zLockFile, libc.UintptrFromInt32(0)) return SQLITE_OK } /* grab an exclusive lock */ rc = (*(*func(*libc.TLS, uintptr, Tmode_t) int32)(unsafe.Pointer(&struct{ uintptr }{_aSyscall[int32(18)].FpCurrent})))(tls, zLockFile, uint16(0777)) if rc < 0 { /* failed to open/create the lock directory */ tErrno = **(**int32)(__ccgo_up(libc.X__error(tls))) if int32(EEXIST) == tErrno { rc = int32(SQLITE_BUSY) } else { rc = _sqliteErrorFromPosixError(tls, tErrno, libc.Int32FromInt32(SQLITE_IOERR)|libc.Int32FromInt32(15)<iBtPage) is completed. // ** // ** The doclist-index for that term is currently stored in-memory within the // ** Fts5SegWriter.aDlidx[] array. If it is large enough, this function // ** writes it out to disk. Or, if it is too small to bother with, discards // ** it. // ** // ** Fts5SegWriter.btterm currently contains the first term on page iBtPage. // */ func _fts5WriteFlushBtree(tls *libc.TLS, p uintptr, pWriter uintptr) { var bFlag int32 var z, v1 uintptr _, _, _ = bFlag, z, v1 if (*TFts5SegWriter)(unsafe.Pointer(pWriter)).FiBtPage == 0 { return } bFlag = _fts5WriteFlushDlidx(tls, p, pWriter) if (*TFts5Index)(unsafe.Pointer(p)).Frc == SQLITE_OK { if (*TFts5SegWriter)(unsafe.Pointer(pWriter)).Fbtterm.Fn > 0 { v1 = (*TFts5SegWriter)(unsafe.Pointer(pWriter)).Fbtterm.Fp } else { v1 = __ccgo_ts + 1702 } z = v1 /* The following was already done in fts5WriteInit(): */ /* sqlite3_bind_int(p->pIdxWriter, 1, pWriter->iSegid); */ Xsqlite3_bind_blob(tls, (*TFts5Index)(unsafe.Pointer(p)).FpIdxWriter, int32(2), z, (*TFts5SegWriter)(unsafe.Pointer(pWriter)).Fbtterm.Fn, libc.UintptrFromInt32(0)) Xsqlite3_bind_int64(tls, (*TFts5Index)(unsafe.Pointer(p)).FpIdxWriter, int32(3), int64(bFlag)+int64((*TFts5SegWriter)(unsafe.Pointer(pWriter)).FiBtPage)< 0 && (*TStrAccum)(unsafe.Pointer(pAccum)).FnChar == uint32(0) { Xsqlite3_result_text(tls, context, __ccgo_ts+1702, int32(1), libc.UintptrFromInt32(0)) } else { zText = Xsqlite3_str_value(tls, pAccum) Xsqlite3_result_text(tls, context, zText, libc.Int32FromUint32((*TStrAccum)(unsafe.Pointer(pAccum)).FnChar), uintptr(-libc.Int32FromInt32(1))) } } } } } // C documentation // // /* // ** Log an error that is an API call on a connection pointer that should // ** not have been used. The "type" of connection pointer is given as the // ** argument. The zType is a word like "NULL" or "closed" or "invalid". // */ func _logBadConnection(tls *libc.TLS, zType uintptr) { bp := tls.Alloc(16) defer tls.Free(16) Xsqlite3_log(tls, int32(SQLITE_MISUSE), __ccgo_ts+1850, libc.VaList(bp+8, zType)) } // C documentation // // /* // ** Attempt to parse the given string into a julian day number. Return // ** the number of errors. // ** // ** The following are acceptable forms for the input string: // ** // ** YYYY-MM-DD HH:MM:SS.FFF +/-HH:MM // ** DDDD.DD // ** now // ** // ** In the first form, the +/-HH:MM is always optional. The fractional // ** seconds extension (the ".FFF") is optional. The seconds portion // ** (":SS.FFF") is option. The year and date can be omitted as long // ** as there is a time string. The time string can be omitted as long // ** as there is a year and date. // */ func _parseDateOrTime(tls *libc.TLS, context uintptr, zDate uintptr, p uintptr) (r int32) { bp := tls.Alloc(16) defer tls.Free(16) var _ /* r at bp+0 */ float64 if _parseYyyyMmDd(tls, zDate, p) == 0 { return 0 } else { if _parseHhMmSs(tls, zDate, p) == 0 { return 0 } else { if _sqlite3StrICmp(tls, zDate, __ccgo_ts+1226) == 0 && _sqlite3NotPureFunc(tls, context) != 0 { return _setDateTimeToCurrent(tls, context, p) } else { if _sqlite3AtoF(tls, zDate, bp) > 0 { _setRawDateNumber(tls, p, **(**float64)(__ccgo_up(bp))) return 0 } else { if (_sqlite3StrICmp(tls, zDate, __ccgo_ts+1230) == 0 || _sqlite3StrICmp(tls, zDate, __ccgo_ts+1237) == 0) && _sqlite3NotPureFunc(tls, context) != 0 { libc.SetBitFieldPtr8Uint32(p+44, libc.Uint32FromInt32(1), 2, 0x4) return _setDateTimeToCurrent(tls, context, p) } } } } } return int32(1) } /* The julian day number for 9999-12-31 23:59:59.999 is 5373484.4999999. ** Multiplying this by 86400000 gives 464269060799999 as the maximum value ** for DateTime.iJD. ** ** But some older compilers (ex: gcc 4.2.1 on older Macs) cannot deal with ** such a large integer literal, so we have to encode it. */ // C documentation // // /* // ** Close a file descriptor. // ** // ** We assume that close() almost always works, since it is only in a // ** very sick application or on a very sick platform that it might fail. // ** If it does fail, simply leak the file descriptor, but do log the // ** error. // ** // ** Note that it is not safe to retry close() after EINTR since the // ** file descriptor might have already been reused by another thread. // ** So we don't even try to recover from an EINTR. Just log the error // ** and move on. // */ func _robust_close(tls *libc.TLS, pFile uintptr, h int32, lineno int32) { var v1 uintptr _ = v1 if (*(*func(*libc.TLS, int32) int32)(unsafe.Pointer(&struct{ uintptr }{_aSyscall[int32(1)].FpCurrent})))(tls, h) != 0 { if pFile != 0 { v1 = (*TunixFile)(unsafe.Pointer(pFile)).FzPath } else { v1 = uintptr(0) } _unixLogErrorAtLine(tls, libc.Int32FromInt32(SQLITE_IOERR)|libc.Int32FromInt32(16)< SHARED // ** SHARED -> RESERVED // ** SHARED -> EXCLUSIVE // ** RESERVED -> (PENDING) -> EXCLUSIVE // ** PENDING -> EXCLUSIVE // ** // ** This routine will only increase a lock. Use the sqlite3OsUnlock() // ** routine to lower a locking level. // */ func _unixLock(tls *libc.TLS, id uintptr, eFileLock int32) (r int32) { bp := tls.Alloc(32) defer tls.Free(32) var pFile, pInode uintptr var rc, tErrno, v1 int32 var _ /* lock at bp+0 */ Tflock _, _, _, _, _ = pFile, pInode, rc, tErrno, v1 /* The following describes the implementation of the various locks and ** lock transitions in terms of the POSIX advisory shared and exclusive ** lock primitives (called read-locks and write-locks below, to avoid ** confusion with SQLite lock names). The algorithms are complicated ** slightly in order to be compatible with Windows95 systems simultaneously ** accessing the same database file, in case that is ever required. ** ** Symbols defined in os.h identify the 'pending byte' and the 'reserved ** byte', each single bytes at well known offsets, and the 'shared byte ** range', a range of 510 bytes at a well known offset. ** ** To obtain a SHARED lock, a read-lock is obtained on the 'pending ** byte'. If this is successful, 'shared byte range' is read-locked ** and the lock on the 'pending byte' released. (Legacy note: When ** SQLite was first developed, Windows95 systems were still very common, ** and Windows95 lacks a shared-lock capability. So on Windows95, a ** single randomly selected by from the 'shared byte range' is locked. ** Windows95 is now pretty much extinct, but this work-around for the ** lack of shared-locks on Windows95 lives on, for backwards ** compatibility.) ** ** A process may only obtain a RESERVED lock after it has a SHARED lock. ** A RESERVED lock is implemented by grabbing a write-lock on the ** 'reserved byte'. ** ** An EXCLUSIVE lock may only be requested after either a SHARED or ** RESERVED lock is held. An EXCLUSIVE lock is implemented by obtaining ** a write-lock on the entire 'shared byte range'. Since all other locks ** require a read-lock on one of the bytes within this range, this ensures ** that no other locks are held on the database. ** ** If a process that holds a RESERVED lock requests an EXCLUSIVE, then ** a PENDING lock is obtained first. A PENDING lock is implemented by ** obtaining a write-lock on the 'pending byte'. This ensures that no new ** SHARED locks can be obtained, but existing SHARED locks are allowed to ** persist. If the call to this function fails to obtain the EXCLUSIVE ** lock in this case, it holds the PENDING lock instead. The client may ** then re-attempt the EXCLUSIVE lock later on, after existing SHARED ** locks have cleared. */ rc = SQLITE_OK pFile = id tErrno = 0 /* If there is already a lock of this type or more restrictive on the ** unixFile, do nothing. Don't use the end_lock: exit path, as ** unixEnterMutex() hasn't been called yet. */ if libc.Int32FromUint8((*TunixFile)(unsafe.Pointer(pFile)).FeFileLock) >= eFileLock { return SQLITE_OK } /* Make sure the locking sequence is correct. ** (1) We never move from unlocked to anything higher than shared lock. ** (2) SQLite never explicitly requests a pending lock. ** (3) A shared lock is always held when a reserve lock is requested. */ /* This mutex is needed because pFile->pInode is shared across threads */ pInode = (*TunixFile)(unsafe.Pointer(pFile)).FpInode Xsqlite3_mutex_enter(tls, (*TunixInodeInfo)(unsafe.Pointer(pInode)).FpLockMutex) /* If some thread using this PID has a lock via a different unixFile* ** handle that precludes the requested lock, return BUSY. */ if libc.Int32FromUint8((*TunixFile)(unsafe.Pointer(pFile)).FeFileLock) != libc.Int32FromUint8((*TunixInodeInfo)(unsafe.Pointer(pInode)).FeFileLock) && (libc.Int32FromUint8((*TunixInodeInfo)(unsafe.Pointer(pInode)).FeFileLock) >= int32(PENDING_LOCK) || eFileLock > int32(SHARED_LOCK)) { rc = int32(SQLITE_BUSY) goto end_lock } /* If a SHARED lock is requested, and some thread using this PID already ** has a SHARED or RESERVED lock, then increment reference counts and ** return SQLITE_OK. */ if eFileLock == int32(SHARED_LOCK) && (libc.Int32FromUint8((*TunixInodeInfo)(unsafe.Pointer(pInode)).FeFileLock) == int32(SHARED_LOCK) || libc.Int32FromUint8((*TunixInodeInfo)(unsafe.Pointer(pInode)).FeFileLock) == int32(RESERVED_LOCK)) { (*TunixFile)(unsafe.Pointer(pFile)).FeFileLock = uint8(SHARED_LOCK) (*TunixInodeInfo)(unsafe.Pointer(pInode)).FnShared = (*TunixInodeInfo)(unsafe.Pointer(pInode)).FnShared + 1 (*TunixInodeInfo)(unsafe.Pointer(pInode)).FnLock = (*TunixInodeInfo)(unsafe.Pointer(pInode)).FnLock + 1 goto end_lock } /* A PENDING lock is needed before acquiring a SHARED lock and before ** acquiring an EXCLUSIVE lock. For the SHARED lock, the PENDING will ** be released. */ (**(**Tflock)(__ccgo_up(bp))).Fl_len = int64(1) (**(**Tflock)(__ccgo_up(bp))).Fl_whence = SEEK_SET if eFileLock == int32(SHARED_LOCK) || eFileLock == int32(EXCLUSIVE_LOCK) && libc.Int32FromUint8((*TunixFile)(unsafe.Pointer(pFile)).FeFileLock) == int32(RESERVED_LOCK) { if eFileLock == int32(SHARED_LOCK) { v1 = int32(F_RDLCK) } else { v1 = int32(F_WRLCK) } (**(**Tflock)(__ccgo_up(bp))).Fl_type = int16(v1) (**(**Tflock)(__ccgo_up(bp))).Fl_start = int64(_sqlite3PendingByte) if _unixFileLock(tls, pFile, bp) != 0 { tErrno = **(**int32)(__ccgo_up(libc.X__error(tls))) rc = _sqliteErrorFromPosixError(tls, tErrno, libc.Int32FromInt32(SQLITE_IOERR)|libc.Int32FromInt32(15)< int32(1) { /* We are trying for an exclusive lock but another thread in this ** same process is still holding a shared lock. */ rc = int32(SQLITE_BUSY) } else { if _unixIsSharingShmNode(tls, pFile) != 0 { /* We are in WAL mode and attempting to delete the SHM and WAL ** files due to closing the connection or changing out of WAL mode, ** but another process still holds locks on the SHM file, thus ** indicating that database locks have been broken, perhaps due ** to a rogue close(open(dbFile)) or similar. */ rc = int32(SQLITE_BUSY) } else { /* The request was for a RESERVED or EXCLUSIVE lock. It is ** assumed that there is a SHARED or greater lock on the file ** already. */ (**(**Tflock)(__ccgo_up(bp))).Fl_type = int16(F_WRLCK) if eFileLock == int32(RESERVED_LOCK) { (**(**Tflock)(__ccgo_up(bp))).Fl_start = int64(_sqlite3PendingByte + libc.Int32FromInt32(1)) (**(**Tflock)(__ccgo_up(bp))).Fl_len = int64(1) } else { (**(**Tflock)(__ccgo_up(bp))).Fl_start = int64(_sqlite3PendingByte + libc.Int32FromInt32(2)) (**(**Tflock)(__ccgo_up(bp))).Fl_len = int64(SHARED_SIZE) } if _unixFileLock(tls, pFile, bp) != 0 { tErrno = **(**int32)(__ccgo_up(libc.X__error(tls))) rc = _sqliteErrorFromPosixError(tls, tErrno, libc.Int32FromInt32(SQLITE_IOERR)|libc.Int32FromInt32(15)< 0 { nByte = (nByte + int64((*TunixFile)(unsafe.Pointer(pFile)).FszChunk) - int64(1)) / int64((*TunixFile)(unsafe.Pointer(pFile)).FszChunk) * int64((*TunixFile)(unsafe.Pointer(pFile)).FszChunk) } rc = _robust_ftruncate(tls, (*TunixFile)(unsafe.Pointer(pFile)).Fh, nByte) if rc != 0 { _storeLastErrno(tls, pFile, **(**int32)(__ccgo_up(libc.X__error(tls)))) return _unixLogErrorAtLine(tls, libc.Int32FromInt32(SQLITE_IOERR)|libc.Int32FromInt32(6)<" (eCond==0) or "FOLLOWING " (eCond==1) or the // ** value of the second argument to nth_value() (eCond==2) has just been // ** evaluated and the result left in register reg. This function generates VM // ** code to check that the value is a non-negative integer and throws an // ** exception if it is not. // */ func _windowCheckValue(tls *libc.TLS, pParse uintptr, reg int32, eCond int32) { var regString, regZero int32 var v uintptr _, _, _ = regString, regZero, v v = _sqlite3GetVdbe(tls, pParse) regZero = _sqlite3GetTempReg(tls, pParse) _sqlite3VdbeAddOp2(tls, v, int32(OP_Integer), 0, regZero) if eCond >= int32(WINDOW_STARTING_NUM) { regString = _sqlite3GetTempReg(tls, pParse) _sqlite3VdbeAddOp4(tls, v, int32(OP_String8), 0, regString, 0, __ccgo_ts+1702, -int32(1)) _sqlite3VdbeAddOp3(tls, v, int32(OP_Ge), regString, _sqlite3VdbeCurrentAddr(tls, v)+int32(2), reg) _sqlite3VdbeChangeP5(tls, v, libc.Uint16FromInt32(libc.Int32FromInt32(SQLITE_AFF_NUMERIC)|libc.Int32FromInt32(SQLITE_JUMPIFNULL))) } else { _sqlite3VdbeAddOp2(tls, v, int32(OP_MustBeInt), reg, _sqlite3VdbeCurrentAddr(tls, v)+int32(2)) } _sqlite3VdbeAddOp3(tls, v, _aOp1[eCond], regZero, _sqlite3VdbeCurrentAddr(tls, v)+int32(2), reg) _sqlite3VdbeChangeP5(tls, v, uint16(SQLITE_AFF_NUMERIC)) /* NULL case captured by */ /* the OP_MustBeInt */ /* NULL case caught by */ /* the OP_Ge */ _sqlite3MayAbort(tls, pParse) _sqlite3VdbeAddOp2(tls, v, int32(OP_Halt), int32(SQLITE_ERROR), int32(OE_Abort)) _sqlite3VdbeAppendP4(tls, v, _azErr[eCond], -int32(1)) _sqlite3ReleaseTempReg(tls, pParse, regZero) } type in_addr_t = Tin_addr_t type in_port_t = Tin_port_t type vm_offset_t = Tvm_offset_t type vm_size_t = Tvm_size_t