dm_db_set_auto_vacuum Function

public function dm_db_set_auto_vacuum(db, mode) result(rc)

Auto-vacuuming is only possible if the database stores some additional information that allows each database page to be traced backwards to its referrer. Therefore, auto-vacuuming must be turned on before any tables are created. It is not possible to enable or disable auto-vacuum after a table has been created.

In mode DB_AUTO_VACUUM_INCREMENTAL the additional information needed to do auto-vacuuming is stored in the database file but auto-vacuuming does not occur automatically at each commit as it does with DB_AUTO_VACUUM_FULL. In incremental mode, the separate incremental_vacuum pragma must be invoked to cause the auto-vacuum to occur.

The database connection can be changed between full and incremental auto-vacuum mode at any time. However, changing from DB_AUTO_VACUUM_NONE to DB_AUTO_VACUUM_FULL or DB_AUTO_VACUUM_INCREMENTAL can only occur when the database is new (no tables have yet been created) or by running the VACUUM command.

The function returns the following error codes:

  • E_DB_PREPARE if statement preparation failed.
  • E_DB_STEP if step execution failed or no write permission.
  • E_INVALID if the auto-vacuum mode is invalid.
  • E_READ_ONLY if database is opened read-only.

Arguments

Type IntentOptional Attributes Name
type(db_type), intent(inout) :: db

Database type.

integer, intent(in) :: mode

Database auto vacuum mode.

Return Value integer


Calls

proc~~dm_db_set_auto_vacuum~~CallsGraph proc~dm_db_set_auto_vacuum dm_db_set_auto_vacuum sqlite3_finalize sqlite3_finalize proc~dm_db_set_auto_vacuum->sqlite3_finalize sqlite3_prepare_v2 sqlite3_prepare_v2 proc~dm_db_set_auto_vacuum->sqlite3_prepare_v2 sqlite3_step sqlite3_step proc~dm_db_set_auto_vacuum->sqlite3_step