Struct xpcom::interfaces::mozIStorageConnection [] [src]

#[repr(C)]
pub struct mozIStorageConnection { /* fields omitted */ }

interface mozIStorageConnection : mozIStorageAsyncConnection

/**
 * mozIStorageConnection represents a database connection attached to
 * a specific file or to the in-memory data storage.  It is the
 * primary interface for interacting with a database, including
 * creating prepared statements, executing SQL, and examining database
 * errors.
 *
 * @note From the main thread, you should rather use mozIStorageAsyncConnection.
 *
 * @threadsafe
 */

Methods

impl mozIStorageConnection
[src]

[src]

Cast this mozIStorageConnection to one of its base interfaces.

impl mozIStorageConnection
[src]

TRANSACTION_DEFERRED: i64 = 0
/**
   * Begins a new transaction with the given type.
   */

TRANSACTION_IMMEDIATE: i64 = 1

TRANSACTION_EXCLUSIVE: i64 = 2

[src]

/**
   * Closes a database connection.  Callers must finalize all statements created
   * for this connection prior to calling this method.  It is illegal to use
   * call this method if any asynchronous statements have been executed on this
   * connection.
   *
   * @throws NS_ERROR_UNEXPECTED
   *         If any statement has been executed asynchronously on this object.
   * @throws NS_ERROR_UNEXPECTED
   *         If is called on a thread other than the one that opened it.
   */

void close ();

[src]

/**
   * Clones a database connection and makes the clone read only if needed.
   * SQL Functions and attached on-disk databases are applied to the new clone.
   *
   * @param aReadOnly
   *        If true, the returned database should be put into read-only mode.
   *        Defaults to false.
   * @return the cloned database connection.
   *
   * @throws NS_ERROR_UNEXPECTED
   *         If this connection is a memory database.
   * @note If your connection is already read-only, you will get a read-only
   *       clone.
   * @note Due to a bug in SQLite, if you use the shared cache (openDatabase),
   *       you end up with the same privileges as the first connection opened
   *       regardless of what is specified in aReadOnly.
   * @note The following pragmas are copied over to a read-only clone:
   *        - cache_size
   *        - temp_store
   *       The following pragmas are copied over to a writeable clone:
   *        - cache_size
   *        - temp_store
   *        - foreign_keys
   *        - journal_size_limit
   *        - synchronous
   *        - wal_autocheckpoint
   *       All SQL functions are copied over to read-only and writeable clones.
   *       Additionally, all temporary tables, triggers, and views, as well as
   *       any indexes on temporary tables, are copied over to writeable clones.
   *       For temporary tables, only the schemas are copied, not their
   *       contents.
   *
   */

mozIStorageConnection clone ([optional] in boolean aReadOnly);

[src]

/**
   * The default size for SQLite database pages used by mozStorage for new
   * databases.
   */

readonly attribute long defaultPageSize;

[src]

/**
   * Indicates if the connection is open and ready to use.  This will be false
   * if the connection failed to open, or it has been closed.
   */

readonly attribute boolean connectionReady;

[src]

/**
   * lastInsertRowID returns the row ID from the last INSERT
   * operation.
   */

readonly attribute long long lastInsertRowID;

[src]

/**
   * affectedRows returns the number of database rows that were changed or
   * inserted or deleted by last operation.
   */

readonly attribute long affectedRows;

[src]

/**
   * The last error SQLite error code.
   */

readonly attribute long lastError;

[src]

/**
   * The last SQLite error as a string (in english, straight from the
   * sqlite library).
   */

readonly attribute AUTF8String lastErrorString;

[src]

/**
   * The schema version of the database.  This should not be used until the
   * database is ready.  The schema will be reported as zero if it is not set.
   */

attribute long schemaVersion;

[src]

/**
   * The schema version of the database.  This should not be used until the
   * database is ready.  The schema will be reported as zero if it is not set.
   */

attribute long schemaVersion;

[src]

/**
   * Create a mozIStorageStatement for the given SQL expression.  The
   * expression may use ? to indicate sequential numbered arguments,
   * ?1, ?2 etc. to indicate specific numbered arguments or :name and
   * $var to indicate named arguments.
   *
   * @param aSQLStatement
   *        The SQL statement to execute.
   * @return a new mozIStorageStatement
   */

mozIStorageStatement createStatement (in AUTF8String aSQLStatement);

[src]

/**
   * Execute a SQL expression, expecting no arguments.
   *
   * @param aSQLStatement  The SQL statement to execute
   */

void executeSimpleSQL (in AUTF8String aSQLStatement);

[src]

/**
   * Check if the given table exists.
   *
   * @param aTableName
   *        The table to check
   * @return TRUE if table exists, FALSE otherwise.
   */

boolean tableExists (in AUTF8String aTableName);

[src]

/**
   * Check if the given index exists.
   *
   * @param aIndexName   The index to check
   * @return TRUE if the index exists, FALSE otherwise.
   */

boolean indexExists (in AUTF8String aIndexName);

[src]

/**
   * Returns true if a transaction is active on this connection.
   */

readonly attribute boolean transactionInProgress;

[src]

/**
   * Begin a new transaction.  sqlite default transactions are deferred.
   * If a transaction is active, throws an error.
   */

void beginTransaction ();

[src]

void beginTransactionAs (in int32_t transactionType);

[src]

/**
   * Commits the current transaction.  If no transaction is active,
   * @throws NS_ERROR_UNEXPECTED.
   * @throws NS_ERROR_NOT_INITIALIZED.
   */

void commitTransaction ();

[src]

/**
   * Rolls back the current transaction.  If no transaction is active,
   * @throws NS_ERROR_UNEXPECTED.
   * @throws NS_ERROR_NOT_INITIALIZED.
   */

void rollbackTransaction ();

[src]

/**
   * Create the table with the given name and schema.
   *
   * If the table already exists, NS_ERROR_FAILURE is thrown.
   * (XXX at some point in the future it will check if the schema is
   * the same as what is specified, but that doesn't happen currently.)
   *
   * @param aTableName
   *        The table name to be created, consisting of [A-Za-z0-9_], and
   *        beginning with a letter.
   * @param aTableSchema
   *        The schema of the table; what would normally go between the parens
   *        in a CREATE TABLE statement: e.g., "foo  INTEGER, bar STRING".
   *
   * @throws NS_ERROR_FAILURE
   *         If the table already exists or could not be created for any other
   *         reason.
   */

void createTable (in string aTableName, in string aTableSchema);

[src]

/**
   * Controls SQLITE_FCNTL_CHUNK_SIZE setting in sqlite. This helps avoid fragmentation
   * by growing/shrinking the database file in SQLITE_FCNTL_CHUNK_SIZE increments. To
   * conserve memory on systems short on storage space, this function will have no effect
   * on mobile devices or if less than 500MiB of space is left available.
   *
   * @param aIncrement
   *        The database file will grow in multiples of chunkSize.
   * @param aDatabaseName
   *        Sqlite database name. "" means pass NULL for zDbName to sqlite3_file_control.
   *        See http://sqlite.org/c3ref/file_control.html for more details.
   * @throws NS_ERROR_FILE_TOO_BIG
   *         If the system is short on storage space.
   */

void setGrowthIncrement (in int32_t aIncrement, in AUTF8String aDatabaseName);

[src]

/**
   * Enable a predefined virtual table implementation.
   *
   * @param aModuleName
   *        The module to enable. Only "filesystem" is currently supported.
   *
   * @throws NS_ERROR_FAILURE
   *         For unknown module names.
   */

[noscript] void enableModule (in ACString aModuleName);

Methods from Deref<Target = mozIStorageAsyncConnection>

[src]

Cast this mozIStorageAsyncConnection to one of its base interfaces.

[src]

/**
   * Close this database connection, allowing all pending statements
   * to complete first.
   *
   * @param aCallback [optional]
   *        A callback that will be notified when the close is completed,
   *        with the following arguments:
   *        - status: the status of the call
   *        - value: |null|
   *
   * @throws NS_ERROR_NOT_SAME_THREAD
   *         If called on a thread other than the one that opened it.  The
   *         callback will not be dispatched.
   * @throws NS_ERROR_NOT_INITIALIZED
   *         If called on a connection that has already been closed or was
   *         never properly opened.  The callback will still be dispatched
   *         to the main thread despite the returned error.
   * @note If this call should fail, the callback won't be invoked.
   */

void asyncClose ([optional] in mozIStorageCompletionCallback aCallback);

[src]

/**
   * Forcibly closes a database connection synchronously.
   * This should only be used when it's required to close and replace the
   * database synchronously to return control to the consumer, for example in
   * case of a detected corruption on database opening.
   * Since this spins the events loop, it should be used only in very particular
   * and rare situations, or it may cause unexpected consequences (crashes).
   *
   * @throws NS_ERROR_NOT_SAME_THREAD
   *         If called on a thread other than the one that opened it.
   */

[noscript] void spinningSynchronousClose ();

[src]

/**
   * Clone a database and make the clone read only if needed.
   * SQL Functions and attached on-disk databases are applied to the new clone.
   *
   * @param aReadOnly
   *        If true, the returned database should be put into read-only mode.
   *
   * @param aCallback
   *        A callback that will be notified when the operation is complete,
   *        with the following arguments:
   *        - status: the status of the operation
   *        - value: in case of success, an intance of
   *             mozIStorageAsyncConnection cloned from this one.
   *
   * @throws NS_ERROR_NOT_SAME_THREAD
   *         If is called on a thread other than the one that opened it.
   * @throws NS_ERROR_UNEXPECTED
   *         If this connection is a memory database.
   *
   * @note If your connection is already read-only, you will get a read-only
   *       clone.
   * @note The resulting connection will NOT implement mozIStorageConnection,
   *       it will only implement mozIStorageAsyncConnection.
   * @note Due to a bug in SQLite, if you use the shared cache
   *       (see mozIStorageService), you end up with the same privileges as the
   *       first connection opened regardless of what is specified in aReadOnly.
   * @note The following pragmas are copied over to a read-only clone:
   *        - cache_size
   *        - temp_store
   *       The following pragmas are copied over to a writeable clone:
   *        - cache_size
   *        - temp_store
   *        - foreign_keys
   *        - journal_size_limit
   *        - synchronous
   *        - wal_autocheckpoint
   *       All SQL functions are copied over to read-only and writeable clones.
   *       Additionally, all temporary tables, triggers, and views, as well as
   *       any indexes on temporary tables, are copied over to writeable clones.
   *       For temporary tables, only the schemas are copied, not their
   *       contents.
   */

void asyncClone (in boolean aReadOnly, in mozIStorageCompletionCallback aCallback);

[src]

/**
   * The current database nsIFile.  Null if the database
   * connection refers to an in-memory database.
   */

readonly attribute nsIFile databaseFile;

[src]

/**
   * Causes any pending database operation to abort and return at the first
   * opportunity.
   * This can only be used on read-only connections that don't implement
   * the mozIStorageConnection interface.
   * @note operations that are nearly complete may still be able to complete.
   * @throws if used on an unsupported connection type, or a closed connection.
   */

void interrupt ();

[src]

/**
   * Create an asynchronous statement for the given SQL. An
   * asynchronous statement can only be used to dispatch asynchronous
   * requests to the asynchronous execution thread and cannot be used
   * to take any synchronous actions on the database.
   *
   * The expression may use ? to indicate sequential numbered arguments,
   * ?1, ?2 etc. to indicate specific numbered arguments or :name and
   * $var to indicate named arguments.
   *
   * @param aSQLStatement
   *        The SQL statement to execute.
   * @return a new mozIStorageAsyncStatement
   * @note The statement is created lazily on first execution.
   */

mozIStorageAsyncStatement createAsyncStatement (in AUTF8String aSQLStatement);

[src]

/**
   * Execute an array of statements created with this connection using
   * any currently bound parameters. When the array contains multiple
   * statements, the execution is wrapped in a single
   * transaction. These statements can be reused immediately, and
   * reset does not need to be called.
   *
   * @param aStatements
   *        The array of statements to execute asynchronously, in the order they
   *        are given in the array.
   * @param aNumStatements
   *        The number of statements in aStatements.
   * @param aCallback [optional]
   *        The callback object that will be notified of progress, errors, and
   *        completion.
   * @return an object that can be used to cancel the statements execution.
   *
   * @note If you have any custom defined functions, they must be
   *        re-entrant since they can be called on multiple threads.
   */

mozIStoragePendingStatement executeAsync ([array, size_is (aNumStatements)] in mozIStorageBaseStatement aStatements, in unsigned long aNumStatements, [optional] in mozIStorageStatementCallback aCallback);

[src]

/**
   * Execute asynchronously an SQL expression, expecting no arguments.
   *
   * @param aSQLStatement
   *        The SQL statement to execute
   * @param aCallback [optional]
   *        The callback object that will be notified of progress, errors, and
   *        completion.
   * @return an object that can be used to cancel the statement execution.
   */

mozIStoragePendingStatement executeSimpleSQLAsync (in AUTF8String aSQLStatement, [optional] in mozIStorageStatementCallback aCallback);

[src]

/**
   * Create a new SQL function.  If you use your connection on multiple threads,
   * your function needs to be threadsafe, or it should only be called on one
   * thread.
   *
   * @param aFunctionName
   *        The name of function to create, as seen in SQL.
   * @param aNumArguments
   *        The number of arguments the function takes. Pass -1 for
   *        variable-argument functions.
   * @param aFunction
   *        The instance of mozIStorageFunction, which implements the function
   *        in question.
   */

void createFunction (in AUTF8String aFunctionName, in long aNumArguments, in mozIStorageFunction aFunction);

[src]

/**
   * Create a new SQL aggregate function.  If you use your connection on
   * multiple threads, your function needs to be threadsafe, or it should only
   * be called on one thread.
   *
   * @param aFunctionName
   *        The name of aggregate function to create, as seen in SQL.
   * @param aNumArguments
   *        The number of arguments the function takes. Pass -1 for
   *        variable-argument functions.
   * @param aFunction
   *        The instance of mozIStorageAggreagteFunction, which implements the
   *        function in question.
   */

void createAggregateFunction (in AUTF8String aFunctionName, in long aNumArguments, in mozIStorageAggregateFunction aFunction);

[src]

/**
   * Delete custom SQL function (simple or aggregate one).
   *
   * @param aFunctionName
   *        The name of function to remove.
   */

void removeFunction (in AUTF8String aFunctionName);

[src]

/**
   * Sets a progress handler. Only one handler can be registered at a time.
   * If you need more than one, you need to chain them yourself.  This progress
   * handler should be threadsafe if you use this connection object on more than
   * one thread.
   *
   * @param aGranularity
   *        The number of SQL virtual machine steps between progress handler
   *        callbacks.
   * @param aHandler
   *        The instance of mozIStorageProgressHandler.
   * @return previous registered handler.
   */

mozIStorageProgressHandler setProgressHandler (in int32_t aGranularity, in mozIStorageProgressHandler aHandler);

[src]

/**
   * Remove a progress handler.
   *
   * @return previous registered handler.
   */

mozIStorageProgressHandler removeProgressHandler ();

Trait Implementations

impl XpCom for mozIStorageConnection
[src]

IID: nsIID = nsID(1252174919, 36132, 16388, [155, 49, 236, 11, 216, 95, 12, 195])

[src]

Perform a QueryInterface call on this object, attempting to dynamically cast it to the requested interface type. Returns Some(RefPtr) if the cast succeeded, and None otherwise. Read more

impl RefCounted for mozIStorageConnection
[src]

[src]

Increment the reference count.

[src]

Decrement the reference count, potentially freeing backing memory.

impl Deref for mozIStorageConnection
[src]

The resulting type after dereferencing.

[src]

Dereferences the value.