~/bend-docscommunity

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

type Statement source · line 7 · raw

Type

type I64 source · line 10 · raw

Data

type F64 source · line 13 · raw

Data

type Value source · line 16 · raw

Data

type Row source · line 23 · raw

Data

type Rows source · line 26 · raw

Data

type Stats source · line 29 · raw

Data

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