typenative 0.1.3 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.gitattributes +1 -0
- package/.github/workflows/ci.yml +39 -2
- package/.github/workflows/npm-publish-github-packages.yml +7 -2
- package/CHANGELOG.md +293 -0
- package/CONTRIBUTION.md +8 -6
- package/README.md +15 -11
- package/bin/cli.js +7 -1
- package/bin/go/bridge.js +919 -0
- package/bin/go/convert.js +238 -0
- package/bin/go/metadata.js +211 -0
- package/bin/go/overrides.js +68 -0
- package/bin/go/stdlib.generated.js +175 -0
- package/bin/index.js +337 -239
- package/bin/main.js +9 -2
- package/bin/node/assert.js +344 -0
- package/bin/node/async_hooks.js +273 -0
- package/bin/node/buffer.js +765 -0
- package/bin/node/child_process.js +600 -0
- package/bin/node/cluster.js +1002 -0
- package/bin/node/console.js +121 -0
- package/bin/node/core.js +111 -0
- package/bin/node/crypto.js +414 -0
- package/bin/node/crypto_keys.js +2685 -0
- package/bin/node/dgram.js +388 -0
- package/bin/node/diagnostics_channel.js +534 -0
- package/bin/node/dns.js +635 -0
- package/bin/node/events.js +743 -0
- package/bin/node/fetch.js +737 -0
- package/bin/node/fs.js +998 -0
- package/bin/node/http.js +1500 -0
- package/bin/node/http2.js +688 -0
- package/bin/node/net.js +1143 -0
- package/bin/node/os.js +257 -0
- package/bin/node/path.js +758 -0
- package/bin/node/process.js +316 -0
- package/bin/node/punycode.js +195 -0
- package/bin/node/querystring.js +143 -0
- package/bin/node/readline.js +299 -0
- package/bin/node/registry.js +161 -0
- package/bin/node/sqlite.js +1142 -0
- package/bin/node/stream.js +1221 -0
- package/bin/node/stream_web.js +2259 -0
- package/bin/node/string_decoder.js +101 -0
- package/bin/node/system_extra.js +714 -0
- package/bin/node/test.js +1068 -0
- package/bin/node/timers.js +263 -0
- package/bin/node/tls.js +719 -0
- package/bin/node/url.js +861 -0
- package/bin/node/util.js +1311 -0
- package/bin/node/util_extra.js +599 -0
- package/bin/node/worker_threads.js +745 -0
- package/bin/node/zlib.js +263 -0
- package/bin/parse-native.js +10 -0
- package/bin/parse-node.js +10 -0
- package/bin/transpiler.js +2824 -588
- package/bin/typecheck-node.js +78 -0
- package/bin/version.js +2 -0
- package/conformance.md +708 -241
- package/govendor/github.com/ncruces/go-sqlite3/LICENSE +21 -0
- package/govendor/github.com/ncruces/go-sqlite3/README.md +121 -0
- package/govendor/github.com/ncruces/go-sqlite3/backup.go +132 -0
- package/govendor/github.com/ncruces/go-sqlite3/blob.go +266 -0
- package/govendor/github.com/ncruces/go-sqlite3/config.go +397 -0
- package/govendor/github.com/ncruces/go-sqlite3/conn.go +540 -0
- package/govendor/github.com/ncruces/go-sqlite3/conn_127.go +93 -0
- package/govendor/github.com/ncruces/go-sqlite3/const.go +436 -0
- package/govendor/github.com/ncruces/go-sqlite3/context.go +222 -0
- package/govendor/github.com/ncruces/go-sqlite3/error.go +182 -0
- package/govendor/github.com/ncruces/go-sqlite3/ext.go +153 -0
- package/govendor/github.com/ncruces/go-sqlite3/func.go +309 -0
- package/govendor/github.com/ncruces/go-sqlite3/go.mod +3 -0
- package/govendor/github.com/ncruces/go-sqlite3/internal/dotlk/dotlk.go +29 -0
- package/govendor/github.com/ncruces/go-sqlite3/internal/dotlk/dotlk_other.go +13 -0
- package/govendor/github.com/ncruces/go-sqlite3/internal/dotlk/dotlk_unix.go +57 -0
- package/govendor/github.com/ncruces/go-sqlite3/internal/errutil/error.go +41 -0
- package/govendor/github.com/ncruces/go-sqlite3/internal/sqlite3_wrap/alloc.go +128 -0
- package/govendor/github.com/ncruces/go-sqlite3/internal/sqlite3_wrap/const.go +122 -0
- package/govendor/github.com/ncruces/go-sqlite3/internal/sqlite3_wrap/error.go +77 -0
- package/govendor/github.com/ncruces/go-sqlite3/internal/sqlite3_wrap/mem.go +116 -0
- package/govendor/github.com/ncruces/go-sqlite3/internal/sqlite3_wrap/mem_other.go +34 -0
- package/govendor/github.com/ncruces/go-sqlite3/internal/sqlite3_wrap/mem_unix.go +87 -0
- package/govendor/github.com/ncruces/go-sqlite3/internal/sqlite3_wrap/mem_windows.go +149 -0
- package/govendor/github.com/ncruces/go-sqlite3/internal/sqlite3_wrap/mmap_unix.go +80 -0
- package/govendor/github.com/ncruces/go-sqlite3/internal/sqlite3_wrap/mmap_windows.go +129 -0
- package/govendor/github.com/ncruces/go-sqlite3/internal/sqlite3_wrap/sys_windows.go +60 -0
- package/govendor/github.com/ncruces/go-sqlite3/internal/sqlite3_wrap/wrap.go +82 -0
- package/govendor/github.com/ncruces/go-sqlite3/internal/sqlite3_wrap/wrap_sys.go +113 -0
- package/govendor/github.com/ncruces/go-sqlite3/internal/sqlite3_wrap/wrap_vfs.go +181 -0
- package/govendor/github.com/ncruces/go-sqlite3/internal/testenv/env.go +55 -0
- package/govendor/github.com/ncruces/go-sqlite3/internal/util/json.go +54 -0
- package/govendor/github.com/ncruces/go-sqlite3/internal/util/json_v2.go +54 -0
- package/govendor/github.com/ncruces/go-sqlite3/internal/util/math.go +29 -0
- package/govendor/github.com/ncruces/go-sqlite3/internal/util/page.go +5 -0
- package/govendor/github.com/ncruces/go-sqlite3/internal/util/parse.go +142 -0
- package/govendor/github.com/ncruces/go-sqlite3/internal/util/pointer.go +3 -0
- package/govendor/github.com/ncruces/go-sqlite3/internal/util/reflect.go +10 -0
- package/govendor/github.com/ncruces/go-sqlite3/json.go +100 -0
- package/govendor/github.com/ncruces/go-sqlite3/json_v2.go +116 -0
- package/govendor/github.com/ncruces/go-sqlite3/pointer.go +13 -0
- package/govendor/github.com/ncruces/go-sqlite3/quote.go +140 -0
- package/govendor/github.com/ncruces/go-sqlite3/stmt.go +692 -0
- package/govendor/github.com/ncruces/go-sqlite3/time.go +360 -0
- package/govendor/github.com/ncruces/go-sqlite3/txn.go +374 -0
- package/govendor/github.com/ncruces/go-sqlite3/value.go +212 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/README.md +133 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/api.go +239 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/cksm.go +143 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/const.go +256 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/file.go +260 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/filename.go +187 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/lock.go +128 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/lock_other.go +23 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/map.go +63 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/map_other.go +13 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/os_bsd.go +110 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/os_darwin.go +131 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/os_dotlk.go +140 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/os_f2fs_linux.go +56 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/os_linux.go +117 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/os_ofd.go +59 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/os_std.go +50 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/os_std_alloc.go +19 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/os_std_atomic.go +9 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/os_std_rw.go +13 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/os_std_sync.go +9 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/os_std_temp.go +16 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/os_unix.go +108 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/os_windows.go +180 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/registry.go +48 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/shm.go +26 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/shm_bsd.go +258 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/shm_copy.go +90 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/shm_dotlk.go +168 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/shm_memlk.go +52 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/shm_ofd.go +185 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/shm_other.go +21 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/shm_windows.go +124 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/vfs.go +455 -0
- package/govendor/github.com/ncruces/go-sqlite3/vtab.go +677 -0
- package/govendor/github.com/ncruces/go-sqlite3/wrap.go +48 -0
- package/govendor/github.com/ncruces/go-sqlite3-wasm/v6/LICENSE +18 -0
- package/govendor/github.com/ncruces/go-sqlite3-wasm/v6/README.md +11 -0
- package/govendor/github.com/ncruces/go-sqlite3-wasm/v6/go.mod +3 -0
- package/govendor/github.com/ncruces/go-sqlite3-wasm/v6/libc.go +215 -0
- package/govendor/github.com/ncruces/go-sqlite3-wasm/v6/sqlite3.dat +0 -0
- package/govendor/github.com/ncruces/go-sqlite3-wasm/v6/sqlite3.go +157903 -0
- package/govendor/github.com/ncruces/go-sqlite3-wasm/v6/tools.sh +38 -0
- package/govendor/github.com/ncruces/julianday/LICENSE +21 -0
- package/govendor/github.com/ncruces/julianday/README.md +9 -0
- package/govendor/github.com/ncruces/julianday/go.mod +3 -0
- package/govendor/github.com/ncruces/julianday/julianday.go +124 -0
- package/govendor/golang.org/x/sys/LICENSE +27 -0
- package/govendor/golang.org/x/sys/PATENTS +22 -0
- package/govendor/golang.org/x/sys/go.mod +3 -0
- package/govendor/golang.org/x/sys/unix/README.md +184 -0
- package/govendor/golang.org/x/sys/unix/affinity_linux.go +189 -0
- package/govendor/golang.org/x/sys/unix/aliases.go +13 -0
- package/govendor/golang.org/x/sys/unix/asm_aix_ppc64.s +17 -0
- package/govendor/golang.org/x/sys/unix/asm_bsd_386.s +27 -0
- package/govendor/golang.org/x/sys/unix/asm_bsd_amd64.s +27 -0
- package/govendor/golang.org/x/sys/unix/asm_bsd_arm.s +27 -0
- package/govendor/golang.org/x/sys/unix/asm_bsd_arm64.s +27 -0
- package/govendor/golang.org/x/sys/unix/asm_bsd_ppc64.s +29 -0
- package/govendor/golang.org/x/sys/unix/asm_bsd_riscv64.s +27 -0
- package/govendor/golang.org/x/sys/unix/asm_linux_386.s +65 -0
- package/govendor/golang.org/x/sys/unix/asm_linux_amd64.s +57 -0
- package/govendor/golang.org/x/sys/unix/asm_linux_arm.s +56 -0
- package/govendor/golang.org/x/sys/unix/asm_linux_arm64.s +50 -0
- package/govendor/golang.org/x/sys/unix/asm_linux_loong64.s +51 -0
- package/govendor/golang.org/x/sys/unix/asm_linux_mips64x.s +54 -0
- package/govendor/golang.org/x/sys/unix/asm_linux_mipsx.s +52 -0
- package/govendor/golang.org/x/sys/unix/asm_linux_ppc64x.s +42 -0
- package/govendor/golang.org/x/sys/unix/asm_linux_riscv64.s +47 -0
- package/govendor/golang.org/x/sys/unix/asm_linux_s390x.s +54 -0
- package/govendor/golang.org/x/sys/unix/asm_openbsd_mips64.s +29 -0
- package/govendor/golang.org/x/sys/unix/asm_solaris_amd64.s +17 -0
- package/govendor/golang.org/x/sys/unix/asm_zos_s390x.s +382 -0
- package/govendor/golang.org/x/sys/unix/auxv.go +36 -0
- package/govendor/golang.org/x/sys/unix/auxv_unsupported.go +13 -0
- package/govendor/golang.org/x/sys/unix/bluetooth_linux.go +36 -0
- package/govendor/golang.org/x/sys/unix/bpxsvc_zos.go +657 -0
- package/govendor/golang.org/x/sys/unix/bpxsvc_zos.s +192 -0
- package/govendor/golang.org/x/sys/unix/cap_freebsd.go +195 -0
- package/govendor/golang.org/x/sys/unix/constants.go +13 -0
- package/govendor/golang.org/x/sys/unix/dev_aix_ppc.go +26 -0
- package/govendor/golang.org/x/sys/unix/dev_aix_ppc64.go +28 -0
- package/govendor/golang.org/x/sys/unix/dev_darwin.go +24 -0
- package/govendor/golang.org/x/sys/unix/dev_dragonfly.go +30 -0
- package/govendor/golang.org/x/sys/unix/dev_freebsd.go +30 -0
- package/govendor/golang.org/x/sys/unix/dev_linux.go +42 -0
- package/govendor/golang.org/x/sys/unix/dev_netbsd.go +29 -0
- package/govendor/golang.org/x/sys/unix/dev_openbsd.go +29 -0
- package/govendor/golang.org/x/sys/unix/dev_zos.go +28 -0
- package/govendor/golang.org/x/sys/unix/dirent.go +102 -0
- package/govendor/golang.org/x/sys/unix/endian_big.go +9 -0
- package/govendor/golang.org/x/sys/unix/endian_little.go +9 -0
- package/govendor/golang.org/x/sys/unix/env_unix.go +31 -0
- package/govendor/golang.org/x/sys/unix/fcntl.go +36 -0
- package/govendor/golang.org/x/sys/unix/fcntl_darwin.go +24 -0
- package/govendor/golang.org/x/sys/unix/fcntl_linux_32bit.go +13 -0
- package/govendor/golang.org/x/sys/unix/fdset.go +27 -0
- package/govendor/golang.org/x/sys/unix/gccgo.go +59 -0
- package/govendor/golang.org/x/sys/unix/gccgo_c.c +44 -0
- package/govendor/golang.org/x/sys/unix/gccgo_linux_amd64.go +20 -0
- package/govendor/golang.org/x/sys/unix/ifreq_linux.go +145 -0
- package/govendor/golang.org/x/sys/unix/ioctl_linux.go +341 -0
- package/govendor/golang.org/x/sys/unix/ioctl_signed.go +74 -0
- package/govendor/golang.org/x/sys/unix/ioctl_unsigned.go +74 -0
- package/govendor/golang.org/x/sys/unix/ioctl_zos.go +71 -0
- package/govendor/golang.org/x/sys/unix/mkall.sh +250 -0
- package/govendor/golang.org/x/sys/unix/mkerrors.sh +807 -0
- package/govendor/golang.org/x/sys/unix/mmap_nomremap.go +13 -0
- package/govendor/golang.org/x/sys/unix/mremap.go +57 -0
- package/govendor/golang.org/x/sys/unix/pagesize_unix.go +15 -0
- package/govendor/golang.org/x/sys/unix/pledge_openbsd.go +111 -0
- package/govendor/golang.org/x/sys/unix/ptrace_darwin.go +11 -0
- package/govendor/golang.org/x/sys/unix/ptrace_ios.go +11 -0
- package/govendor/golang.org/x/sys/unix/race.go +30 -0
- package/govendor/golang.org/x/sys/unix/race0.go +25 -0
- package/govendor/golang.org/x/sys/unix/readdirent_getdents.go +12 -0
- package/govendor/golang.org/x/sys/unix/readdirent_getdirentries.go +19 -0
- package/govendor/golang.org/x/sys/unix/readv_unix.go +103 -0
- package/govendor/golang.org/x/sys/unix/sockcmsg_dragonfly.go +16 -0
- package/govendor/golang.org/x/sys/unix/sockcmsg_linux.go +85 -0
- package/govendor/golang.org/x/sys/unix/sockcmsg_unix.go +106 -0
- package/govendor/golang.org/x/sys/unix/sockcmsg_unix_other.go +46 -0
- package/govendor/golang.org/x/sys/unix/sockcmsg_zos.go +58 -0
- package/govendor/golang.org/x/sys/unix/symaddr_zos_s390x.s +75 -0
- package/govendor/golang.org/x/sys/unix/syscall.go +86 -0
- package/govendor/golang.org/x/sys/unix/syscall_aix.go +582 -0
- package/govendor/golang.org/x/sys/unix/syscall_aix_ppc.go +52 -0
- package/govendor/golang.org/x/sys/unix/syscall_aix_ppc64.go +83 -0
- package/govendor/golang.org/x/sys/unix/syscall_bsd.go +609 -0
- package/govendor/golang.org/x/sys/unix/syscall_darwin.go +711 -0
- package/govendor/golang.org/x/sys/unix/syscall_darwin_amd64.go +50 -0
- package/govendor/golang.org/x/sys/unix/syscall_darwin_arm64.go +50 -0
- package/govendor/golang.org/x/sys/unix/syscall_darwin_libSystem.go +26 -0
- package/govendor/golang.org/x/sys/unix/syscall_dragonfly.go +359 -0
- package/govendor/golang.org/x/sys/unix/syscall_dragonfly_amd64.go +56 -0
- package/govendor/golang.org/x/sys/unix/syscall_freebsd.go +455 -0
- package/govendor/golang.org/x/sys/unix/syscall_freebsd_386.go +64 -0
- package/govendor/golang.org/x/sys/unix/syscall_freebsd_amd64.go +64 -0
- package/govendor/golang.org/x/sys/unix/syscall_freebsd_arm.go +60 -0
- package/govendor/golang.org/x/sys/unix/syscall_freebsd_arm64.go +60 -0
- package/govendor/golang.org/x/sys/unix/syscall_freebsd_riscv64.go +60 -0
- package/govendor/golang.org/x/sys/unix/syscall_hurd.go +30 -0
- package/govendor/golang.org/x/sys/unix/syscall_hurd_386.go +28 -0
- package/govendor/golang.org/x/sys/unix/syscall_illumos.go +78 -0
- package/govendor/golang.org/x/sys/unix/syscall_linux.go +2574 -0
- package/govendor/golang.org/x/sys/unix/syscall_linux_386.go +313 -0
- package/govendor/golang.org/x/sys/unix/syscall_linux_alarm.go +12 -0
- package/govendor/golang.org/x/sys/unix/syscall_linux_amd64.go +144 -0
- package/govendor/golang.org/x/sys/unix/syscall_linux_amd64_gc.go +12 -0
- package/govendor/golang.org/x/sys/unix/syscall_linux_arm.go +218 -0
- package/govendor/golang.org/x/sys/unix/syscall_linux_arm64.go +188 -0
- package/govendor/golang.org/x/sys/unix/syscall_linux_gc.go +14 -0
- package/govendor/golang.org/x/sys/unix/syscall_linux_gc_386.go +16 -0
- package/govendor/golang.org/x/sys/unix/syscall_linux_gc_arm.go +13 -0
- package/govendor/golang.org/x/sys/unix/syscall_linux_gccgo_386.go +30 -0
- package/govendor/golang.org/x/sys/unix/syscall_linux_gccgo_arm.go +20 -0
- package/govendor/golang.org/x/sys/unix/syscall_linux_loong64.go +220 -0
- package/govendor/golang.org/x/sys/unix/syscall_linux_mips64x.go +187 -0
- package/govendor/golang.org/x/sys/unix/syscall_linux_mipsx.go +173 -0
- package/govendor/golang.org/x/sys/unix/syscall_linux_ppc.go +203 -0
- package/govendor/golang.org/x/sys/unix/syscall_linux_ppc64x.go +114 -0
- package/govendor/golang.org/x/sys/unix/syscall_linux_riscv64.go +193 -0
- package/govendor/golang.org/x/sys/unix/syscall_linux_s390x.go +295 -0
- package/govendor/golang.org/x/sys/unix/syscall_linux_sparc64.go +111 -0
- package/govendor/golang.org/x/sys/unix/syscall_netbsd.go +388 -0
- package/govendor/golang.org/x/sys/unix/syscall_netbsd_386.go +37 -0
- package/govendor/golang.org/x/sys/unix/syscall_netbsd_amd64.go +37 -0
- package/govendor/golang.org/x/sys/unix/syscall_netbsd_arm.go +37 -0
- package/govendor/golang.org/x/sys/unix/syscall_netbsd_arm64.go +37 -0
- package/govendor/golang.org/x/sys/unix/syscall_openbsd.go +346 -0
- package/govendor/golang.org/x/sys/unix/syscall_openbsd_386.go +41 -0
- package/govendor/golang.org/x/sys/unix/syscall_openbsd_amd64.go +41 -0
- package/govendor/golang.org/x/sys/unix/syscall_openbsd_arm.go +41 -0
- package/govendor/golang.org/x/sys/unix/syscall_openbsd_arm64.go +41 -0
- package/govendor/golang.org/x/sys/unix/syscall_openbsd_libc.go +26 -0
- package/govendor/golang.org/x/sys/unix/syscall_openbsd_mips64.go +39 -0
- package/govendor/golang.org/x/sys/unix/syscall_openbsd_ppc64.go +41 -0
- package/govendor/golang.org/x/sys/unix/syscall_openbsd_riscv64.go +41 -0
- package/govendor/golang.org/x/sys/unix/syscall_solaris.go +1183 -0
- package/govendor/golang.org/x/sys/unix/syscall_solaris_amd64.go +27 -0
- package/govendor/golang.org/x/sys/unix/syscall_unix.go +619 -0
- package/govendor/golang.org/x/sys/unix/syscall_unix_gc.go +14 -0
- package/govendor/golang.org/x/sys/unix/syscall_unix_gc_ppc64x.go +22 -0
- package/govendor/golang.org/x/sys/unix/syscall_zos_s390x.go +3213 -0
- package/govendor/golang.org/x/sys/unix/sysvshm_linux.go +20 -0
- package/govendor/golang.org/x/sys/unix/sysvshm_unix.go +51 -0
- package/govendor/golang.org/x/sys/unix/sysvshm_unix_other.go +13 -0
- package/govendor/golang.org/x/sys/unix/timestruct.go +76 -0
- package/govendor/golang.org/x/sys/unix/unveil_openbsd.go +51 -0
- package/govendor/golang.org/x/sys/unix/vgetrandom_linux.go +13 -0
- package/govendor/golang.org/x/sys/unix/vgetrandom_unsupported.go +11 -0
- package/govendor/golang.org/x/sys/unix/xattr_bsd.go +280 -0
- package/govendor/golang.org/x/sys/unix/zerrors_aix_ppc.go +1384 -0
- package/govendor/golang.org/x/sys/unix/zerrors_aix_ppc64.go +1385 -0
- package/govendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go +1922 -0
- package/govendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go +1922 -0
- package/govendor/golang.org/x/sys/unix/zerrors_dragonfly_amd64.go +1737 -0
- package/govendor/golang.org/x/sys/unix/zerrors_freebsd_386.go +2042 -0
- package/govendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go +2039 -0
- package/govendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go +2033 -0
- package/govendor/golang.org/x/sys/unix/zerrors_freebsd_arm64.go +2033 -0
- package/govendor/golang.org/x/sys/unix/zerrors_freebsd_riscv64.go +2147 -0
- package/govendor/golang.org/x/sys/unix/zerrors_linux.go +4209 -0
- package/govendor/golang.org/x/sys/unix/zerrors_linux_386.go +882 -0
- package/govendor/golang.org/x/sys/unix/zerrors_linux_amd64.go +882 -0
- package/govendor/golang.org/x/sys/unix/zerrors_linux_arm.go +887 -0
- package/govendor/golang.org/x/sys/unix/zerrors_linux_arm64.go +884 -0
- package/govendor/golang.org/x/sys/unix/zerrors_linux_loong64.go +874 -0
- package/govendor/golang.org/x/sys/unix/zerrors_linux_mips.go +888 -0
- package/govendor/golang.org/x/sys/unix/zerrors_linux_mips64.go +888 -0
- package/govendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go +888 -0
- package/govendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go +888 -0
- package/govendor/golang.org/x/sys/unix/zerrors_linux_ppc.go +940 -0
- package/govendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go +944 -0
- package/govendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go +944 -0
- package/govendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go +884 -0
- package/govendor/golang.org/x/sys/unix/zerrors_linux_s390x.go +943 -0
- package/govendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go +992 -0
- package/govendor/golang.org/x/sys/unix/zerrors_netbsd_386.go +1779 -0
- package/govendor/golang.org/x/sys/unix/zerrors_netbsd_amd64.go +1769 -0
- package/govendor/golang.org/x/sys/unix/zerrors_netbsd_arm.go +1758 -0
- package/govendor/golang.org/x/sys/unix/zerrors_netbsd_arm64.go +1769 -0
- package/govendor/golang.org/x/sys/unix/zerrors_openbsd_386.go +1905 -0
- package/govendor/golang.org/x/sys/unix/zerrors_openbsd_amd64.go +1905 -0
- package/govendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go +1905 -0
- package/govendor/golang.org/x/sys/unix/zerrors_openbsd_arm64.go +1905 -0
- package/govendor/golang.org/x/sys/unix/zerrors_openbsd_mips64.go +1905 -0
- package/govendor/golang.org/x/sys/unix/zerrors_openbsd_ppc64.go +1904 -0
- package/govendor/golang.org/x/sys/unix/zerrors_openbsd_riscv64.go +1903 -0
- package/govendor/golang.org/x/sys/unix/zerrors_solaris_amd64.go +1556 -0
- package/govendor/golang.org/x/sys/unix/zerrors_zos_s390x.go +990 -0
- package/govendor/golang.org/x/sys/unix/zptrace_armnn_linux.go +40 -0
- package/govendor/golang.org/x/sys/unix/zptrace_linux_arm64.go +17 -0
- package/govendor/golang.org/x/sys/unix/zptrace_mipsnn_linux.go +49 -0
- package/govendor/golang.org/x/sys/unix/zptrace_mipsnnle_linux.go +49 -0
- package/govendor/golang.org/x/sys/unix/zptrace_x86_linux.go +79 -0
- package/govendor/golang.org/x/sys/unix/zsymaddr_zos_s390x.s +364 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_aix_ppc.go +1461 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_aix_ppc64.go +1420 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gc.go +1188 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gccgo.go +1069 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go +2728 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s +799 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go +2728 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s +799 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go +1666 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go +1886 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go +1886 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go +1886 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_freebsd_arm64.go +1886 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_freebsd_riscv64.go +1886 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_illumos_amd64.go +101 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_linux.go +2267 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_linux_386.go +469 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go +636 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_linux_arm.go +584 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go +535 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_linux_loong64.go +469 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_linux_mips.go +636 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go +630 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go +619 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go +636 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_linux_ppc.go +641 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go +687 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go +687 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_linux_riscv64.go +531 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go +478 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_linux_sparc64.go +631 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go +1848 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go +1848 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go +1848 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_netbsd_arm64.go +1848 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go +2407 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_openbsd_386.s +719 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go +2407 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.s +719 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go +2407 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.s +719 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.go +2407 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.s +719 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.go +2407 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.s +719 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_openbsd_ppc64.go +2407 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_openbsd_ppc64.s +862 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_openbsd_riscv64.go +2407 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_openbsd_riscv64.s +719 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go +2217 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_zos_s390x.go +3458 -0
- package/govendor/golang.org/x/sys/unix/zsysctl_openbsd_386.go +280 -0
- package/govendor/golang.org/x/sys/unix/zsysctl_openbsd_amd64.go +280 -0
- package/govendor/golang.org/x/sys/unix/zsysctl_openbsd_arm.go +280 -0
- package/govendor/golang.org/x/sys/unix/zsysctl_openbsd_arm64.go +280 -0
- package/govendor/golang.org/x/sys/unix/zsysctl_openbsd_mips64.go +280 -0
- package/govendor/golang.org/x/sys/unix/zsysctl_openbsd_ppc64.go +280 -0
- package/govendor/golang.org/x/sys/unix/zsysctl_openbsd_riscv64.go +281 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_darwin_amd64.go +439 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_darwin_arm64.go +437 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_dragonfly_amd64.go +316 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_freebsd_386.go +393 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_freebsd_amd64.go +393 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_freebsd_arm.go +393 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_freebsd_arm64.go +393 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_freebsd_riscv64.go +393 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_linux_386.go +470 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go +394 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_linux_arm.go +434 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go +337 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_linux_loong64.go +334 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_linux_mips.go +454 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go +384 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go +384 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go +454 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_linux_ppc.go +461 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go +433 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go +433 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go +338 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go +399 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go +413 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_netbsd_386.go +274 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_netbsd_amd64.go +274 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_netbsd_arm.go +274 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_netbsd_arm64.go +274 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_openbsd_386.go +219 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_openbsd_amd64.go +219 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_openbsd_arm.go +219 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_openbsd_arm64.go +218 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_openbsd_mips64.go +221 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_openbsd_ppc64.go +217 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_openbsd_riscv64.go +218 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_zos_s390x.go +2852 -0
- package/govendor/golang.org/x/sys/unix/ztypes_aix_ppc.go +353 -0
- package/govendor/golang.org/x/sys/unix/ztypes_aix_ppc64.go +357 -0
- package/govendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go +878 -0
- package/govendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go +878 -0
- package/govendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go +473 -0
- package/govendor/golang.org/x/sys/unix/ztypes_freebsd_386.go +651 -0
- package/govendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go +656 -0
- package/govendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go +642 -0
- package/govendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go +636 -0
- package/govendor/golang.org/x/sys/unix/ztypes_freebsd_riscv64.go +638 -0
- package/govendor/golang.org/x/sys/unix/ztypes_linux.go +6547 -0
- package/govendor/golang.org/x/sys/unix/ztypes_linux_386.go +747 -0
- package/govendor/golang.org/x/sys/unix/ztypes_linux_amd64.go +761 -0
- package/govendor/golang.org/x/sys/unix/ztypes_linux_arm.go +741 -0
- package/govendor/golang.org/x/sys/unix/ztypes_linux_arm64.go +740 -0
- package/govendor/golang.org/x/sys/unix/ztypes_linux_loong64.go +741 -0
- package/govendor/golang.org/x/sys/unix/ztypes_linux_mips.go +746 -0
- package/govendor/golang.org/x/sys/unix/ztypes_linux_mips64.go +743 -0
- package/govendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go +743 -0
- package/govendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go +746 -0
- package/govendor/golang.org/x/sys/unix/ztypes_linux_ppc.go +754 -0
- package/govendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go +749 -0
- package/govendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go +749 -0
- package/govendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go +828 -0
- package/govendor/golang.org/x/sys/unix/ztypes_linux_s390x.go +763 -0
- package/govendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go +744 -0
- package/govendor/golang.org/x/sys/unix/ztypes_netbsd_386.go +585 -0
- package/govendor/golang.org/x/sys/unix/ztypes_netbsd_amd64.go +593 -0
- package/govendor/golang.org/x/sys/unix/ztypes_netbsd_arm.go +590 -0
- package/govendor/golang.org/x/sys/unix/ztypes_netbsd_arm64.go +593 -0
- package/govendor/golang.org/x/sys/unix/ztypes_openbsd_386.go +568 -0
- package/govendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go +568 -0
- package/govendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go +575 -0
- package/govendor/golang.org/x/sys/unix/ztypes_openbsd_arm64.go +568 -0
- package/govendor/golang.org/x/sys/unix/ztypes_openbsd_mips64.go +568 -0
- package/govendor/golang.org/x/sys/unix/ztypes_openbsd_ppc64.go +570 -0
- package/govendor/golang.org/x/sys/unix/ztypes_openbsd_riscv64.go +570 -0
- package/govendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go +516 -0
- package/govendor/golang.org/x/sys/unix/ztypes_zos_s390x.go +552 -0
- package/govendor/golang.org/x/sys/windows/aliases.go +13 -0
- package/govendor/golang.org/x/sys/windows/dll_windows.go +380 -0
- package/govendor/golang.org/x/sys/windows/env_windows.go +57 -0
- package/govendor/golang.org/x/sys/windows/eventlog.go +20 -0
- package/govendor/golang.org/x/sys/windows/exec_windows.go +248 -0
- package/govendor/golang.org/x/sys/windows/memory_windows.go +48 -0
- package/govendor/golang.org/x/sys/windows/mkerrors.bash +70 -0
- package/govendor/golang.org/x/sys/windows/mkknownfolderids.bash +27 -0
- package/govendor/golang.org/x/sys/windows/mksyscall.go +9 -0
- package/govendor/golang.org/x/sys/windows/race.go +30 -0
- package/govendor/golang.org/x/sys/windows/race0.go +25 -0
- package/govendor/golang.org/x/sys/windows/security_windows.go +1537 -0
- package/govendor/golang.org/x/sys/windows/service.go +257 -0
- package/govendor/golang.org/x/sys/windows/setupapi_windows.go +1425 -0
- package/govendor/golang.org/x/sys/windows/str.go +22 -0
- package/govendor/golang.org/x/sys/windows/syscall.go +104 -0
- package/govendor/golang.org/x/sys/windows/syscall_windows.go +1952 -0
- package/govendor/golang.org/x/sys/windows/types_windows.go +4058 -0
- package/govendor/golang.org/x/sys/windows/types_windows_386.go +35 -0
- package/govendor/golang.org/x/sys/windows/types_windows_amd64.go +34 -0
- package/govendor/golang.org/x/sys/windows/types_windows_arm.go +35 -0
- package/govendor/golang.org/x/sys/windows/types_windows_arm64.go +34 -0
- package/govendor/golang.org/x/sys/windows/zerrors_windows.go +9468 -0
- package/govendor/golang.org/x/sys/windows/zknownfolderids_windows.go +149 -0
- package/govendor/golang.org/x/sys/windows/zsyscall_windows.go +4828 -0
- package/govendor/manifest.txt +7 -0
- package/package.json +7 -1
- package/tsparser/check.go +157 -0
- package/tsparser/main.go +30 -1
- package/types/typenative-go.d.ts +15159 -5
- package/types/typenative-npm.d.ts +2640 -34
- package/types/typenative.d.ts +651 -8
|
@@ -0,0 +1,692 @@
|
|
|
1
|
+
package sqlite3
|
|
2
|
+
|
|
3
|
+
import (
|
|
4
|
+
"time"
|
|
5
|
+
|
|
6
|
+
"github.com/ncruces/go-sqlite3/internal/errutil"
|
|
7
|
+
)
|
|
8
|
+
|
|
9
|
+
// Stmt is a prepared statement object.
|
|
10
|
+
//
|
|
11
|
+
// https://sqlite.org/c3ref/stmt.html
|
|
12
|
+
type Stmt struct {
|
|
13
|
+
c *Conn
|
|
14
|
+
err error
|
|
15
|
+
sql string
|
|
16
|
+
handle ptr_t
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
// Close destroys the prepared statement object.
|
|
20
|
+
//
|
|
21
|
+
// It is safe to close a nil, zero or closed Stmt.
|
|
22
|
+
//
|
|
23
|
+
// https://sqlite.org/c3ref/finalize.html
|
|
24
|
+
func (s *Stmt) Close() error {
|
|
25
|
+
if s == nil || s.handle == 0 {
|
|
26
|
+
return nil
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
rc := res_t(s.c.wrp.Xsqlite3_finalize(int32(s.handle)))
|
|
30
|
+
stmts := s.c.stmts
|
|
31
|
+
for i := range stmts {
|
|
32
|
+
if s == stmts[i] {
|
|
33
|
+
l := len(stmts) - 1
|
|
34
|
+
stmts[i] = stmts[l]
|
|
35
|
+
stmts[l] = nil
|
|
36
|
+
s.c.stmts = stmts[:l]
|
|
37
|
+
break
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
s.handle = 0
|
|
42
|
+
return s.c.error(rc)
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
// Conn returns the database connection to which the prepared statement belongs.
|
|
46
|
+
//
|
|
47
|
+
// https://sqlite.org/c3ref/db_handle.html
|
|
48
|
+
func (s *Stmt) Conn() *Conn {
|
|
49
|
+
return s.c
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
// SQL returns the SQL text used to create the prepared statement.
|
|
53
|
+
//
|
|
54
|
+
// https://sqlite.org/c3ref/expanded_sql.html
|
|
55
|
+
func (s *Stmt) SQL() string {
|
|
56
|
+
return s.sql
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
// ExpandedSQL returns the SQL text of the prepared statement
|
|
60
|
+
// with bound parameters expanded.
|
|
61
|
+
//
|
|
62
|
+
// https://sqlite.org/c3ref/expanded_sql.html
|
|
63
|
+
func (s *Stmt) ExpandedSQL() string {
|
|
64
|
+
ptr := ptr_t(s.c.wrp.Xsqlite3_expanded_sql(int32(s.handle)))
|
|
65
|
+
sql := s.c.wrp.ReadString(ptr, _MAX_SQL_LENGTH)
|
|
66
|
+
s.c.wrp.Free(ptr)
|
|
67
|
+
return sql
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
// ReadOnly returns true if and only if the statement
|
|
71
|
+
// makes no direct changes to the content of the database file.
|
|
72
|
+
//
|
|
73
|
+
// https://sqlite.org/c3ref/stmt_readonly.html
|
|
74
|
+
func (s *Stmt) ReadOnly() bool {
|
|
75
|
+
b := s.c.wrp.Xsqlite3_stmt_readonly(int32(s.handle))
|
|
76
|
+
return b != 0
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
// Reset resets the prepared statement object.
|
|
80
|
+
//
|
|
81
|
+
// https://sqlite.org/c3ref/reset.html
|
|
82
|
+
func (s *Stmt) Reset() error {
|
|
83
|
+
rc := res_t(s.c.wrp.Xsqlite3_reset(int32(s.handle)))
|
|
84
|
+
s.err = nil
|
|
85
|
+
return s.c.error(rc)
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
// Busy determines if a prepared statement has been reset.
|
|
89
|
+
//
|
|
90
|
+
// https://sqlite.org/c3ref/stmt_busy.html
|
|
91
|
+
func (s *Stmt) Busy() bool {
|
|
92
|
+
rc := res_t(s.c.wrp.Xsqlite3_stmt_busy(int32(s.handle)))
|
|
93
|
+
return rc != 0
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
// Step evaluates the SQL statement.
|
|
97
|
+
// If the SQL statement being executed returns any data,
|
|
98
|
+
// then true is returned each time a new row of data is ready for processing by the caller.
|
|
99
|
+
// The values may be accessed using the Column access functions.
|
|
100
|
+
// Step is called again to retrieve the next row of data.
|
|
101
|
+
// If an error has occurred, Step returns false;
|
|
102
|
+
// call [Stmt.Err] or [Stmt.Reset] to get the error.
|
|
103
|
+
//
|
|
104
|
+
// https://sqlite.org/c3ref/step.html
|
|
105
|
+
func (s *Stmt) Step() bool {
|
|
106
|
+
if s.c.interrupt.Err() != nil {
|
|
107
|
+
s.err = INTERRUPT
|
|
108
|
+
return false
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
rc := res_t(s.c.wrp.Xsqlite3_step(int32(s.handle)))
|
|
112
|
+
switch rc {
|
|
113
|
+
case _ROW:
|
|
114
|
+
s.err = nil
|
|
115
|
+
return true
|
|
116
|
+
case _DONE:
|
|
117
|
+
s.err = nil
|
|
118
|
+
default:
|
|
119
|
+
s.err = s.c.error(rc)
|
|
120
|
+
}
|
|
121
|
+
return false
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
// Err gets the last error occurred during [Stmt.Step].
|
|
125
|
+
// Err returns nil after [Stmt.Reset] is called.
|
|
126
|
+
//
|
|
127
|
+
// https://sqlite.org/c3ref/step.html
|
|
128
|
+
func (s *Stmt) Err() error {
|
|
129
|
+
return s.err
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
// Exec is a convenience function that repeatedly calls [Stmt.Step] until it returns false,
|
|
133
|
+
// then calls [Stmt.Reset] to reset the statement and get any error that occurred.
|
|
134
|
+
func (s *Stmt) Exec() error {
|
|
135
|
+
if s.c.interrupt.Err() != nil {
|
|
136
|
+
return INTERRUPT
|
|
137
|
+
}
|
|
138
|
+
rc := res_t(s.c.wrp.Xsqlite3_exec_go(int32(s.handle)))
|
|
139
|
+
s.err = nil
|
|
140
|
+
return s.c.error(rc)
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
// Status monitors the performance characteristics of prepared statements.
|
|
144
|
+
//
|
|
145
|
+
// https://sqlite.org/c3ref/stmt_status.html
|
|
146
|
+
func (s *Stmt) Status(op StmtStatus, reset bool) int {
|
|
147
|
+
if op > STMTSTATUS_FILTER_HIT && op != STMTSTATUS_MEMUSED {
|
|
148
|
+
return 0
|
|
149
|
+
}
|
|
150
|
+
var i int32
|
|
151
|
+
if reset {
|
|
152
|
+
i = 1
|
|
153
|
+
}
|
|
154
|
+
return int(s.c.wrp.Xsqlite3_stmt_status(int32(s.handle), int32(op), i))
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
// ClearBindings resets all bindings on the prepared statement.
|
|
158
|
+
//
|
|
159
|
+
// https://sqlite.org/c3ref/clear_bindings.html
|
|
160
|
+
func (s *Stmt) ClearBindings() error {
|
|
161
|
+
rc := res_t(s.c.wrp.Xsqlite3_clear_bindings(int32(s.handle)))
|
|
162
|
+
return s.c.error(rc)
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
// BindCount returns the number of SQL parameters in the prepared statement.
|
|
166
|
+
//
|
|
167
|
+
// https://sqlite.org/c3ref/bind_parameter_count.html
|
|
168
|
+
func (s *Stmt) BindCount() int {
|
|
169
|
+
return int(s.c.wrp.Xsqlite3_bind_parameter_count(int32(s.handle)))
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
// BindIndex returns the index of a parameter in the prepared statement
|
|
173
|
+
// given its name.
|
|
174
|
+
//
|
|
175
|
+
// https://sqlite.org/c3ref/bind_parameter_index.html
|
|
176
|
+
func (s *Stmt) BindIndex(name string) int {
|
|
177
|
+
defer s.c.arena.Mark()()
|
|
178
|
+
namePtr := s.c.arena.String(name)
|
|
179
|
+
return int(s.c.wrp.Xsqlite3_bind_parameter_index(int32(s.handle), int32(namePtr)))
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
// BindName returns the name of a parameter in the prepared statement.
|
|
183
|
+
// The leftmost SQL parameter has an index of 1.
|
|
184
|
+
//
|
|
185
|
+
// https://sqlite.org/c3ref/bind_parameter_name.html
|
|
186
|
+
func (s *Stmt) BindName(param int) string {
|
|
187
|
+
ptr := ptr_t(s.c.wrp.Xsqlite3_bind_parameter_name(
|
|
188
|
+
int32(s.handle), int32(param)))
|
|
189
|
+
if ptr == 0 {
|
|
190
|
+
return ""
|
|
191
|
+
}
|
|
192
|
+
return s.c.wrp.ReadString(ptr, _MAX_NAME)
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
// BindBool binds a bool to the prepared statement.
|
|
196
|
+
// The leftmost SQL parameter has an index of 1.
|
|
197
|
+
// SQLite does not have a separate boolean storage class.
|
|
198
|
+
// Instead, boolean values are stored as integers 0 (false) and 1 (true).
|
|
199
|
+
//
|
|
200
|
+
// https://sqlite.org/c3ref/bind_blob.html
|
|
201
|
+
func (s *Stmt) BindBool(param int, value bool) error {
|
|
202
|
+
var i int64
|
|
203
|
+
if value {
|
|
204
|
+
i = 1
|
|
205
|
+
}
|
|
206
|
+
return s.BindInt64(param, i)
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
// BindInt binds an int to the prepared statement.
|
|
210
|
+
// The leftmost SQL parameter has an index of 1.
|
|
211
|
+
//
|
|
212
|
+
// https://sqlite.org/c3ref/bind_blob.html
|
|
213
|
+
func (s *Stmt) BindInt(param int, value int) error {
|
|
214
|
+
return s.BindInt64(param, int64(value))
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
// BindInt64 binds an int64 to the prepared statement.
|
|
218
|
+
// The leftmost SQL parameter has an index of 1.
|
|
219
|
+
//
|
|
220
|
+
// https://sqlite.org/c3ref/bind_blob.html
|
|
221
|
+
func (s *Stmt) BindInt64(param int, value int64) error {
|
|
222
|
+
rc := res_t(s.c.wrp.Xsqlite3_bind_int64(
|
|
223
|
+
int32(s.handle), int32(param), value))
|
|
224
|
+
return s.c.error(rc)
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
// BindFloat binds a float64 to the prepared statement.
|
|
228
|
+
// The leftmost SQL parameter has an index of 1.
|
|
229
|
+
//
|
|
230
|
+
// https://sqlite.org/c3ref/bind_blob.html
|
|
231
|
+
func (s *Stmt) BindFloat(param int, value float64) error {
|
|
232
|
+
rc := res_t(s.c.wrp.Xsqlite3_bind_double(
|
|
233
|
+
int32(s.handle), int32(param), value))
|
|
234
|
+
return s.c.error(rc)
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
// BindText binds a string to the prepared statement.
|
|
238
|
+
// The leftmost SQL parameter has an index of 1.
|
|
239
|
+
//
|
|
240
|
+
// https://sqlite.org/c3ref/bind_blob.html
|
|
241
|
+
func (s *Stmt) BindText(param int, value string) error {
|
|
242
|
+
if len(value) > _MAX_LENGTH {
|
|
243
|
+
return TOOBIG
|
|
244
|
+
}
|
|
245
|
+
ptr := s.c.wrp.NewString(value)
|
|
246
|
+
rc := res_t(s.c.wrp.Xsqlite3_bind_text_go(
|
|
247
|
+
int32(s.handle), int32(param),
|
|
248
|
+
int32(ptr), int64(len(value))))
|
|
249
|
+
return s.c.error(rc)
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
// BindRawText binds a []byte to the prepared statement as text.
|
|
253
|
+
// The leftmost SQL parameter has an index of 1.
|
|
254
|
+
//
|
|
255
|
+
// https://sqlite.org/c3ref/bind_blob.html
|
|
256
|
+
func (s *Stmt) BindRawText(param int, value []byte) error {
|
|
257
|
+
return s.BindText(param, string(value)) // does not escape
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
// BindBlob binds a []byte to the prepared statement.
|
|
261
|
+
// The leftmost SQL parameter has an index of 1.
|
|
262
|
+
//
|
|
263
|
+
// https://sqlite.org/c3ref/bind_blob.html
|
|
264
|
+
func (s *Stmt) BindBlob(param int, value []byte) error {
|
|
265
|
+
if len(value) > _MAX_LENGTH {
|
|
266
|
+
return TOOBIG
|
|
267
|
+
}
|
|
268
|
+
if len(value) == 0 {
|
|
269
|
+
return s.BindZeroBlob(param, 0)
|
|
270
|
+
}
|
|
271
|
+
ptr := s.c.wrp.NewBytes(value)
|
|
272
|
+
rc := res_t(s.c.wrp.Xsqlite3_bind_blob_go(
|
|
273
|
+
int32(s.handle), int32(param),
|
|
274
|
+
int32(ptr), int64(len(value))))
|
|
275
|
+
return s.c.error(rc)
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
// BindZeroBlob binds a zero-filled, length n BLOB to the prepared statement.
|
|
279
|
+
// The leftmost SQL parameter has an index of 1.
|
|
280
|
+
//
|
|
281
|
+
// https://sqlite.org/c3ref/bind_blob.html
|
|
282
|
+
func (s *Stmt) BindZeroBlob(param int, n int64) error {
|
|
283
|
+
rc := res_t(s.c.wrp.Xsqlite3_bind_zeroblob64(
|
|
284
|
+
int32(s.handle), int32(param), n))
|
|
285
|
+
return s.c.error(rc)
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
// BindNull binds a NULL to the prepared statement.
|
|
289
|
+
// The leftmost SQL parameter has an index of 1.
|
|
290
|
+
//
|
|
291
|
+
// https://sqlite.org/c3ref/bind_blob.html
|
|
292
|
+
func (s *Stmt) BindNull(param int) error {
|
|
293
|
+
rc := res_t(s.c.wrp.Xsqlite3_bind_null(
|
|
294
|
+
int32(s.handle), int32(param)))
|
|
295
|
+
return s.c.error(rc)
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
// BindTime binds a [time.Time] to the prepared statement.
|
|
299
|
+
// The leftmost SQL parameter has an index of 1.
|
|
300
|
+
//
|
|
301
|
+
// https://sqlite.org/c3ref/bind_blob.html
|
|
302
|
+
func (s *Stmt) BindTime(param int, value time.Time, format TimeFormat) error {
|
|
303
|
+
switch format {
|
|
304
|
+
case TimeFormatDefault, TimeFormatAuto, time.RFC3339Nano:
|
|
305
|
+
return s.bindRFC3339Nano(param, value)
|
|
306
|
+
}
|
|
307
|
+
switch v := format.Encode(value).(type) {
|
|
308
|
+
case string:
|
|
309
|
+
return s.BindText(param, v)
|
|
310
|
+
case int64:
|
|
311
|
+
return s.BindInt64(param, v)
|
|
312
|
+
case float64:
|
|
313
|
+
return s.BindFloat(param, v)
|
|
314
|
+
default:
|
|
315
|
+
panic(errutil.AssertErr())
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
func (s *Stmt) bindRFC3339Nano(param int, value time.Time) error {
|
|
320
|
+
const maxlen = 48
|
|
321
|
+
ptr := s.c.wrp.New(maxlen)
|
|
322
|
+
buf := s.c.wrp.Bytes(ptr, maxlen)
|
|
323
|
+
buf = value.AppendFormat(buf[:0], time.RFC3339Nano)
|
|
324
|
+
_ = append(buf, 0)
|
|
325
|
+
|
|
326
|
+
rc := res_t(s.c.wrp.Xsqlite3_bind_text_go(
|
|
327
|
+
int32(s.handle), int32(param),
|
|
328
|
+
int32(ptr), int64(len(buf))))
|
|
329
|
+
return s.c.error(rc)
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
// BindPointer binds a NULL to the prepared statement, just like [Stmt.BindNull],
|
|
333
|
+
// but it also associates ptr with that NULL value such that it can be retrieved
|
|
334
|
+
// within an application-defined SQL function using [Value.Pointer].
|
|
335
|
+
// The leftmost SQL parameter has an index of 1.
|
|
336
|
+
//
|
|
337
|
+
// https://sqlite.org/c3ref/bind_blob.html
|
|
338
|
+
func (s *Stmt) BindPointer(param int, ptr any) error {
|
|
339
|
+
valPtr := s.c.wrp.AddHandle(ptr)
|
|
340
|
+
rc := res_t(s.c.wrp.Xsqlite3_bind_pointer_go(
|
|
341
|
+
int32(s.handle), int32(param), int32(valPtr)))
|
|
342
|
+
return s.c.error(rc)
|
|
343
|
+
}
|
|
344
|
+
|
|
345
|
+
// BindValue binds a copy of value to the prepared statement.
|
|
346
|
+
// The leftmost SQL parameter has an index of 1.
|
|
347
|
+
//
|
|
348
|
+
// https://sqlite.org/c3ref/bind_blob.html
|
|
349
|
+
func (s *Stmt) BindValue(param int, value Value) error {
|
|
350
|
+
if value.c != s.c {
|
|
351
|
+
return MISUSE
|
|
352
|
+
}
|
|
353
|
+
rc := res_t(s.c.wrp.Xsqlite3_bind_value(
|
|
354
|
+
int32(s.handle), int32(param), int32(value.handle)))
|
|
355
|
+
return s.c.error(rc)
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
// DataCount resets the number of columns in a result set.
|
|
359
|
+
//
|
|
360
|
+
// https://sqlite.org/c3ref/data_count.html
|
|
361
|
+
func (s *Stmt) DataCount() int {
|
|
362
|
+
return int(s.c.wrp.Xsqlite3_data_count(int32(s.handle)))
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
// ColumnCount returns the number of columns in a result set.
|
|
366
|
+
//
|
|
367
|
+
// https://sqlite.org/c3ref/column_count.html
|
|
368
|
+
func (s *Stmt) ColumnCount() int {
|
|
369
|
+
return int(s.c.wrp.Xsqlite3_column_count(int32(s.handle)))
|
|
370
|
+
}
|
|
371
|
+
|
|
372
|
+
// ColumnName returns the name of the result column.
|
|
373
|
+
// The leftmost column of the result set has the index 0.
|
|
374
|
+
//
|
|
375
|
+
// https://sqlite.org/c3ref/column_name.html
|
|
376
|
+
func (s *Stmt) ColumnName(col int) string {
|
|
377
|
+
ptr := ptr_t(s.c.wrp.Xsqlite3_column_name(
|
|
378
|
+
int32(s.handle), int32(col)))
|
|
379
|
+
if ptr == 0 {
|
|
380
|
+
panic(errutil.OOMErr)
|
|
381
|
+
}
|
|
382
|
+
return s.c.wrp.ReadString(ptr, _MAX_NAME)
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
// ColumnType returns the initial [Datatype] of the result column.
|
|
386
|
+
// The leftmost column of the result set has the index 0.
|
|
387
|
+
//
|
|
388
|
+
// https://sqlite.org/c3ref/column_blob.html
|
|
389
|
+
func (s *Stmt) ColumnType(col int) Datatype {
|
|
390
|
+
return Datatype(s.c.wrp.Xsqlite3_column_type(
|
|
391
|
+
int32(s.handle), int32(col)))
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
// ColumnDeclType returns the declared datatype of the result column.
|
|
395
|
+
// The leftmost column of the result set has the index 0.
|
|
396
|
+
//
|
|
397
|
+
// https://sqlite.org/c3ref/column_decltype.html
|
|
398
|
+
func (s *Stmt) ColumnDeclType(col int) string {
|
|
399
|
+
ptr := ptr_t(s.c.wrp.Xsqlite3_column_decltype(
|
|
400
|
+
int32(s.handle), int32(col)))
|
|
401
|
+
if ptr == 0 {
|
|
402
|
+
return ""
|
|
403
|
+
}
|
|
404
|
+
return s.c.wrp.ReadString(ptr, _MAX_NAME)
|
|
405
|
+
}
|
|
406
|
+
|
|
407
|
+
// ColumnDatabaseName returns the name of the database
|
|
408
|
+
// that is the origin of a particular result column.
|
|
409
|
+
// The leftmost column of the result set has the index 0.
|
|
410
|
+
//
|
|
411
|
+
// https://sqlite.org/c3ref/column_database_name.html
|
|
412
|
+
func (s *Stmt) ColumnDatabaseName(col int) string {
|
|
413
|
+
ptr := ptr_t(s.c.wrp.Xsqlite3_column_database_name(
|
|
414
|
+
int32(s.handle), int32(col)))
|
|
415
|
+
if ptr == 0 {
|
|
416
|
+
return ""
|
|
417
|
+
}
|
|
418
|
+
return s.c.wrp.ReadString(ptr, _MAX_NAME)
|
|
419
|
+
}
|
|
420
|
+
|
|
421
|
+
// ColumnTableName returns the name of the table
|
|
422
|
+
// that is the origin of a particular result column.
|
|
423
|
+
// The leftmost column of the result set has the index 0.
|
|
424
|
+
//
|
|
425
|
+
// https://sqlite.org/c3ref/column_database_name.html
|
|
426
|
+
func (s *Stmt) ColumnTableName(col int) string {
|
|
427
|
+
ptr := ptr_t(s.c.wrp.Xsqlite3_column_table_name(
|
|
428
|
+
int32(s.handle), int32(col)))
|
|
429
|
+
if ptr == 0 {
|
|
430
|
+
return ""
|
|
431
|
+
}
|
|
432
|
+
return s.c.wrp.ReadString(ptr, _MAX_NAME)
|
|
433
|
+
}
|
|
434
|
+
|
|
435
|
+
// ColumnOriginName returns the name of the table column
|
|
436
|
+
// that is the origin of a particular result column.
|
|
437
|
+
// The leftmost column of the result set has the index 0.
|
|
438
|
+
//
|
|
439
|
+
// https://sqlite.org/c3ref/column_database_name.html
|
|
440
|
+
func (s *Stmt) ColumnOriginName(col int) string {
|
|
441
|
+
ptr := ptr_t(s.c.wrp.Xsqlite3_column_origin_name(
|
|
442
|
+
int32(s.handle), int32(col)))
|
|
443
|
+
if ptr == 0 {
|
|
444
|
+
return ""
|
|
445
|
+
}
|
|
446
|
+
return s.c.wrp.ReadString(ptr, _MAX_NAME)
|
|
447
|
+
}
|
|
448
|
+
|
|
449
|
+
// ColumnBool returns the value of the result column as a bool.
|
|
450
|
+
// The leftmost column of the result set has the index 0.
|
|
451
|
+
// SQLite does not have a separate boolean storage class.
|
|
452
|
+
// Instead, boolean values are retrieved as numbers,
|
|
453
|
+
// with 0 converted to false and any other value to true.
|
|
454
|
+
//
|
|
455
|
+
// https://sqlite.org/c3ref/column_blob.html
|
|
456
|
+
func (s *Stmt) ColumnBool(col int) bool {
|
|
457
|
+
return s.ColumnFloat(col) != 0
|
|
458
|
+
}
|
|
459
|
+
|
|
460
|
+
// ColumnInt returns the value of the result column as an int.
|
|
461
|
+
// The leftmost column of the result set has the index 0.
|
|
462
|
+
//
|
|
463
|
+
// https://sqlite.org/c3ref/column_blob.html
|
|
464
|
+
func (s *Stmt) ColumnInt(col int) int {
|
|
465
|
+
return int(s.ColumnInt64(col))
|
|
466
|
+
}
|
|
467
|
+
|
|
468
|
+
// ColumnInt64 returns the value of the result column as an int64.
|
|
469
|
+
// The leftmost column of the result set has the index 0.
|
|
470
|
+
//
|
|
471
|
+
// https://sqlite.org/c3ref/column_blob.html
|
|
472
|
+
func (s *Stmt) ColumnInt64(col int) int64 {
|
|
473
|
+
return s.c.wrp.Xsqlite3_column_int64(
|
|
474
|
+
int32(s.handle), int32(col))
|
|
475
|
+
}
|
|
476
|
+
|
|
477
|
+
// ColumnFloat returns the value of the result column as a float64.
|
|
478
|
+
// The leftmost column of the result set has the index 0.
|
|
479
|
+
//
|
|
480
|
+
// https://sqlite.org/c3ref/column_blob.html
|
|
481
|
+
func (s *Stmt) ColumnFloat(col int) float64 {
|
|
482
|
+
return s.c.wrp.Xsqlite3_column_double(
|
|
483
|
+
int32(s.handle), int32(col))
|
|
484
|
+
}
|
|
485
|
+
|
|
486
|
+
// ColumnTime returns the value of the result column as a [time.Time].
|
|
487
|
+
// The leftmost column of the result set has the index 0.
|
|
488
|
+
//
|
|
489
|
+
// https://sqlite.org/c3ref/column_blob.html
|
|
490
|
+
func (s *Stmt) ColumnTime(col int, format TimeFormat) time.Time {
|
|
491
|
+
var v any
|
|
492
|
+
switch s.ColumnType(col) {
|
|
493
|
+
case INTEGER:
|
|
494
|
+
v = s.ColumnInt64(col)
|
|
495
|
+
case FLOAT:
|
|
496
|
+
v = s.ColumnFloat(col)
|
|
497
|
+
case TEXT, BLOB:
|
|
498
|
+
v = s.ColumnText(col)
|
|
499
|
+
case NULL:
|
|
500
|
+
return time.Time{}
|
|
501
|
+
default:
|
|
502
|
+
panic(errutil.AssertErr())
|
|
503
|
+
}
|
|
504
|
+
t, err := format.Decode(v)
|
|
505
|
+
if err != nil {
|
|
506
|
+
s.err = err
|
|
507
|
+
}
|
|
508
|
+
return t
|
|
509
|
+
}
|
|
510
|
+
|
|
511
|
+
// ColumnText returns the value of the result column as a string.
|
|
512
|
+
// The leftmost column of the result set has the index 0.
|
|
513
|
+
//
|
|
514
|
+
// https://sqlite.org/c3ref/column_blob.html
|
|
515
|
+
func (s *Stmt) ColumnText(col int) string {
|
|
516
|
+
return string(s.ColumnRawText(col))
|
|
517
|
+
}
|
|
518
|
+
|
|
519
|
+
// ColumnBlob appends to buf and returns
|
|
520
|
+
// the value of the result column as a []byte.
|
|
521
|
+
// The leftmost column of the result set has the index 0.
|
|
522
|
+
//
|
|
523
|
+
// https://sqlite.org/c3ref/column_blob.html
|
|
524
|
+
func (s *Stmt) ColumnBlob(col int, buf []byte) []byte {
|
|
525
|
+
return append(buf, s.ColumnRawBlob(col)...)
|
|
526
|
+
}
|
|
527
|
+
|
|
528
|
+
// ColumnRawText returns the value of the result column as a []byte.
|
|
529
|
+
// The []byte is owned by SQLite and may be invalidated by
|
|
530
|
+
// subsequent calls to [Stmt] methods.
|
|
531
|
+
// The leftmost column of the result set has the index 0.
|
|
532
|
+
//
|
|
533
|
+
// https://sqlite.org/c3ref/column_blob.html
|
|
534
|
+
func (s *Stmt) ColumnRawText(col int) []byte {
|
|
535
|
+
ptr := ptr_t(s.c.wrp.Xsqlite3_column_text(
|
|
536
|
+
int32(s.handle), int32(col)))
|
|
537
|
+
return s.columnRawBytes(col, ptr, 1)
|
|
538
|
+
}
|
|
539
|
+
|
|
540
|
+
// ColumnRawBlob returns the value of the result column as a []byte.
|
|
541
|
+
// The []byte is owned by SQLite and may be invalidated by
|
|
542
|
+
// subsequent calls to [Stmt] methods.
|
|
543
|
+
// The leftmost column of the result set has the index 0.
|
|
544
|
+
//
|
|
545
|
+
// https://sqlite.org/c3ref/column_blob.html
|
|
546
|
+
func (s *Stmt) ColumnRawBlob(col int) []byte {
|
|
547
|
+
ptr := ptr_t(s.c.wrp.Xsqlite3_column_blob(
|
|
548
|
+
int32(s.handle), int32(col)))
|
|
549
|
+
return s.columnRawBytes(col, ptr, 0)
|
|
550
|
+
}
|
|
551
|
+
|
|
552
|
+
func (s *Stmt) columnRawBytes(col int, ptr ptr_t, nul int32) []byte {
|
|
553
|
+
if ptr == 0 {
|
|
554
|
+
rc := res_t(s.c.wrp.Xsqlite3_errcode(int32(s.c.handle)))
|
|
555
|
+
if rc != _ROW && rc != _DONE {
|
|
556
|
+
s.err = s.c.error(rc)
|
|
557
|
+
}
|
|
558
|
+
return nil
|
|
559
|
+
}
|
|
560
|
+
|
|
561
|
+
n := s.c.wrp.Xsqlite3_column_bytes(int32(s.handle), int32(col))
|
|
562
|
+
return s.c.wrp.Bytes(ptr, int64(n+nul))[:n]
|
|
563
|
+
}
|
|
564
|
+
|
|
565
|
+
// ColumnValue returns the unprotected value of the result column.
|
|
566
|
+
// The leftmost column of the result set has the index 0.
|
|
567
|
+
//
|
|
568
|
+
// https://sqlite.org/c3ref/column_blob.html
|
|
569
|
+
func (s *Stmt) ColumnValue(col int) Value {
|
|
570
|
+
ptr := ptr_t(s.c.wrp.Xsqlite3_column_value(
|
|
571
|
+
int32(s.handle), int32(col)))
|
|
572
|
+
return Value{
|
|
573
|
+
c: s.c,
|
|
574
|
+
handle: ptr,
|
|
575
|
+
}
|
|
576
|
+
}
|
|
577
|
+
|
|
578
|
+
// Columns populates result columns into the provided slice.
|
|
579
|
+
// The slice must have [Stmt.ColumnCount] length.
|
|
580
|
+
//
|
|
581
|
+
// [INTEGER] columns will be retrieved as int64 values,
|
|
582
|
+
// [FLOAT] as float64, [NULL] as nil,
|
|
583
|
+
// [TEXT] as string, and [BLOB] as []byte.
|
|
584
|
+
func (s *Stmt) Columns(dest ...any) error {
|
|
585
|
+
defer s.c.arena.Mark()()
|
|
586
|
+
types, ptr, err := s.columns(int64(len(dest)))
|
|
587
|
+
if err != nil {
|
|
588
|
+
return err
|
|
589
|
+
}
|
|
590
|
+
|
|
591
|
+
// Avoid bounds checks on types below.
|
|
592
|
+
if len(types) != len(dest) {
|
|
593
|
+
panic(errutil.AssertErr())
|
|
594
|
+
}
|
|
595
|
+
|
|
596
|
+
mem := s.c.wrp.Memory
|
|
597
|
+
for i := range dest {
|
|
598
|
+
switch types[i] {
|
|
599
|
+
case byte(INTEGER):
|
|
600
|
+
dest[i] = int64(mem.Read64(ptr))
|
|
601
|
+
case byte(FLOAT):
|
|
602
|
+
dest[i] = mem.ReadFloat64(ptr)
|
|
603
|
+
case byte(NULL):
|
|
604
|
+
dest[i] = nil
|
|
605
|
+
case byte(TEXT):
|
|
606
|
+
len := int32(mem.Read32(ptr + 4))
|
|
607
|
+
if len != 0 {
|
|
608
|
+
ptr := ptr_t(mem.Read32(ptr))
|
|
609
|
+
buf := mem.Bytes(ptr, int64(len))
|
|
610
|
+
dest[i] = string(buf)
|
|
611
|
+
} else {
|
|
612
|
+
dest[i] = ""
|
|
613
|
+
}
|
|
614
|
+
case byte(BLOB):
|
|
615
|
+
len := int32(mem.Read32(ptr + 4))
|
|
616
|
+
if len != 0 {
|
|
617
|
+
ptr := ptr_t(mem.Read32(ptr))
|
|
618
|
+
buf := mem.Bytes(ptr, int64(len))
|
|
619
|
+
tmp, _ := dest[i].([]byte)
|
|
620
|
+
dest[i] = append(tmp[:0], buf...)
|
|
621
|
+
} else {
|
|
622
|
+
dest[i], _ = dest[i].([]byte)
|
|
623
|
+
}
|
|
624
|
+
}
|
|
625
|
+
ptr += 8
|
|
626
|
+
}
|
|
627
|
+
return nil
|
|
628
|
+
}
|
|
629
|
+
|
|
630
|
+
// ColumnsRaw populates result columns into the provided slice.
|
|
631
|
+
// The slice must have [Stmt.ColumnCount] length.
|
|
632
|
+
//
|
|
633
|
+
// [INTEGER] columns will be retrieved as int64 values,
|
|
634
|
+
// [FLOAT] as float64, [NULL] as nil,
|
|
635
|
+
// [TEXT] and [BLOB] as []byte.
|
|
636
|
+
// Any []byte are owned by SQLite and may be invalidated by
|
|
637
|
+
// subsequent calls to [Stmt] methods.
|
|
638
|
+
func (s *Stmt) ColumnsRaw(dest ...any) error {
|
|
639
|
+
defer s.c.arena.Mark()()
|
|
640
|
+
types, ptr, err := s.columns(int64(len(dest)))
|
|
641
|
+
if err != nil {
|
|
642
|
+
return err
|
|
643
|
+
}
|
|
644
|
+
|
|
645
|
+
// Avoid bounds checks on types below.
|
|
646
|
+
if len(types) != len(dest) {
|
|
647
|
+
panic(errutil.AssertErr())
|
|
648
|
+
}
|
|
649
|
+
|
|
650
|
+
mem := s.c.wrp.Memory
|
|
651
|
+
for i := range dest {
|
|
652
|
+
switch types[i] {
|
|
653
|
+
case byte(INTEGER):
|
|
654
|
+
dest[i] = int64(mem.Read64(ptr))
|
|
655
|
+
case byte(FLOAT):
|
|
656
|
+
dest[i] = mem.ReadFloat64(ptr)
|
|
657
|
+
case byte(NULL):
|
|
658
|
+
dest[i] = nil
|
|
659
|
+
default:
|
|
660
|
+
len := int32(mem.Read32(ptr + 4))
|
|
661
|
+
if len == 0 && types[i] == byte(BLOB) {
|
|
662
|
+
dest[i] = []byte{}
|
|
663
|
+
} else {
|
|
664
|
+
cap := len
|
|
665
|
+
if types[i] == byte(TEXT) {
|
|
666
|
+
cap++
|
|
667
|
+
}
|
|
668
|
+
ptr := ptr_t(mem.Read32(ptr))
|
|
669
|
+
buf := mem.Bytes(ptr, int64(cap))[:len]
|
|
670
|
+
dest[i] = buf
|
|
671
|
+
}
|
|
672
|
+
}
|
|
673
|
+
ptr += 8
|
|
674
|
+
}
|
|
675
|
+
return nil
|
|
676
|
+
}
|
|
677
|
+
|
|
678
|
+
func (s *Stmt) columns(count int64) ([]byte, ptr_t, error) {
|
|
679
|
+
typePtr := s.c.arena.New(count)
|
|
680
|
+
dataPtr := s.c.arena.New(count * 8)
|
|
681
|
+
|
|
682
|
+
rc := res_t(s.c.wrp.Xsqlite3_columns_go(
|
|
683
|
+
int32(s.handle), int32(count), int32(typePtr), int32(dataPtr)))
|
|
684
|
+
if rc == res_t(MISUSE) {
|
|
685
|
+
return nil, 0, MISUSE
|
|
686
|
+
}
|
|
687
|
+
if err := s.c.error(rc); err != nil {
|
|
688
|
+
return nil, 0, err
|
|
689
|
+
}
|
|
690
|
+
|
|
691
|
+
return s.c.wrp.Bytes(typePtr, count), dataPtr, nil
|
|
692
|
+
}
|