org.h2.engine.Constants Maven / Gradle / Ivy
/*
* Copyright 2004-2011 H2 Group. Multiple-Licensed under the H2 License,
* Version 1.0, and under the Eclipse Public License, Version 1.0
* (http://h2database.com/html/license.html).
* Initial Developer: H2 Group
*/
package org.h2.engine;
import java.sql.ResultSet;
/**
* Constants are fixed values that are used in the whole database code.
*/
public class Constants {
/**
* The build date is updated for each public release.
*/
public static final String BUILD_DATE = "2012-05-23";
/**
* The build date is updated for each public release.
*/
public static final String BUILD_DATE_STABLE = "2012-04-08";
/**
* The build id is incremented for each public release.
*/
public static final int BUILD_ID = 167;
/**
* The build id of the last stable release.
*/
public static final int BUILD_ID_STABLE = 166;
/**
* If H2 is compiled to be included in a product, this should be set to
* a unique vendor id (to distinguish from official releases).
* Additionally, a version number should be set to distinguish releases.
* Example: ACME_SVN1651_BUILD3
*/
public static final String BUILD_VENDOR_AND_VERSION = null;
/**
* The TCP protocol version number 6.
*/
public static final int TCP_PROTOCOL_VERSION_6 = 6;
/**
* The TCP protocol version number 7.
*/
public static final int TCP_PROTOCOL_VERSION_7 = 7;
/**
* The TCP protocol version number 8.
*/
public static final int TCP_PROTOCOL_VERSION_8 = 8;
/**
* The TCP protocol version number 9.
*/
public static final int TCP_PROTOCOL_VERSION_9 = 9;
/**
* The TCP protocol version number 10.
*/
public static final int TCP_PROTOCOL_VERSION_10 = 10;
/**
* The TCP protocol version number 11.
*/
public static final int TCP_PROTOCOL_VERSION_11 = 11;
/**
* The major version of this database.
*/
public static final int VERSION_MAJOR = 1;
/**
* The minor version of this database.
*/
public static final int VERSION_MINOR = 3;
// Build.getLuceneVersion() uses an ugly hack to read this value
/**
* The lock mode that means no locking is used at all.
*/
public static final int LOCK_MODE_OFF = 0;
/**
* The lock mode that means read locks are acquired, but they are released
* immediately after the statement is executed.
*/
public static final int LOCK_MODE_READ_COMMITTED = 3;
/**
* The lock mode that means table level locking is used for reads and
* writes.
*/
public static final int LOCK_MODE_TABLE = 1;
/**
* The lock mode that means table level locking is used for reads and
* writes. If a table is locked, System.gc is called to close forgotten
* connections.
*/
public static final int LOCK_MODE_TABLE_GC = 2;
/**
* Constant meaning both numbers and text is allowed in SQL statements.
*/
public static final int ALLOW_LITERALS_ALL = 2;
/**
* Constant meaning no literals are allowed in SQL statements.
*/
public static final int ALLOW_LITERALS_NONE = 0;
/**
* Constant meaning only numbers are allowed in SQL statements (but no
* texts).
*/
public static final int ALLOW_LITERALS_NUMBERS = 1;
/**
* Whether searching in Blob values should be supported.
*/
public static final boolean BLOB_SEARCH = false;
/**
* The minimum number of entries to keep in the cache.
*/
public static final int CACHE_MIN_RECORDS = 16;
/**
* The default cache size in KB.
*/
public static final int CACHE_SIZE_DEFAULT = 16 * 1024;
/**
* The default cache type.
*/
public static final String CACHE_TYPE_DEFAULT = "LRU";
/**
* The value of the cluster setting if clustering is disabled.
*/
public static final String CLUSTERING_DISABLED = "''";
/**
* The value of the cluster setting if clustering is enabled (the actual
* value is checked later).
*/
public static final String CLUSTERING_ENABLED = "TRUE";
/**
* The database URL used when calling a function if only the column list
* should be returned.
*/
public static final String CONN_URL_COLUMNLIST = "jdbc:columnlist:connection";
/**
* The database URL used when calling a function if the data should be
* returned.
*/
public static final String CONN_URL_INTERNAL = "jdbc:default:connection";
/**
* The cost is calculated on rowcount + this offset,
* to avoid using the wrong or no index if the table
* contains no rows _currently_ (when preparing the statement)
*/
public static final int COST_ROW_OFFSET = 1000;
/**
* The number of milliseconds after which to check for a deadlock if locking
* is not successful.
*/
public static final int DEADLOCK_CHECK = 100;
/**
* The default port number of the HTTP server (for the H2 Console).
* This value is also in the documentation and in the Server javadoc.
*/
public static final int DEFAULT_HTTP_PORT = 8082;
/**
* The default value for the LOCK_MODE setting.
*/
public static final int DEFAULT_LOCK_MODE = LOCK_MODE_READ_COMMITTED;
/**
* The default maximum length of an LOB that is stored in the database file.
*/
public static final int DEFAULT_MAX_LENGTH_INPLACE_LOB = 4096;
/**
* The default maximum length of an LOB that is stored with the record itself.
* Only used if h2.lobInDatabase is enabled.
*/
public static final int DEFAULT_MAX_LENGTH_INPLACE_LOB2 = 128;
/**
* The default value for the maximum transaction log size.
*/
public static final long DEFAULT_MAX_LOG_SIZE = 16 * 1024 * 1024;
/**
* The default maximum number of rows to be kept in memory in a result set.
*/
public static final int DEFAULT_MAX_MEMORY_ROWS = 10000;
/**
* The default value for the MAX_MEMORY_UNDO setting.
*/
public static final int DEFAULT_MAX_MEMORY_UNDO = 50000;
/**
* The default for the setting MAX_OPERATION_MEMORY.
*/
public static final int DEFAULT_MAX_OPERATION_MEMORY = 100000;
/**
* The default page size to use for new databases.
*/
public static final int DEFAULT_PAGE_SIZE = 2048;
/**
* The default result set concurrency for statements created with
* Connection.createStatement() or prepareStatement(String sql).
*/
public static final int DEFAULT_RESULT_SET_CONCURRENCY = ResultSet.CONCUR_READ_ONLY;
/**
* The default port of the TCP server.
* This port is also used in the documentation and in the Server javadoc.
*/
public static final int DEFAULT_TCP_PORT = 9092;
/**
* The default delay in milliseconds before the transaction log is written.
*/
public static final int DEFAULT_WRITE_DELAY = 500;
/**
* The password is hashed this many times
* to slow down dictionary attacks.
*/
public static final int ENCRYPTION_KEY_HASH_ITERATIONS = 1024;
/**
* The block of a file. It is also the encryption block size.
*/
public static final int FILE_BLOCK_SIZE = 16;
/**
* For testing, the lock timeout is smaller than for interactive use cases.
* This value could be increased to about 5 or 10 seconds.
*/
public static final int INITIAL_LOCK_TIMEOUT = 2000;
/**
* The block size for I/O operations.
*/
public static final int IO_BUFFER_SIZE = 4 * 1024;
/**
* The block size used to compress data in the LZFOutputStream.
*/
public static final int IO_BUFFER_SIZE_COMPRESS = 128 * 1024;
/**
* The number of milliseconds to wait between checking the .lock.db file
* still exists once a database is locked.
*/
public static final int LOCK_SLEEP = 1000;
/**
* The highest possible parameter index.
*/
public static final int MAX_PARAMETER_INDEX = 100000;
/**
* The memory needed by a object of class Data
*/
public static final int MEMORY_DATA = 24;
/**
* This value is used to calculate the average memory usage.
*/
public static final int MEMORY_FACTOR = 64;
/**
* The memory needed by a regular object with at least one field.
*/
// Java 6, 64 bit: 24
// Java 6, 32 bit: 12
public static final int MEMORY_OBJECT = 24;
/**
* The memory needed by an object of class PageBtree.
*/
public static final int MEMORY_PAGE_BTREE = 112 + MEMORY_DATA + 2 * MEMORY_OBJECT;
/**
* The memory needed by an object of class PageData.
*/
public static final int MEMORY_PAGE_DATA = 144 + MEMORY_DATA + 3 * MEMORY_OBJECT;
/**
* The memory needed by an object of class PageDataOverflow.
*/
public static final int MEMORY_PAGE_DATA_OVERFLOW = 96 + MEMORY_DATA;
/**
* The memory needed by a pointer.
*/
// Java 6, 64 bit: 8
// Java 6, 32 bit: 4
public static final int MEMORY_POINTER = 8;
/**
* The memory needed by a Row.
*/
public static final int MEMORY_ROW = 40;
/**
* The minimum write delay that causes commits to be delayed.
*/
public static final int MIN_WRITE_DELAY = 5;
/**
* The name prefix used for indexes that are not explicitly named.
*/
public static final String PREFIX_INDEX = "INDEX_";
/**
* The name prefix used for synthetic nested join tables.
*/
public static final String PREFIX_JOIN = "SYSTEM_JOIN_";
/**
* The name prefix used for primary key constraints that are not explicitly
* named.
*/
public static final String PREFIX_PRIMARY_KEY = "PRIMARY_KEY_";
/**
* Every user belongs to this role.
*/
public static final String PUBLIC_ROLE_NAME = "PUBLIC";
/**
* The number of bytes in random salt that is used to hash passwords.
*/
public static final int SALT_LEN = 8;
/**
* The name of the default schema.
*/
public static final String SCHEMA_MAIN = "PUBLIC";
/**
* The default selectivity (used if the selectivity is not calculated).
*/
public static final int SELECTIVITY_DEFAULT = 50;
/**
* The number of distinct values to keep in memory when running ANALYZE.
*/
public static final int SELECTIVITY_DISTINCT_COUNT = 10000;
/**
* The default directory name of the server properties file for the H2 Console.
*/
public static final String SERVER_PROPERTIES_DIR = "~";
/**
* The name of the server properties file for the H2 Console.
*/
public static final String SERVER_PROPERTIES_NAME = ".h2.server.properties";
/**
* Queries that take longer than this number of milliseconds are written to
* the trace file with the level info.
*/
public static final long SLOW_QUERY_LIMIT_MS = 100;
/**
* The database URL prefix of this database.
*/
public static final String START_URL = "jdbc:h2:";
/**
* The file name suffix of all database files.
*/
public static final String SUFFIX_DB_FILE = ".db";
/**
* The file name suffix of large object files.
*/
public static final String SUFFIX_LOB_FILE = ".lob.db";
/**
* The suffix of the directory name used if LOB objects are stored in a
* directory.
*/
public static final String SUFFIX_LOBS_DIRECTORY = ".lobs.db";
/**
* The file name suffix of file lock files that are used to make sure a
* database is open by only one process at any time.
*/
public static final String SUFFIX_LOCK_FILE = ".lock.db";
/**
* The file name suffix of page files.
*/
public static final String SUFFIX_PAGE_FILE = ".h2.db";
/**
* The file name suffix of temporary files.
*/
public static final String SUFFIX_TEMP_FILE = ".temp.db";
/**
* The file name suffix of trace files.
*/
public static final String SUFFIX_TRACE_FILE = ".trace.db";
/**
* The delay that is to be used if throttle has been enabled.
*/
public static final int THROTTLE_DELAY = 50;
/**
* The maximum size of an undo log block.
*/
public static final int UNDO_BLOCK_SIZE = 1024 * 1024;
/**
* The database URL format in simplified Backus-Naur form.
*/
public static final String URL_FORMAT = START_URL +
"{ {.|mem:}[name] | [file:]fileName | {tcp|ssl}:[//]server[:port][,server2[:port]]/name }[;key=value...]";
/**
* The package name of user defined classes.
*/
public static final String USER_PACKAGE = "org.h2.dynamic";
/**
* Name of the character encoding format.
*/
public static final String UTF8 = "UTF8";
/**
* The maximum time in milliseconds to keep the cost of a view.
* 10000 means 10 seconds.
*/
public static final int VIEW_COST_CACHE_MAX_AGE = 10000;
/**
* The name of the index cache that is used for temporary view (subqueries
* used as tables).
*/
public static final int VIEW_INDEX_CACHE_SIZE = 64;
private Constants() {
// utility class
}
/**
* Get the version of this product, consisting of major version, minor version,
* and build id.
*
* @return the version number
*/
public static String getVersion() {
String version = VERSION_MAJOR + "." + VERSION_MINOR + "." + BUILD_ID;
if (BUILD_VENDOR_AND_VERSION != null) {
version += "_" + BUILD_VENDOR_AND_VERSION;
}
return version;
}
/**
* Get the last stable version name.
*
* @return the version number
*/
public static Object getVersionStable() {
return "1.3." + BUILD_ID_STABLE;
}
/**
* Get the complete version number of this database, consisting of
* the major version, the minor version, the build id, and the build date.
*
* @return the complete version
*/
public static String getFullVersion() {
return getVersion() + " (" + BUILD_DATE + ")";
}
}