Skip to content

simonw/sqlite-authorizer-examples

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 

Repository files navigation

SQLite authorizer examples

SQLite has a mechanism for authorizing access to database objects using an authorizer callback function, documented here.

This document demonstrates the different actions and arguments that are checked for different types of queries.

Usage

You can regenerate these examples by running:

python generate.py > examples.md

For each example a new in-memory database is created, the setup SQL is executed against it, then an authorizer callback is registered that logs the operations that are performed against the database while the main SQL is executed.

SQLITE_CREATE_INDEX

Setup SQL:

CREATE TABLE demo_table (name TEXT);
INSERT INTO demo_table (name) VALUES ('Alice')

SQL:

CREATE INDEX demo_index ON demo_table (name)

Operations:

SQLITE_INSERT	arg1="sqlite_master", dbname="main"
SQLITE_CREATE_INDEX	arg1="demo_index", arg2="demo_table", dbname="main"
SQLITE_READ	arg1="demo_table", arg2="name", dbname="main"
SQLITE_INSERT	arg1="sqlite_master", dbname="main"
SQLITE_REINDEX	arg1="demo_index", dbname="main"

SQLITE_CREATE_TABLE

SQL:

CREATE TABLE demo_table (name TEXT)

Operations:

SQLITE_INSERT	arg1="sqlite_master", dbname="main"
SQLITE_CREATE_TABLE	arg1="demo_table", dbname="main"
SQLITE_UPDATE	arg1="sqlite_master", arg2="type", dbname="main"
SQLITE_UPDATE	arg1="sqlite_master", arg2="name", dbname="main"
SQLITE_UPDATE	arg1="sqlite_master", arg2="tbl_name", dbname="main"
SQLITE_UPDATE	arg1="sqlite_master", arg2="rootpage", dbname="main"
SQLITE_UPDATE	arg1="sqlite_master", arg2="sql", dbname="main"
SQLITE_READ	arg1="sqlite_master", arg2="ROWID", dbname="main"

SQLITE_CREATE_TEMP_TABLE

SQL:

CREATE TEMP TABLE demo_table (name TEXT)

Operations:

SQLITE_INSERT	arg1="sqlite_temp_master", dbname="temp"
SQLITE_CREATE_TEMP_TABLE	arg1="demo_table", dbname="temp"
SQLITE_UPDATE	arg1="sqlite_temp_master", arg2="type", dbname="temp"
SQLITE_UPDATE	arg1="sqlite_temp_master", arg2="name", dbname="temp"
SQLITE_UPDATE	arg1="sqlite_temp_master", arg2="tbl_name", dbname="temp"
SQLITE_UPDATE	arg1="sqlite_temp_master", arg2="rootpage", dbname="temp"
SQLITE_UPDATE	arg1="sqlite_temp_master", arg2="sql", dbname="temp"
SQLITE_READ	arg1="sqlite_temp_master", arg2="ROWID", dbname="temp"

SQLITE_CREATE_TEMP_TRIGGER

Setup SQL:

CREATE TABLE demo_table (name TEXT)

SQL:

CREATE TEMP TRIGGER demo_trigger AFTER INSERT ON demo_table
  BEGIN
    INSERT INTO demo_table (name) VALUES ('Alice');
  END

Operations:

SQLITE_CREATE_TEMP_TRIGGER	arg1="demo_trigger", arg2="demo_table", dbname="temp"
SQLITE_INSERT	arg1="sqlite_master", dbname="main"
SQLITE_INSERT	arg1="sqlite_temp_master", dbname="temp"

SQLITE_CREATE_TEMP_VIEW

SQL:

CREATE TEMP VIEW demo_view AS SELECT 1

Operations:

SQLITE_INSERT	arg1="sqlite_temp_master", dbname="temp"
SQLITE_CREATE_TEMP_VIEW	arg1="demo_view", dbname="temp"
SQLITE_UPDATE	arg1="sqlite_temp_master", arg2="type", dbname="temp"
SQLITE_UPDATE	arg1="sqlite_temp_master", arg2="name", dbname="temp"
SQLITE_UPDATE	arg1="sqlite_temp_master", arg2="tbl_name", dbname="temp"
SQLITE_UPDATE	arg1="sqlite_temp_master", arg2="rootpage", dbname="temp"
SQLITE_UPDATE	arg1="sqlite_temp_master", arg2="sql", dbname="temp"
SQLITE_READ	arg1="sqlite_temp_master", arg2="ROWID", dbname="temp"

SQLITE_CREATE_TRIGGER

Setup SQL:

CREATE TABLE demo_table (name TEXT)

SQL:

CREATE TRIGGER demo_trigger AFTER INSERT ON demo_table
  BEGIN
    INSERT INTO demo_table (name) VALUES ('Alice');
  END

Operations:

SQLITE_CREATE_TRIGGER	arg1="demo_trigger", arg2="demo_table", dbname="main"
SQLITE_INSERT	arg1="sqlite_master", dbname="main"
SQLITE_INSERT	arg1="sqlite_master", dbname="main"

SQLITE_CREATE_VIEW

SQL:

CREATE VIEW demo_view AS SELECT 1

Operations:

SQLITE_INSERT	arg1="sqlite_master", dbname="main"
SQLITE_CREATE_VIEW	arg1="demo_view", dbname="main"
SQLITE_UPDATE	arg1="sqlite_master", arg2="type", dbname="main"
SQLITE_UPDATE	arg1="sqlite_master", arg2="name", dbname="main"
SQLITE_UPDATE	arg1="sqlite_master", arg2="tbl_name", dbname="main"
SQLITE_UPDATE	arg1="sqlite_master", arg2="rootpage", dbname="main"
SQLITE_UPDATE	arg1="sqlite_master", arg2="sql", dbname="main"
SQLITE_READ	arg1="sqlite_master", arg2="ROWID", dbname="main"

SQLITE_DELETE

Setup SQL:

CREATE TABLE demo_table (name TEXT);
INSERT INTO demo_table (name) VALUES ('Alice')

SQL:

DELETE FROM demo_table WHERE name='Alice'

Operations:

SQLITE_DELETE	arg1="demo_table", dbname="main"
SQLITE_READ	arg1="demo_table", arg2="name", dbname="main"

SQLITE_DROP_INDEX

Setup SQL:

CREATE TABLE demo_table (name TEXT);
CREATE INDEX demo_index ON demo_table (name)

SQL:

DROP INDEX demo_index

Operations:

SQLITE_DELETE	arg1="sqlite_master", dbname="main"
SQLITE_DROP_INDEX	arg1="demo_index", arg2="demo_table", dbname="main"
SQLITE_DELETE	arg1="sqlite_master", dbname="main"
SQLITE_READ	arg1="sqlite_master", arg2="name", dbname="main"
SQLITE_READ	arg1="sqlite_master", arg2="type", dbname="main"
SQLITE_UPDATE	arg1="sqlite_master", arg2="rootpage", dbname="main"
SQLITE_READ	arg1="sqlite_master", arg2="rootpage", dbname="main"

SQLITE_DROP_TABLE

Setup SQL:

CREATE TABLE demo_table (name TEXT)

SQL:

DROP TABLE demo_table

Operations:

SQLITE_DELETE	arg1="sqlite_master", dbname="main"
SQLITE_DROP_TABLE	arg1="demo_table", dbname="main"
SQLITE_DELETE	arg1="demo_table", dbname="main"
SQLITE_DELETE	arg1="sqlite_master", dbname="main"
SQLITE_READ	arg1="sqlite_master", arg2="tbl_name", dbname="main"
SQLITE_READ	arg1="sqlite_master", arg2="type", dbname="main"
SQLITE_UPDATE	arg1="sqlite_master", arg2="rootpage", dbname="main"
SQLITE_READ	arg1="sqlite_master", arg2="rootpage", dbname="main"

SQLITE_DROP_TEMP_TABLE

Setup SQL:

CREATE TEMP TABLE demo_table (name TEXT)

SQL:

DROP TABLE demo_table

Operations:

SQLITE_DELETE	arg1="sqlite_temp_master", dbname="temp"
SQLITE_DROP_TEMP_TABLE	arg1="demo_table", dbname="temp"
SQLITE_DELETE	arg1="demo_table", dbname="temp"
SQLITE_DELETE	arg1="sqlite_temp_master", dbname="temp"
SQLITE_READ	arg1="sqlite_temp_master", arg2="tbl_name", dbname="temp"
SQLITE_READ	arg1="sqlite_temp_master", arg2="type", dbname="temp"
SQLITE_UPDATE	arg1="sqlite_temp_master", arg2="rootpage", dbname="temp"
SQLITE_READ	arg1="sqlite_temp_master", arg2="rootpage", dbname="temp"

SQLITE_DROP_TEMP_TRIGGER

Setup SQL:

CREATE TABLE demo_table (name TEXT);
CREATE TEMP TRIGGER demo_trigger AFTER INSERT ON demo_table
  BEGIN
    INSERT INTO demo_table (name) VALUES ('Alice');
  END

SQL:

DROP TRIGGER demo_trigger

Operations:

SQLITE_DROP_TEMP_TRIGGER	arg1="demo_trigger", arg2="demo_table", dbname="temp"
SQLITE_DELETE	arg1="sqlite_temp_master", dbname="temp"
SQLITE_DELETE	arg1="sqlite_temp_master", dbname="temp"
SQLITE_READ	arg1="sqlite_temp_master", arg2="name", dbname="temp"
SQLITE_READ	arg1="sqlite_temp_master", arg2="type", dbname="temp"

SQLITE_DROP_TEMP_VIEW

Setup SQL:

CREATE TEMP VIEW demo_view AS SELECT 1

SQL:

DROP VIEW demo_view

Operations:

SQLITE_DELETE	arg1="sqlite_temp_master", dbname="temp"
SQLITE_DROP_TEMP_VIEW	arg1="demo_view", dbname="temp"
SQLITE_DELETE	arg1="demo_view", dbname="temp"
SQLITE_DELETE	arg1="sqlite_temp_master", dbname="temp"
SQLITE_READ	arg1="sqlite_temp_master", arg2="tbl_name", dbname="temp"
SQLITE_READ	arg1="sqlite_temp_master", arg2="type", dbname="temp"

SQLITE_DROP_TRIGGER

Setup SQL:

CREATE TABLE demo_table (name TEXT);
CREATE TRIGGER demo_trigger AFTER INSERT ON demo_table
  BEGIN
    INSERT INTO demo_table (name) VALUES ('Alice');
  END

SQL:

DROP TRIGGER demo_trigger

Operations:

SQLITE_DROP_TRIGGER	arg1="demo_trigger", arg2="demo_table", dbname="main"
SQLITE_DELETE	arg1="sqlite_master", dbname="main"
SQLITE_DELETE	arg1="sqlite_master", dbname="main"
SQLITE_READ	arg1="sqlite_master", arg2="name", dbname="main"
SQLITE_READ	arg1="sqlite_master", arg2="type", dbname="main"

SQLITE_DROP_VIEW

Setup SQL:

CREATE VIEW demo_view AS SELECT 1

SQL:

DROP VIEW demo_view

Operations:

SQLITE_DELETE	arg1="sqlite_master", dbname="main"
SQLITE_DROP_VIEW	arg1="demo_view", dbname="main"
SQLITE_DELETE	arg1="demo_view", dbname="main"
SQLITE_DELETE	arg1="sqlite_master", dbname="main"
SQLITE_READ	arg1="sqlite_master", arg2="tbl_name", dbname="main"
SQLITE_READ	arg1="sqlite_master", arg2="type", dbname="main"

SQLITE_INSERT

Setup SQL:

CREATE TABLE demo_table (name TEXT)

SQL:

INSERT INTO demo_table (name) VALUES ('Alice')

Operations:

SQLITE_INSERT	arg1="demo_table", dbname="main"

SQLITE_PRAGMA

SQL:

PRAGMA foreign_keys; PRAGMA foreign_keys = ON

Operations:

SQLITE_PRAGMA	arg1="foreign_keys"
SQLITE_PRAGMA	arg1="foreign_keys", arg2="ON"

SQLITE_READ

Setup SQL:

CREATE TABLE demo_table (name TEXT);
INSERT INTO demo_table (name) VALUES ('Alice')

SQL:

SELECT name FROM demo_table

Operations:

SQLITE_SELECT	
SQLITE_READ	arg1="demo_table", arg2="name", dbname="main"

SQLITE_SELECT

Setup SQL:

CREATE TABLE demo_table (name TEXT);
INSERT INTO demo_table (name) VALUES ('Alice')

SQL:

SELECT name FROM demo_table

Operations:

SQLITE_SELECT	
SQLITE_READ	arg1="demo_table", arg2="name", dbname="main"

SQLITE_TRANSACTION

Setup SQL:

CREATE TABLE demo_table (name TEXT)

SQL:

BEGIN TRANSACTION;
  INSERT INTO demo_table (name) VALUES ('Alice');
COMMIT

Operations:

SQLITE_TRANSACTION	arg1="BEGIN"
SQLITE_INSERT	arg1="demo_table", dbname="main"
SQLITE_TRANSACTION	arg1="COMMIT"

SQLITE_UPDATE

Setup SQL:

CREATE TABLE demo_table (name TEXT);
INSERT INTO demo_table (name) VALUES ('Alice')

SQL:

UPDATE demo_table SET name='Bob' WHERE name='Alice'

Operations:

SQLITE_UPDATE	arg1="demo_table", arg2="name", dbname="main"
SQLITE_READ	arg1="demo_table", arg2="name", dbname="main"

SQLITE_ATTACH

SQL:

ATTACH DATABASE ':memory:' AS second

Operations:

SQLITE_ATTACH	arg1=":memory:"

SQLITE_DETACH

Setup SQL:

ATTACH DATABASE ':memory:' AS second

SQL:

DETACH DATABASE second

Operations:

SQLITE_DETACH	arg1="second"

SQLITE_ALTER_TABLE

Setup SQL:

CREATE TABLE demo_table (name TEXT)

SQL:

ALTER TABLE demo_table ADD COLUMN age INTEGER

Operations:

SQLITE_ALTER_TABLE	arg1="main", arg2="demo_table"
SQLITE_FUNCTION	arg2="printf"
SQLITE_READ	arg1="sqlite_master", arg2="sql", dbname="main"
SQLITE_FUNCTION	arg2="substr"
SQLITE_READ	arg1="sqlite_master", arg2="sql", dbname="main"
SQLITE_FUNCTION	arg2="length"
SQLITE_FUNCTION	arg2="printf"
SQLITE_READ	arg1="sqlite_master", arg2="sql", dbname="main"
SQLITE_UPDATE	arg1="sqlite_master", arg2="sql", dbname="main"
SQLITE_READ	arg1="sqlite_master", arg2="type", dbname="main"
SQLITE_READ	arg1="sqlite_master", arg2="name", dbname="main"

SQLITE_REINDEX

Setup SQL:

CREATE TABLE demo_table (name TEXT);
CREATE INDEX demo_index ON demo_table (name)

SQL:

REINDEX demo_index

Operations:

SQLITE_REINDEX	arg1="demo_index", dbname="main"

SQLITE_ANALYZE

Setup SQL:

CREATE TABLE demo_table (name TEXT);
CREATE INDEX demo_index ON demo_table (name)

SQL:

ANALYZE

Operations:

SQLITE_INSERT	arg1="sqlite_master", dbname="main"
SQLITE_CREATE_TABLE	arg1="sqlite_stat1", dbname="main"
SQLITE_UPDATE	arg1="sqlite_master", arg2="type", dbname="main"
SQLITE_UPDATE	arg1="sqlite_master", arg2="name", dbname="main"
SQLITE_UPDATE	arg1="sqlite_master", arg2="tbl_name", dbname="main"
SQLITE_UPDATE	arg1="sqlite_master", arg2="rootpage", dbname="main"
SQLITE_UPDATE	arg1="sqlite_master", arg2="sql", dbname="main"
SQLITE_READ	arg1="sqlite_master", arg2="ROWID", dbname="main"
SQLITE_ANALYZE	arg1="demo_table", dbname="main"
SQLITE_SELECT	
SQLITE_READ	arg1="sqlite_stat1", arg2="tbl", dbname="main"
SQLITE_READ	arg1="sqlite_stat1", arg2="idx", dbname="main"
SQLITE_READ	arg1="sqlite_stat1", arg2="stat", dbname="main"

SQLITE_CREATE_VTABLE

SQL:

CREATE VIRTUAL TABLE demo_table USING fts5(name)

Operations:

SQLITE_INSERT	arg1="sqlite_master", dbname="main"
SQLITE_CREATE_VTABLE	arg1="demo_table", arg2="fts5", dbname="main"
SQLITE_UPDATE	arg1="sqlite_master", arg2="type", dbname="main"
SQLITE_UPDATE	arg1="sqlite_master", arg2="name", dbname="main"
SQLITE_UPDATE	arg1="sqlite_master", arg2="tbl_name", dbname="main"
SQLITE_UPDATE	arg1="sqlite_master", arg2="rootpage", dbname="main"
SQLITE_UPDATE	arg1="sqlite_master", arg2="sql", dbname="main"
SQLITE_READ	arg1="sqlite_master", arg2="ROWID", dbname="main"
SQLITE_INSERT	arg1="sqlite_master", dbname="main"
SQLITE_CREATE_TABLE	arg1="demo_table_data", dbname="main"
SQLITE_UPDATE	arg1="sqlite_master", arg2="type", dbname="main"
SQLITE_UPDATE	arg1="sqlite_master", arg2="name", dbname="main"
SQLITE_UPDATE	arg1="sqlite_master", arg2="tbl_name", dbname="main"
SQLITE_UPDATE	arg1="sqlite_master", arg2="rootpage", dbname="main"
SQLITE_UPDATE	arg1="sqlite_master", arg2="sql", dbname="main"
SQLITE_READ	arg1="sqlite_master", arg2="ROWID", dbname="main"
SQLITE_INSERT	arg1="sqlite_master", dbname="main"
SQLITE_CREATE_TABLE	arg1="demo_table_idx", dbname="main"
SQLITE_INSERT	arg1="sqlite_master", dbname="main"
SQLITE_CREATE_INDEX	arg1="sqlite_autoindex_demo_table_idx_1", arg2="demo_table_idx", dbname="main"
SQLITE_READ	arg1="demo_table_idx", arg2="segid", dbname="main"
SQLITE_READ	arg1="demo_table_idx", arg2="term", dbname="main"
SQLITE_INSERT	arg1="sqlite_master", dbname="main"
SQLITE_UPDATE	arg1="sqlite_master", arg2="type", dbname="main"
SQLITE_UPDATE	arg1="sqlite_master", arg2="name", dbname="main"
SQLITE_UPDATE	arg1="sqlite_master", arg2="tbl_name", dbname="main"
SQLITE_UPDATE	arg1="sqlite_master", arg2="rootpage", dbname="main"
SQLITE_UPDATE	arg1="sqlite_master", arg2="sql", dbname="main"
SQLITE_READ	arg1="sqlite_master", arg2="ROWID", dbname="main"
SQLITE_INSERT	arg1="demo_table_data", dbname="main"
SQLITE_INSERT	arg1="sqlite_master", dbname="main"
SQLITE_CREATE_TABLE	arg1="demo_table_content", dbname="main"
SQLITE_UPDATE	arg1="sqlite_master", arg2="type", dbname="main"
SQLITE_UPDATE	arg1="sqlite_master", arg2="name", dbname="main"
SQLITE_UPDATE	arg1="sqlite_master", arg2="tbl_name", dbname="main"
SQLITE_UPDATE	arg1="sqlite_master", arg2="rootpage", dbname="main"
SQLITE_UPDATE	arg1="sqlite_master", arg2="sql", dbname="main"
SQLITE_READ	arg1="sqlite_master", arg2="ROWID", dbname="main"
SQLITE_INSERT	arg1="sqlite_master", dbname="main"
SQLITE_CREATE_TABLE	arg1="demo_table_docsize", dbname="main"
SQLITE_UPDATE	arg1="sqlite_master", arg2="type", dbname="main"
SQLITE_UPDATE	arg1="sqlite_master", arg2="name", dbname="main"
SQLITE_UPDATE	arg1="sqlite_master", arg2="tbl_name", dbname="main"
SQLITE_UPDATE	arg1="sqlite_master", arg2="rootpage", dbname="main"
SQLITE_UPDATE	arg1="sqlite_master", arg2="sql", dbname="main"
SQLITE_READ	arg1="sqlite_master", arg2="ROWID", dbname="main"
SQLITE_INSERT	arg1="sqlite_master", dbname="main"
SQLITE_CREATE_TABLE	arg1="demo_table_config", dbname="main"
SQLITE_INSERT	arg1="sqlite_master", dbname="main"
SQLITE_CREATE_INDEX	arg1="sqlite_autoindex_demo_table_config_1", arg2="demo_table_config", dbname="main"
SQLITE_READ	arg1="demo_table_config", arg2="k", dbname="main"
SQLITE_INSERT	arg1="sqlite_master", dbname="main"
SQLITE_UPDATE	arg1="sqlite_master", arg2="type", dbname="main"
SQLITE_UPDATE	arg1="sqlite_master", arg2="name", dbname="main"
SQLITE_UPDATE	arg1="sqlite_master", arg2="tbl_name", dbname="main"
SQLITE_UPDATE	arg1="sqlite_master", arg2="rootpage", dbname="main"
SQLITE_UPDATE	arg1="sqlite_master", arg2="sql", dbname="main"
SQLITE_READ	arg1="sqlite_master", arg2="ROWID", dbname="main"
SQLITE_INSERT	arg1="demo_table_config", dbname="main"
SQLITE_PRAGMA	arg1="data_version", dbname="main"
SQLITE_SELECT	
SQLITE_READ	arg1="demo_table_config", arg2="k", dbname="main"
SQLITE_READ	arg1="demo_table_config", arg2="v", dbname="main"

SQLITE_DROP_VTABLE

Setup SQL:

CREATE VIRTUAL TABLE demo_table USING fts5(name)

SQL:

DROP TABLE demo_table

Operations:

SQLITE_DELETE	arg1="sqlite_master", dbname="main"
SQLITE_DROP_VTABLE	arg1="demo_table", arg2="fts5", dbname="main"
SQLITE_DELETE	arg1="demo_table", dbname="main"
SQLITE_DELETE	arg1="sqlite_master", dbname="main"
SQLITE_READ	arg1="sqlite_master", arg2="tbl_name", dbname="main"
SQLITE_READ	arg1="sqlite_master", arg2="type", dbname="main"
SQLITE_DELETE	arg1="sqlite_master", dbname="main"
SQLITE_DROP_TABLE	arg1="demo_table_data", dbname="main"
SQLITE_DELETE	arg1="demo_table_data", dbname="main"
SQLITE_DELETE	arg1="sqlite_master", dbname="main"
SQLITE_READ	arg1="sqlite_master", arg2="tbl_name", dbname="main"
SQLITE_READ	arg1="sqlite_master", arg2="type", dbname="main"
SQLITE_UPDATE	arg1="sqlite_master", arg2="rootpage", dbname="main"
SQLITE_READ	arg1="sqlite_master", arg2="rootpage", dbname="main"
SQLITE_DELETE	arg1="sqlite_master", dbname="main"
SQLITE_DROP_TABLE	arg1="demo_table_idx", dbname="main"
SQLITE_DELETE	arg1="demo_table_idx", dbname="main"
SQLITE_DELETE	arg1="sqlite_master", dbname="main"
SQLITE_READ	arg1="sqlite_master", arg2="tbl_name", dbname="main"
SQLITE_READ	arg1="sqlite_master", arg2="type", dbname="main"
SQLITE_UPDATE	arg1="sqlite_master", arg2="rootpage", dbname="main"
SQLITE_READ	arg1="sqlite_master", arg2="rootpage", dbname="main"
SQLITE_DELETE	arg1="sqlite_master", dbname="main"
SQLITE_DROP_TABLE	arg1="demo_table_config", dbname="main"
SQLITE_DELETE	arg1="demo_table_config", dbname="main"
SQLITE_DELETE	arg1="sqlite_master", dbname="main"
SQLITE_READ	arg1="sqlite_master", arg2="tbl_name", dbname="main"
SQLITE_READ	arg1="sqlite_master", arg2="type", dbname="main"
SQLITE_UPDATE	arg1="sqlite_master", arg2="rootpage", dbname="main"
SQLITE_READ	arg1="sqlite_master", arg2="rootpage", dbname="main"
SQLITE_DELETE	arg1="sqlite_master", dbname="main"
SQLITE_DROP_TABLE	arg1="demo_table_docsize", dbname="main"
SQLITE_DELETE	arg1="demo_table_docsize", dbname="main"
SQLITE_DELETE	arg1="sqlite_master", dbname="main"
SQLITE_READ	arg1="sqlite_master", arg2="tbl_name", dbname="main"
SQLITE_READ	arg1="sqlite_master", arg2="type", dbname="main"
SQLITE_UPDATE	arg1="sqlite_master", arg2="rootpage", dbname="main"
SQLITE_READ	arg1="sqlite_master", arg2="rootpage", dbname="main"
SQLITE_DELETE	arg1="sqlite_master", dbname="main"
SQLITE_DROP_TABLE	arg1="demo_table_content", dbname="main"
SQLITE_DELETE	arg1="demo_table_content", dbname="main"
SQLITE_DELETE	arg1="sqlite_master", dbname="main"
SQLITE_READ	arg1="sqlite_master", arg2="tbl_name", dbname="main"
SQLITE_READ	arg1="sqlite_master", arg2="type", dbname="main"
SQLITE_UPDATE	arg1="sqlite_master", arg2="rootpage", dbname="main"
SQLITE_READ	arg1="sqlite_master", arg2="rootpage", dbname="main"

SQLITE_FUNCTION

SQL:

SELECT upper('Alice')

Operations:

SQLITE_SELECT	
SQLITE_FUNCTION	arg2="upper"

SQLITE_SAVEPOINT

Setup SQL:

CREATE TABLE demo_table (name TEXT)

SQL:

SAVEPOINT demo_savepoint

Operations:

SQLITE_SAVEPOINT	arg1="BEGIN", arg2="demo_savepoint"

SQLITE_RECURSIVE

SQL:

WITH RECURSIVE counter(n) AS (
  SELECT 1 UNION ALL
  SELECT n+1 FROM counter WHERE n<5
)
SELECT n FROM counter;

Operations:

SQLITE_SELECT	
SQLITE_SELECT	innermost_trigger_or_view="counter"
SQLITE_RECURSIVE	innermost_trigger_or_view="counter"
SQLITE_SELECT	innermost_trigger_or_view="counter"
SQLITE_SELECT	innermost_trigger_or_view="counter"

About

Examples of actions checked by the SQLite authorizer mechanism

Resources

Stars

Watchers

Forks

Releases

No releases published

Sponsor this project

 

Packages

No packages published

Languages