sqlite.bend relies on unsafe/foreign
raw source on the hub · import bend-over-sqlite@0.1.0.0/sqlite.bend as Sqlite
SQLite connections, typed values, prepared statements and transactions for C and Wasm.
1 import
import Base
Types
type Connection source · line 4 · raw
Type
Connection@handle:File -> Connection
type Statement source · line 7 · raw
Type
Statement@handle:File -> Statement
type I64 source · line 10 · raw
Data
I64@lo:U32 -> @hi:U32 -> I64
type F64 source · line 13 · raw
Data
F64@lo:U32 -> @hi:U32 -> F64
type Value source · line 16 · raw
Data
NullValue
Integer@value:I64 -> Value
Real@value:F64 -> Value
Text@value:String -> Value
Blob@bytes:List<&2, U32> -> Value
type Row source · line 23 · raw
Data
Row@values:List<&2, Value> -> Row
type Rows source · line 26 · raw
Data
Rows@columns:List<&2, String> -> @rows:List<&2, Row> -> Rows
type Stats source · line 29 · raw
Data
Stats@changes:I64 -> @last_insert_rowid:I64 -> Stats
Definitions
def I64.from_u32 source · line 32 · raw
@n:U32 -> I64
def I64.is_eq source · line 35 · raw
@a:I64 -> @b:I64 -> Bool
def I64.neg source · line 40 · raw
@a:I64 -> I64
def I64.to_u32.go source · line 44 · raw
@z:Bool -> @lo:U32 -> Maybe<&2, U32>
def I64.to_u32 source · line 51 · raw
@a:I64 -> Maybe<&2, U32>
def I64.div10 source · line 56 · raw
@a:I64 -> Pair(I64, U32)
Unsigned division by ten, with 16-bit limbs to avoid intermediate overflow.
def I64.digits source · line 64 · raw
@fuel:Nat -> @qr:Pair(I64, U32) -> @rest:String -> String
def I64.show.sign source · line 75 · raw
@negative:Bool -> @n:I64 -> String
def I64.show source · line 82 · raw
@n:I64 -> String
def I64.read.end source · line 89 · raw
@ok:Bool -> @negative:Bool -> @+n:I64 -> Maybe<&2, I64>
def I64.read.advance source · line 96 · raw
@ok:Bool -> @n:I64 -> Maybe<&2, I64>
def I64.read.finish source · line 103 · raw
@+negative:Bool -> @seen:Bool -> @n:Maybe<&2, I64> -> Maybe<&2, I64>
def I64.read.digits source · line 110 · raw
@s:String -> @negative:Bool -> @seen:Bool -> @n:Maybe<&2, I64> -> Maybe<&2, I64>
def I64.read source · line 126 · raw
@s:String -> Maybe<&2, I64>
def F64.normal source · line 136 · raw
@sign:U32 -> @exponent:U32 -> @+fraction:U32 -> F64
Exact widening of binary32, including subnormals. SQLite itself maps NaN to NULL.
def F64.subnormal source · line 139 · raw
@fuel:Nat -> @ready:Bool -> @sign:U32 -> @exponent:U32 -> @+fraction:U32 -> F64
def F64.small source · line 151 · raw
@sign:U32 -> @fraction:U32 -> F64
def F64.widen source · line 158 · raw
@exponent:U32 -> @sign:U32 -> @fraction:U32 -> F64
def F64.from_f32 source · line 167 · raw
@n:F32 -> F64
def Row.get.go source · line 171 · raw
@index:Nat -> @values:List<&2, Value> -> Maybe<&2, Value>
def Row.get source · line 178 · raw
@row:Row -> @index:U32 -> Maybe<&2, Value>
def Rows.is_single source · line 182 · raw
@rows:Rows -> Bool
def wrap.open source · line 261 · raw
@r:Result<&1, &1, Pair(U32, String), File> -> Result<&1, &1, Pair(U32, String), Connection>
def open source · line 268 · raw
@path:String -> IO(Result<&1, &1, Pair(U32, String), Connection>)
def open_readonly source · line 273 · raw
@path:String -> IO(Result<&1, &1, Pair(U32, String), Connection>)
def memory source · line 278 · raw
IO(Result<&1, &1, Pair(U32, String), Connection>)
def from_bytes source · line 281 · raw
@bytes:List<&2, U32> -> IO(Result<&1, &1, Pair(U32, String), Connection>)
def wrap.close source · line 286 · raw
@r:Result<&1, &1, Pair(Pair(U32, String), File), Unit> -> Result<&1, &1, Pair(Pair(U32, String), Connection), Unit>
def close source · line 293 · raw
@db:Connection -> IO(Result<&1, &1, Pair(Pair(U32, String), Connection), Unit>)
def finalize source · line 299 · raw
@stmt:Statement -> IO(Result<&1, &1, Pair(U32, String), Unit>)
def wrap.prepare source · line 303 · raw
@r:Result<&1, &1, Pair(U32, String), File> -> Result<&1, &1, Pair(U32, String), Statement>
def wrap.prepare.pair source · line 310 · raw
@pair:Pair(File, Result<&1, &1, Pair(U32, String), File>) -> Pair(Connection, Result<&1, &1, Pair(U32, String), Statement>)
def prepare source · line 314 · raw
@resource:Connection -> @sql:String -> IO(Pair(Connection, Result<&1, &1, Pair(U32, String), Statement>))
def wrap.bind.pair source · line 320 · raw
@pair:Pair(File, Result<&1, &1, Pair(U32, String), Unit>) -> Pair(Statement, Result<&1, &1, Pair(U32, String), Unit>)
def bind source · line 324 · raw
@resource:Statement -> @index:U32 -> @value:Value -> IO(Pair(Statement, Result<&1, &1, Pair(U32, String), Unit>))
def wrap.bind_named.pair source · line 330 · raw
@pair:Pair(File, Result<&1, &1, Pair(U32, String), Unit>) -> Pair(Statement, Result<&1, &1, Pair(U32, String), Unit>)
def bind_named source · line 334 · raw
@resource:Statement -> @name:String -> @value:Value -> IO(Pair(Statement, Result<&1, &1, Pair(U32, String), Unit>))
def wrap.step.pair source · line 340 · raw
@pair:Pair(File, Result<&1, &1, Pair(U32, String), Maybe<&2, Row>>) -> Pair(Statement, Result<&1, &1, Pair(U32, String), Maybe<&2, Row>>)
def step source · line 344 · raw
@resource:Statement -> IO(Pair(Statement, Result<&1, &1, Pair(U32, String), Maybe<&2, Row>>))
def wrap.reset.pair source · line 350 · raw
@pair:Pair(File, Result<&1, &1, Pair(U32, String), Unit>) -> Pair(Statement, Result<&1, &1, Pair(U32, String), Unit>)
def reset source · line 354 · raw
@resource:Statement -> IO(Pair(Statement, Result<&1, &1, Pair(U32, String), Unit>))
def wrap.clear_bindings.pair source · line 360 · raw
@pair:Pair(File, Result<&1, &1, Pair(U32, String), Unit>) -> Pair(Statement, Result<&1, &1, Pair(U32, String), Unit>)
def clear_bindings source · line 364 · raw
@resource:Statement -> IO(Pair(Statement, Result<&1, &1, Pair(U32, String), Unit>))
def wrap.column_names.pair source · line 370 · raw
@pair:Pair(File, Result<&1, &1, Pair(U32, String), List<&2, String>>) -> Pair(Statement, Result<&1, &1, Pair(U32, String), List<&2, String>>)
def column_names source · line 374 · raw
@resource:Statement -> IO(Pair(Statement, Result<&1, &1, Pair(U32, String), List<&2, String>>))
def wrap.parameter_count.pair source · line 380 · raw
@pair:Pair(File, Result<&1, &1, Pair(U32, String), U32>) -> Pair(Statement, Result<&1, &1, Pair(U32, String), U32>)
def parameter_count source · line 384 · raw
@resource:Statement -> IO(Pair(Statement, Result<&1, &1, Pair(U32, String), U32>))
def wrap.parameter_index.pair source · line 390 · raw
@pair:Pair(File, Result<&1, &1, Pair(U32, String), U32>) -> Pair(Statement, Result<&1, &1, Pair(U32, String), U32>)
def parameter_index source · line 394 · raw
@resource:Statement -> @name:String -> IO(Pair(Statement, Result<&1, &1, Pair(U32, String), U32>))
def wrap.script.pair source · line 400 · raw
@pair:Pair(File, Result<&1, &1, Pair(U32, String), Unit>) -> Pair(Connection, Result<&1, &1, Pair(U32, String), Unit>)
def script source · line 404 · raw
@resource:Connection -> @sql:String -> IO(Pair(Connection, Result<&1, &1, Pair(U32, String), Unit>))
def wrap.execute.pair source · line 410 · raw
@pair:Pair(File, Result<&1, &1, Pair(U32, String), Stats>) -> Pair(Connection, Result<&1, &1, Pair(U32, String), Stats>)
def execute source · line 414 · raw
@resource:Connection -> @sql:String -> @values:List<&2, Value> -> IO(Pair(Connection, Result<&1, &1, Pair(U32, String), Stats>))
def wrap.query.pair source · line 420 · raw
@pair:Pair(File, Result<&1, &1, Pair(U32, String), Rows>) -> Pair(Connection, Result<&1, &1, Pair(U32, String), Rows>)
def query source · line 424 · raw
@resource:Connection -> @sql:String -> @values:List<&2, Value> -> IO(Pair(Connection, Result<&1, &1, Pair(U32, String), Rows>))
def wrap.busy_timeout.pair source · line 430 · raw
@pair:Pair(File, Result<&1, &1, Pair(U32, String), Unit>) -> Pair(Connection, Result<&1, &1, Pair(U32, String), Unit>)
def busy_timeout source · line 434 · raw
@resource:Connection -> @milliseconds:U32 -> IO(Pair(Connection, Result<&1, &1, Pair(U32, String), Unit>))
def wrap.export.pair source · line 440 · raw
@pair:Pair(File, Result<&1, &1, Pair(U32, String), List<&2, U32>>) -> Pair(Connection, Result<&1, &1, Pair(U32, String), List<&2, U32>>)
def export source · line 444 · raw
@resource:Connection -> IO(Pair(Connection, Result<&1, &1, Pair(U32, String), List<&2, U32>>))
def dispose source · line 455 · raw
@db:Connection -> IO(Result<&1, &1, Pair(U32, String), Unit>)
def begin source · line 459 · raw
@db:Connection -> IO(Pair(Connection, Result<&1, &1, Pair(U32, String), Unit>))
def commit source · line 462 · raw
@db:Connection -> IO(Pair(Connection, Result<&1, &1, Pair(U32, String), Unit>))
def rollback source · line 465 · raw
@db:Connection -> IO(Pair(Connection, Result<&1, &1, Pair(U32, String), Unit>))
def cleanup.merge source · line 469 · raw
@-A:Type -> @result:Result<&1, &1, Pair(U32, String), A> -> @cleanup:Result<&1, &1, Pair(U32, String), Unit> -> Result<&1, &1, Pair(U32, String), A>
Preserve the primary error if both the body and its cleanup fail.
def scope.connection.end source · line 484 · raw
@-A:Type -> @pair:Pair(Connection, Result<&1, &1, Pair(U32, String), A>) -> IO(Result<&1, &1, Pair(U32, String), A>)
def scope.connection.start source · line 490 · raw
@-A:Type -> @opened:Result<&1, &1, Pair(U32, String), Connection> -> @body:(@_:Connection -> IO(Pair(Connection, Result<&1, &1, Pair(U32, String), A>))) -> IO(Result<&1, &1, Pair(U32, String), A>)
def with_connection source · line 499 · raw
@-A:Type -> @path:String -> @body:(@_:Connection -> IO(Pair(Connection, Result<&1, &1, Pair(U32, String), A>))) -> IO(Result<&1, &1, Pair(U32, String), A>)
def scope.statement.end source · line 504 · raw
@-A:Type -> @db:Connection -> @pair:Pair(Statement, Result<&1, &1, Pair(U32, String), A>) -> IO(Pair(Connection, Result<&1, &1, Pair(U32, String), A>))
def scope.statement.start source · line 510 · raw
@-A:Type -> @pair:Pair(Connection, Result<&1, &1, Pair(U32, String), Statement>) -> @body:(@_:Statement -> IO(Pair(Statement, Result<&1, &1, Pair(U32, String), A>))) -> IO(Pair(Connection, Result<&1, &1, Pair(U32, String), A>))
def with_statement source · line 519 · raw
@-A:Type -> @db:Connection -> @sql:String -> @body:(@_:Statement -> IO(Pair(Statement, Result<&1, &1, Pair(U32, String), A>))) -> IO(Pair(Connection, Result<&1, &1, Pair(U32, String), A>))
def transaction.rolled source · line 524 · raw
@-A:Type -> @result:Result<&1, &1, Pair(U32, String), A> -> @pair:Pair(Connection, Result<&1, &1, Pair(U32, String), Unit>) -> Pair(Connection, Result<&1, &1, Pair(U32, String), A>)
def transaction.committed source · line 528 · raw
@-A:Type -> @value:A -> @pair:Pair(Connection, Result<&1, &1, Pair(U32, String), Unit>) -> IO(Pair(Connection, Result<&1, &1, Pair(U32, String), A>))
def transaction.end source · line 537 · raw
@-A:Type -> @pair:Pair(Connection, Result<&1, &1, Pair(U32, String), A>) -> IO(Pair(Connection, Result<&1, &1, Pair(U32, String), A>))
def transaction.start source · line 548 · raw
@-A:Type -> @pair:Pair(Connection, Result<&1, &1, Pair(U32, String), Unit>) -> @body:(@_:Connection -> IO(Pair(Connection, Result<&1, &1, Pair(U32, String), A>))) -> IO(Pair(Connection, Result<&1, &1, Pair(U32, String), A>))
def transaction source · line 557 · raw
@-A:Type -> @db:Connection -> @body:(@_:Connection -> IO(Pair(Connection, Result<&1, &1, Pair(U32, String), A>))) -> IO(Pair(Connection, Result<&1, &1, Pair(U32, String), A>))
Effects (foreign code)
effect raw.open source · line 189 · raw
@path:String -> @readonly:Bool -> IO(Result<&1, &1, Pair(U32, String), File>)
foreign: effs/sqlite.c, effs/sqlite.js
effect raw.import source · line 193 · raw
@bytes:List<&2, U32> -> IO(Result<&1, &1, Pair(U32, String), File>)
foreign: effs/sqlite.c, effs/sqlite.js
effect raw.close source · line 197 · raw
@handle:File -> IO(Result<&1, &1, Pair(Pair(U32, String), File), Unit>)
foreign: effs/sqlite.c, effs/sqlite.js
effect raw.finalize source · line 201 · raw
@handle:File -> IO(Result<&1, &1, Pair(U32, String), Unit>)
foreign: effs/sqlite.c, effs/sqlite.js
effect raw.prepare source · line 205 · raw
@handle:File -> @sql:String -> IO(Pair(File, Result<&1, &1, Pair(U32, String), File>))
foreign: effs/sqlite.c, effs/sqlite.js
effect raw.bind source · line 209 · raw
@handle:File -> @index:U32 -> @value:Value -> IO(Pair(File, Result<&1, &1, Pair(U32, String), Unit>))
foreign: effs/sqlite.c, effs/sqlite.js
effect raw.bind_named source · line 213 · raw
@handle:File -> @name:String -> @value:Value -> IO(Pair(File, Result<&1, &1, Pair(U32, String), Unit>))
foreign: effs/sqlite.c, effs/sqlite.js
effect raw.step source · line 217 · raw
@handle:File -> IO(Pair(File, Result<&1, &1, Pair(U32, String), Maybe<&2, Row>>))
foreign: effs/sqlite.c, effs/sqlite.js
effect raw.reset source · line 221 · raw
@handle:File -> IO(Pair(File, Result<&1, &1, Pair(U32, String), Unit>))
foreign: effs/sqlite.c, effs/sqlite.js
effect raw.clear_bindings source · line 225 · raw
@handle:File -> IO(Pair(File, Result<&1, &1, Pair(U32, String), Unit>))
foreign: effs/sqlite.c, effs/sqlite.js
effect raw.column_names source · line 229 · raw
@handle:File -> IO(Pair(File, Result<&1, &1, Pair(U32, String), List<&2, String>>))
foreign: effs/sqlite.c, effs/sqlite.js
effect raw.parameter_count source · line 233 · raw
@handle:File -> IO(Pair(File, Result<&1, &1, Pair(U32, String), U32>))
foreign: effs/sqlite.c, effs/sqlite.js
effect raw.parameter_index source · line 237 · raw
@handle:File -> @name:String -> IO(Pair(File, Result<&1, &1, Pair(U32, String), U32>))
foreign: effs/sqlite.c, effs/sqlite.js
effect raw.script source · line 241 · raw
@handle:File -> @sql:String -> IO(Pair(File, Result<&1, &1, Pair(U32, String), Unit>))
foreign: effs/sqlite.c, effs/sqlite.js
effect raw.execute source · line 245 · raw
@handle:File -> @sql:String -> @values:List<&2, Value> -> IO(Pair(File, Result<&1, &1, Pair(U32, String), Stats>))
foreign: effs/sqlite.c, effs/sqlite.js
effect raw.query source · line 249 · raw
@handle:File -> @sql:String -> @values:List<&2, Value> -> IO(Pair(File, Result<&1, &1, Pair(U32, String), Rows>))
foreign: effs/sqlite.c, effs/sqlite.js
effect raw.busy_timeout source · line 253 · raw
@handle:File -> @milliseconds:U32 -> IO(Pair(File, Result<&1, &1, Pair(U32, String), Unit>))
foreign: effs/sqlite.c, effs/sqlite.js
effect raw.export source · line 257 · raw
@handle:File -> IO(Pair(File, Result<&1, &1, Pair(U32, String), List<&2, U32>>))
foreign: effs/sqlite.c, effs/sqlite.js
effect raw.dispose source · line 451 · raw
@handle:File -> IO(Result<&1, &1, Pair(U32, String), Unit>)
Scoped cleanup also reclaims statements left open by the callback.
foreign: effs/sqlite.c, effs/sqlite.js