include/database/DBManager.php
\DBManager
Base database driver implementation
- Children
- \MssqlManager
- \IBMDB2Manager
- \OracleManager
- \MysqlManager
- Api
Properties
$capabilities= 'array()'
Capabilities this DB supports. Supported list: affected_rows Can report query affected rows for UPDATE/DELETE implement getAffectedRowCount() select_rows Can report row count for SELECT implement getRowCount() case_sensitive Supports case-sensitive text columns fulltext Supports fulltext search indexes inline_keys Supports defining keys together with the table auto_increment_sequence Autoincrement support implemented as sequence limit_subquery Supports LIMIT clauses in subqueries create_user Can create users for Sugar create_db Can create databases collation Supports setting collations disable_keys Supports temporarily disabling keys (for upgrades, etc.)
array()
Details- Type
- n/a
- Abstract
- Special cases: fix:expandDatabase - needs expandDatabase fix, see expandDatabase.php TODO: verify if we need these cases
$dieOnError= 'false'
Indicates whether we should die when we get an error from the DB
false
Details- Type
- n/a
$encode= 'true'
Indicates whether we should html encode the results from a query by default
true
Details- Type
- n/a
array
$index_descriptions= 'array()'
Index descriptions
array()
Details- Type
- array
array
$maxNameLengths= 'array(
'table' => 64,
'column' => 64,
'index' => 64,
'alias' => 64
)'
Maximum length of identifiers
array(
'table' => 64,
'column' => 64,
'index' => 64,
'alias' => 64
)
Details- Type
- array
- Abstract
$preparedTokens= 'array()'
Array of prepared statements and their correspoding parsed tokens
array()
Details- Type
- n/a
int
$priority= '0'
DB driver priority Higher priority drivers override lower priority ones
0
Details- Type
- int
$standardQueries= 'array(
'ALTER TABLE' => 'verifyAlterTable',
'DROP TABLE' => 'verifyDropTable',
'CREATE TABLE' => 'verifyCreateTable',
'INSERT INTO' => 'verifyInsertInto',
'UPDATE' => 'verifyUpdate',
'DELETE FROM' => 'verifyDeleteFrom',
)'
array(
'ALTER TABLE' => 'verifyAlterTable',
'DROP TABLE' => 'verifyDropTable',
'CREATE TABLE' => 'verifyCreateTable',
'INSERT INTO' => 'verifyInsertInto',
'UPDATE' => 'verifyUpdate',
'DELETE FROM' => 'verifyDeleteFrom',
)
Details- Type
- n/a
array
$table_descriptions= 'array()'
Table descriptions
array()
Details- Type
- array
array
$type_class= 'array(
'int' => 'int',
'double' => 'float',
'float' => 'float',
'uint' => 'int',
'ulong' => 'bigint',
'long' => 'bigint',
'short' => 'int',
'date' => 'date',
'datetime' => 'date',
'datetimecombo' => 'date',
'time' => 'time',
'bool' => 'bool',
'tinyint' => 'int',
'currency' => 'float',
'decimal' => 'float',
'decimal2' => 'float',
)'
Type classification into: - int - bool - float - date
array(
'int' => 'int',
'double' => 'float',
'float' => 'float',
'uint' => 'int',
'ulong' => 'bigint',
'long' => 'bigint',
'short' => 'int',
'date' => 'date',
'datetime' => 'date',
'datetimecombo' => 'date',
'time' => 'time',
'bool' => 'bool',
'tinyint' => 'int',
'currency' => 'float',
'decimal' => 'float',
'decimal2' => 'float',
)
Details- Type
- array
- Abstract
Methods
__get(
string $p
)
:
mixed
Wrapper for those trying to access the private and protected class members directly
Name | Type | Description |
---|---|---|
$p | string | var name |
Type | Description |
---|---|
mixed |
_emptyValue(
mixed $val, string $type
)
:
bool
Check if the value is empty value for this type
Name | Type | Description |
---|---|---|
$val | mixed | Value |
$type | string | Type (one of vardef types) |
Type | Description |
---|---|
bool | true if the value if empty |
_getBooleanValue(
mixed $val
)
:
bool
Get truth value for boolean type Allows 'off' to mean false, along with all 'empty' values
Name | Type | Description |
---|---|---|
$val | mixed |
Type | Description |
---|---|
bool |
addColumn(
string $tablename, array $fieldDefs
)
:
bool
Adds a column to table identified by field def.
Name | Type | Description |
---|---|---|
$tablename | string | |
$fieldDefs | array |
Type | Description |
---|---|
bool | query result |
addColumnSQL(
string $tablename, array $fieldDefs
)
:
string
This method generates sql for adding a column to table identified by field def.
Name | Type | Description |
---|---|---|
$tablename | string | |
$fieldDefs | array |
Type | Description |
---|---|
string | SQL statement |
addDistinctClause(
string $sql
)
:
void
addDistinctClause This method takes a SQL statement and checks if the disable_count_query setting is enabled before altering it. The alteration modifies the way the team security queries are made by changing it from a subselect to a distinct clause; hence the name of the method.
Name | Type | Description |
---|---|---|
$sql | string | value of SQL statement to alter |
addIndexes(
string $tablename, array $indexes, bool $execute
=
true
)
:
string
Adds a new indexes
Name | Type | Description |
---|---|---|
$tablename | string | |
$indexes | array | indexes to add |
$execute | bool | true if we want to execute the returned sql statement |
Type | Description |
---|---|
string | SQL statement |
add_drop_constraint(
string $table, array $definition, bool $drop
=
false
)
:
string
Generates alter constraint statement given a table name and vardef definition.
Supports both adding and droping a constraint.
Name | Type | Description |
---|---|---|
$table | string | tablename |
$definition | array | field definition |
$drop | bool | true if we are dropping the constraint, false if we are adding it |
Type | Description |
---|---|
string | SQL statement |
alterColumn(
string $tablename, array $newFieldDef, bool $ignoreRequired
=
false
)
:
bool
Alters old column identified by oldFieldDef to new fieldDef.
Name | Type | Description |
---|---|---|
$tablename | string | |
$newFieldDef | array | |
$ignoreRequired | bool | optional, true if we are ignoring this being a required field |
Type | Description |
---|---|
bool | query result |
alterColumnSQL(
string $tablename, array $newFieldDefs, bool $ignorerequired
=
false
)
:
string | array
This method genrates sql for altering old column identified by oldFieldDef to new fieldDef.
Name | Type | Description |
---|---|---|
$tablename | string | |
$newFieldDefs | array | |
$ignorerequired | bool | Optional, true if we should ignor this being a required field |
Type | Description |
---|---|
string | array | SQL statement(s) |
arrayQuote(
array $array
)
:
array
Quote the strings of the passed in array
The array must only contain strings
Name | Type | Description |
---|---|---|
$array | array |
Type | Description |
---|---|
array | Quoted strings |
auditSQL(
\SugarBean $bean, array $changes
)
:
string
Generate query for audit table
Name | Type | Description |
---|---|---|
$bean | \SugarBean | SugarBean that was changed |
$changes | array | List of changes, contains 'before' and 'after' |
Type | Description |
---|---|
string | Audit table INSERT query |
canInstall(
)
:
mixed
Check special requirements for DB installation.
Type | Description |
---|---|
mixed |
- Abstract
- If everything is OK, return true. If something's wrong, return array of error code and parameters
changeColumnSQL(
string $tablename, array $fieldDefs, string $action, bool $ignoreRequired
=
false
)
:
string | array
Generates the SQL for changing columns
Name | Type | Description |
---|---|---|
$tablename | string | |
$fieldDefs | array | |
$action | string | |
$ignoreRequired | bool | Optional, true if we should ignor this being a required field |
Type | Description |
---|---|
string | array |
checkError(
string $msg
=
'', bool $dieOnError
=
false
)
:
bool
Checks for error happening in the database
Name | Type | Description |
---|---|---|
$msg | string | message to prepend to the error message |
$dieOnError | bool | true if we want to die immediately on error |
Type | Description |
---|---|
bool | True if there was an error |
checkPrivilege(
string $privilege
)
:
bool
Check if connecting user has certain privilege
Name | Type | Description |
---|---|---|
$privilege | string |
Type | Description |
---|---|
bool | Privilege allowed? |
checkQuery(
string $sql, bool $object_name
=
false
)
:
bool
Scans order by to ensure that any field being ordered by is.
It will throw a warning error to the log file - fatal if slow query logging is enabled
Name | Type | Description |
---|---|---|
$sql | string | query to be run |
$object_name | bool | optional, object to look up indices in |
Type | Description |
---|---|
bool | true if an index is found false otherwise |
columnSQLRep(
array $fieldDefs, bool $ignoreRequired
=
false, string $tablename
)
:
string
Returns SQL defintions for all columns in a table
Name | Type | Description |
---|---|---|
$fieldDefs | array | Vardef-format field def |
$ignoreRequired | bool | Optional, true if we should ignor this being a required field |
$tablename | string | Optional, table name |
Type | Description |
---|---|
string | SQL column definitions |
commit(
)
:
bool
Commits pending changes to the database when the driver is setup to support transactions.
Note that the default implementation is applicable for transaction-less or auto commit scenarios.
Type | Description |
---|---|
bool | true if commit succeeded, false if it failed |
- Abstract
compareFieldInTables(
string $name, string $table1, string $table2
)
:
array
Compare a field in two tables
Name | Type | Description |
---|---|---|
$name | string | field name |
$table1 | string | |
$table2 | string |
Type | Description |
---|---|
array | array with keys 'msg','table1','table2' |
- Deprecated
compareVarDefs(
array $fielddef1, array $fielddef2, bool $ignoreName
=
false
)
:
bool
Compares two vardefs
Name | Type | Description |
---|---|---|
$fielddef1 | array | This is from the database |
$fielddef2 | array | This is from the vardef |
$ignoreName | bool | Ignore name-only differences? |
Type | Description |
---|---|
bool | true if they match, false if they don't |
concat(
string $table, array $fields, string $space
=
' '
)
:
string
Returns the database string needed for concatinating multiple database strings together
Name | Type | Description |
---|---|---|
$table | string | table name of the database fields to concat |
$fields | array | fields in the table to concat together |
$space | string | Separator between strings, default is single space |
Type | Description |
---|---|
string |
connect(
array $configOptions
=
null, boolean $dieOnError
=
false
)
:
void
Connects to the database backend
Takes in the database settings and opens a database connection based on those will open either a persistent or non-persistent connection. If a persistent connection is desired but not available it will defualt to non-persistent
configOptions must include db_host_name - server ip db_user_name - database user name db_password - database password
Name | Type | Description |
---|---|---|
$configOptions | array | |
$dieOnError | boolean |
convert(
string $string, string $type, array $additional_parameters
=
array()
)
:
string
Use when you need to convert a database string to a different value; this function does it in a database-backend aware way Supported conversions: today return current date left Take substring from the left date_format Format date as string, supports %Y-%m-%d, %Y-%m, %Y time_format Format time as string date Convert date string to datetime value time Convert time string to datetime value datetime Convert datetime string to datetime value ifnull If var is null, use default value concat Concatenate strings quarter Quarter number of the date length Length of string month Month number of the date add_date Add specified interval to a date add_time Add time interval to a date text2char Convert text field to varchar
Name | Type | Description |
---|---|---|
$string | string | database string to convert |
$type | string | type of conversion to do |
$additional_parameters | array | optional, additional parameters to pass to the db function |
Type | Description |
---|---|
string |
createConstraintSql(
\SugarBean $bean
)
:
array
returns SQL to create constraints or indices
Name | Type | Description |
---|---|---|
$bean | \SugarBean | SugarBean instance |
Type | Description |
---|---|
array | list of SQL statements |
createDatabase(
string $dbname
)
:
void
Create a database
Name | Type | Description |
---|---|---|
$dbname | string |
createDbUser(
string $database_name, string $host_name, string $user, string $password
)
:
void
Create DB user
Name | Type | Description |
---|---|---|
$database_name | string | |
$host_name | string | |
$user | string | |
$password | string |
createIndex(
\SugarBean $bean, array $fieldDefs, string $name, bool $unique
=
true
)
:
bool
Creates an index identified by name on the given fields.
Name | Type | Description |
---|---|---|
$bean | \SugarBean | SugarBean instance |
$fieldDefs | array | Field definitions, in vardef format |
$name | string | index name |
$unique | bool | optional, true if we want to create an unique index |
Type | Description |
---|---|
bool | query result |
createIndexSQL(
\SugarBean $bean, array $fields, string $name, bool $unique
=
true
)
:
string
Generates SQL for create index statement for a bean.
Name | Type | Description |
---|---|---|
$bean | \SugarBean | SugarBean instance |
$fields | array | fields used in the index |
$name | string | index name |
$unique | bool | Optional, set to true if this is an unique index |
Type | Description |
---|---|
string | SQL Select Statement |
createTable(
\SugarBean $bean
)
:
void
Implements creation of a db table for a bean.
NOTE: does not handle out-of-table constraints, use createConstraintSQL for that
Name | Type | Description |
---|---|---|
$bean | \SugarBean | Sugarbean instance |
createTableParams(
string $tablename, array $fieldDefs, array $indices, string $engine
=
null
)
:
bool
Implements creation of a db table
Name | Type | Description |
---|---|---|
$tablename | string | |
$fieldDefs | array | Field definitions, in vardef format |
$indices | array | Index definitions, in vardef format |
$engine | string | Engine parameter, used for MySQL engine so far |
Type | Description |
---|---|
bool | success value |
- Todo
- : refactor engine param to be more generic
createTableSQL(
\SugarBean $bean
)
:
string
Generates sql for create table statement for a bean.
NOTE: does not handle out-of-table constraints, use createConstraintSQL for that
Name | Type | Description |
---|---|---|
$bean | \SugarBean | SugarBean instance |
Type | Description |
---|---|
string | SQL Create Table statement |
createTableSQLParams(
string $tablename, array $fieldDefs, array $indices
)
:
string
Generates sql for create table statement for a bean.
Name | Type | Description |
---|---|---|
$tablename | string | |
$fieldDefs | array | |
$indices | array |
Type | Description |
---|---|
string | SQL Create Table statement |
dbExists(
string $dbname
)
:
void
Check if certain database exists
Name | Type | Description |
---|---|---|
$dbname | string |
delete(
\SugarBean $bean, array $where
=
array()
)
:
bool
Implements a generic delete for any bean identified by id
Name | Type | Description |
---|---|---|
$bean | \SugarBean | Sugarbean instance |
$where | array | values with the keys as names of fields. If we want to pass multiple values for a name, pass it as an array If where is not passed, it defaults to id of table |
Type | Description |
---|---|
bool | query result |
deleteAutoIncrement(
string $table, string $field_name
)
:
void
Deletes an auto increment
Name | Type | Description |
---|---|---|
$table | string | tablename |
$field_name | string |
- Abstract
deleteColumn(
\SugarBean $bean, array $fieldDefs
)
:
bool
Deletes a column identified by fieldDef.
Name | Type | Description |
---|---|---|
$bean | \SugarBean | SugarBean containing the field |
$fieldDefs | array | Vardef definition of the field |
Type | Description |
---|---|
bool | query result |
deleteColumnSQL(
\SugarBean $bean, array $fieldDefs
)
:
string
This method generates sql that deletes a column identified by fieldDef.
Name | Type | Description |
---|---|---|
$bean | \SugarBean | Sugarbean instance |
$fieldDefs | array |
Type | Description |
---|---|
string | SQL statement |
deleteSQL(
\SugarBean $bean, array $where
)
:
string
Generates SQL for delete statement identified by id.
Name | Type | Description |
---|---|---|
$bean | \SugarBean | SugarBean instance |
$where | array | where conditions in an array |
Type | Description |
---|---|
string | SQL Update Statement |
describeField(
string $name, string $tablename
)
:
array
Returns the field description for a given field in table
Name | Type | Description |
---|---|---|
$name | string | |
$tablename | string |
Type | Description |
---|---|
array |
describeIndex(
string $name, string $tablename
)
:
array
Returns the index description for a given index in table
Name | Type | Description |
---|---|---|
$name | string | |
$tablename | string |
Type | Description |
---|---|
array |
disableKeys(
string $tableName
)
:
void
Disable keys on the table
Name | Type | Description |
---|---|---|
$tableName | string |
- Abstract
dropColumnSQL(
string $tablename, array $fieldDefs
)
:
string
This method generates sql that drops a column identified by fieldDef.
Designed to work like the other addColumnSQL() and alterColumnSQL() functions
Name | Type | Description |
---|---|---|
$tablename | string | |
$fieldDefs | array |
Type | Description |
---|---|
string | SQL statement |
dropDatabase(
string $dbname
)
:
void
Drop a database
Name | Type | Description |
---|---|---|
$dbname | string |
dropIndexes(
string $tablename, array $indexes, bool $execute
=
true
)
:
string
Drops indexes
Name | Type | Description |
---|---|---|
$tablename | string | |
$indexes | array | indexes to drop |
$execute | bool | true if we want to execute the returned sql statement |
Type | Description |
---|---|
string | SQL statement |
dropTable(
\SugarBean $bean
)
:
bool
Drops the table associated with a bean
Name | Type | Description |
---|---|---|
$bean | \SugarBean | SugarBean instance |
Type | Description |
---|---|
bool | query result |
dropTableName(
string $name
)
:
bool
Drops the table by name
Name | Type | Description |
---|---|---|
$name | string | Table name |
Type | Description |
---|---|
bool | query result |
dropTableNameSQL(
string $name
)
:
string
Generates SQL for dropping a table.
Name | Type | Description |
---|---|---|
$name | string | table name |
Type | Description |
---|---|
string | SQL statement |
dropTableSQL(
\SugarBean $bean
)
:
string
Generates SQL for dropping a table.
Name | Type | Description |
---|---|---|
$bean | \SugarBean | Sugarbean instance |
Type | Description |
---|---|
string | SQL statement |
dump_slow_queries(
string $query
)
:
boolean
This method is called by every method that runs a query.
If slow query dumping is turned on and the query time is beyond the time limit, we will log the query. This function may do additional reporting or log in a different area in the future.
Name | Type | Description |
---|---|---|
$query | string | query to log |
Type | Description |
---|---|
boolean | true if the query was logged, false otherwise |
emptyValue(
string $type
)
:
mixed
Return representation of an empty value depending on type The value is fully quoted, converted, etc.
Name | Type | Description |
---|---|---|
$type | string |
Type | Description |
---|---|
mixed | Empty value |
enableKeys(
string $tableName
)
:
void
Re-enable keys on the table
Name | Type | Description |
---|---|---|
$tableName | string |
- Abstract
escape_quote(
string $string
)
:
string
Quotes a string for storing in the database
Name | Type | Description |
---|---|---|
$string | string |
Type | Description |
---|---|
string |
- Deprecated
- Return value will be not surrounded by quotes
executePreparedQuery(
int $stmt, array $data
=
array()
)
:
resource
Takes a prepared stmt index and the data to replace and creates the query and runs it.
Name | Type | Description |
---|---|---|
$stmt | int | The index of the prepared statement from preparedTokens |
$data | array | The array of data to replace the tokens with. |
Type | Description |
---|---|
resource | result set or false on error |
extractTableName(
string $query
)
:
string
Extract table name from a query
Name | Type | Description |
---|---|---|
$query | string | SQL query |
Type | Description |
---|---|
string |
fetchByAssoc(
resource $result, bool $encode
=
true
)
:
array
Fetches the next row in the query result into an associative array
Name | Type | Description |
---|---|---|
$result | resource | |
$encode | bool | Need to HTML-encode the result? |
Type | Description |
---|---|
array | returns false if there are no more rows available to fetch |
fetchOne(
string $sql, bool $dieOnError
=
false, string $msg
=
'', bool $suppress
=
false
)
:
array
Runs a query and returns a single row
Name | Type | Description |
---|---|---|
$sql | string | SQL Statement to execute |
$dieOnError | bool | True if we want to call die if the query returns errors |
$msg | string | Message to log if error occurs |
$suppress | bool | Message to log if error occurs |
Type | Description |
---|---|
array | single row from the query |
fetchRow(
resource $result
)
:
array
Fetches the next row in the query result into an associative array
Name | Type | Description |
---|---|---|
$result | resource |
Type | Description |
---|---|
array | returns false if there are no more rows available to fetch |
freeDbResult(
resource $dbResult
)
:
void
Free Database result
Name | Type | Description |
---|---|---|
$dbResult | resource |
freeResult(
resource | bool $result
=
false
)
:
void
Frees out previous results
Name | Type | Description |
---|---|---|
$result | resource | bool | optional, pass if you want to free a single result instead of all results |
fromConvert(
string $string, string $type
)
:
string
Converts from Database data to app data
Supported types - date - time - datetime - datetimecombo - timestamp
Name | Type | Description |
---|---|---|
$string | string | database string to convert |
$type | string | type of conversion to do |
Type | Description |
---|---|
string |
full_text_indexing_installed(
)
:
bool
Check if the database supports fulltext indexing Note that database driver can be capable of supporting FT (see supports('fulltext)) but particular instance can still have it disabled
Type | Description |
---|---|
bool |
generateInsertSQL(
\SugarBean $bean, string $select_query, int $start, int $count
=
-1, string $table, bool $is_related_query
=
false
)
:
string
Generate a set of Insert statements based on the bean given
Name | Type | Description |
---|---|---|
$bean | \SugarBean | the bean from which table we will generate insert stmts |
$select_query | string | the query which will give us the set of objects we want to place into our insert statement |
$start | int | the first row to query |
$count | int | the number of rows to query |
$table | string | the table to query from |
$is_related_query | bool |
Type | Description |
---|---|
string | SQL insert statement |
- Deprecated
getAffectedRowCount(
resource $result
)
:
int
Returns the number of rows affected by the last query
Name | Type | Description |
---|---|---|
$result | resource | query result resource |
Type | Description |
---|---|
int |
- Abstract
- See also affected_rows capability, will return 0 unless the DB supports it
getAutoIncrement(
string $table, string $field_name
)
:
string
Returns the next value for an auto increment
Name | Type | Description |
---|---|---|
$table | string | Table name |
$field_name | string | Field name |
Type | Description |
---|---|
string |
- Abstract
getAutoIncrementSQL(
string $table, string $field_name
)
:
string
Returns the sql for the next value in a sequence
Name | Type | Description |
---|---|---|
$table | string | Table name |
$field_name | string | Field name |
Type | Description |
---|---|
string |
- Abstract
getCollationList(
)
:
array
List of available collation settings
Type | Description |
---|---|
array |
- Abstract
getColumnType(
string $type
)
:
string
Returns the valid type for a column given the type in fieldDef
Name | Type | Description |
---|---|---|
$type | string | field type |
Type | Description |
---|---|
string | valid type for the given field |
getColumnWhereClause(
string $table, array $whereArray
=
array()
)
:
string
Returns a where clause without the 'where' key word
The clause returned does not have an 'and' at the beginning and the columns are joined by 'and'.
Name | Type | Description |
---|---|---|
$table | string | table name |
$whereArray | array | Optional, where conditions in an array |
Type | Description |
---|---|
string |
getConstraintSql(
array $indices, string $table
)
:
array
returns a SQL query that creates the indices as defined in metadata
Name | Type | Description |
---|---|---|
$indices | array | Assoc array with index definitions from vardefs |
$table | string | Focus table |
Type | Description |
---|---|
array | Array of SQL queries to generate indices |
getDataChanges(
\SugarBean $bean
)
:
array
Uses the audit enabled fields array to find fields whose value has changed.
The before and after values are stored in the bean. Uses $bean->fetched_row to compare
Name | Type | Description |
---|---|---|
$bean | \SugarBean | Sugarbean instance that was changed |
Type | Description |
---|---|
array |
getDbInfo(
)
:
array | null
Get database configuration information (DB-dependent)
Type | Description |
---|---|
array | null |
getDefaultCollation(
)
:
string
List of available collation settings
Type | Description |
---|---|
string |
- Abstract
getFieldNameFromSelect(
string $string
)
:
string
returns the field name used in a select
Name | Type | Description |
---|---|---|
$string | string | SELECT query |
Type | Description |
---|---|
string |
getFieldType(
array $fieldDef
)
:
string
Returns the type of the variable in the field
Name | Type | Description |
---|---|---|
$fieldDef | array | Vardef-format field def |
Type | Description |
---|---|
string |
getFieldsArray(
resource $result, boolean $make_lower_case
=
false
)
:
array
Returns the description of fields based on the result
Name | Type | Description |
---|---|---|
$result | resource | |
$make_lower_case | boolean |
Type | Description |
---|---|
array | field array |
getFromDummyTable(
)
:
string
Returns a DB specific FROM clause which can be used to select against functions.
Note that depending on the database that this may also be an empty string.
Type | Description |
---|---|
string |
- Abstract
getFulltextQuery(
string $field, array $terms, array $must_terms
=
array(), array $exclude_terms
=
array()
)
:
void
Generate fulltext query from set of terms
Name | Type | Description |
---|---|---|
$field | string | Field to search against |
$terms | array | Search terms that may be or not be in the result |
$must_terms | array | Search terms that have to be in the result |
$exclude_terms | array | Search terms that have to be not in the result |
getGuidSQL(
)
:
string
Returns a DB specific piece of SQL which will generate GUID (UUID) This string can be used in dynamic SQL to do multiple inserts with a single query.
I.e. generate a unique Sugar id in a sub select of an insert statement.
Type | Description |
---|---|
string |
- Abstract
getHelper(
)
:
\DBManager
Returns this instance's DBHelper Actually now returns $this
Type | Description |
---|---|
\DBManager |
- Deprecated
getOne(
string $sql, bool $dieOnError
=
false, string $msg
=
''
)
:
array
Runs a query and returns a single row containing single value
Name | Type | Description |
---|---|---|
$sql | string | SQL Statement to execute |
$dieOnError | bool | True if we want to call die if the query returns errors |
$msg | string | Message to log if error occurs |
Type | Description |
---|---|
array | single value from the query |
getOption(
string $option
)
:
mixed
Get DB option by name
Name | Type | Description |
---|---|---|
$option | string | Option name |
Type | Description |
---|---|
mixed | Option value or null if doesn't exist |
getQueryCount(
)
:
int
Returns the static queryCount value
Type | Description |
---|---|
int | value of the queryCount static variable |
getRowCount(
resource $result
)
:
int
Returns the number of rows returned by the result
This function can't be reliably implemented on most DB, do not use it.
Name | Type | Description |
---|---|---|
$result | resource |
Type | Description |
---|---|
int |
- Abstract
- Deprecated
getScriptName(
)
:
string
Get DB driver name used for install/upgrade scripts
Type | Description |
---|---|
string |
getSelectFieldsFromQuery(
string $selectStatement
)
:
array
Take an SQL statement and produce a list of fields used in that select
Name | Type | Description |
---|---|---|
$selectStatement | string |
Type | Description |
---|---|
array |
getTableDescription(
string $tablename, bool $reload
=
false
)
:
array
Get table description
Name | Type | Description |
---|---|---|
$tablename | string | |
$reload | bool | true means load from DB, false allows using cache |
Type | Description |
---|---|
array | Vardef-format table description |
getTablesArray(
)
:
array | false
Returns an array of tables for this database
Type | Description |
---|---|
array | false | an array of with table names, false if no tables found |
getTypeParts(
string $type
)
:
array | bool
retrieves the different components from the passed column type as it is used in the type mapping and vardefs
type format:
Name | Type | Description |
---|---|---|
$type | string | Column type |
Type | Description |
---|---|
array | bool | array containing the different components of the passed in type or false in case the type contains illegal characters |
getValidDBName(
string | array $name, bool | string $ensureUnique
=
false, string $type
=
'column', bool $force
=
false
)
:
string | array
Return a version of $proposed that can be used as a column name in any of our supported databases Practically this means no longer than 25 characters as the smallest identifier length for our supported DBs is 30 chars for Oracle plus we add on at least four characters in some places (for indicies for example)
Name | Type | Description |
---|---|---|
$name | string | array | Proposed name for the column |
$ensureUnique | bool | string | Ensure the name is unique |
$type | string | Name type (table, column) |
$force | bool | Force new name |
Type | Description |
---|---|
string | array | Valid column name trimmed to right length and with invalid characters removed |
getWhereClause(
\SugarBean $bean, array $whereArray
=
array()
)
:
string
This method returns a complete where clause built from the where values specified.
Name | Type | Description |
---|---|---|
$bean | \SugarBean | SugarBean that describes the table |
$whereArray | array | Optional, where conditions in an array |
Type | Description |
---|---|
string |
get_columns(
string $tablename
)
:
array
Returns definitions of all indies for passed table.
return will is a multi-dimensional array that categorizes the index definition by types, unique, primary and index.
array (
'name' => 'field1',
'type' => 'varchar',
'len' => '200'
)
)
?>
This format is similar to how indicies are defined in vardef file.
Name | Type | Description |
---|---|---|
$tablename | string |
Type | Description |
---|---|
array |
get_indices(
string $tablename
)
:
array
Returns definitions of all indies for passed table.
return will is a multi-dimensional array that categorizes the index definition by types, unique, primary and index.
array (
'name' => 'index1',
'type' => 'primary',
'fields' => array('field1','field2')
)
)
?>
This format is similar to how indicies are defined in vardef file.
Name | Type | Description |
---|---|---|
$tablename | string |
Type | Description |
---|---|
array |
hasLimit(
string $sql
)
:
bool
Name | Type | Description |
---|---|---|
$sql | string |
Type | Description |
---|---|
bool |
- Abstract
- Check if query has LIMIT clause Relevant for now only for Mysql
insert(
\SugarBean $bean
)
:
bool
Implements a generic insert for any bean.
Name | Type | Description |
---|---|---|
$bean | \SugarBean | SugarBean instance |
Type | Description |
---|---|
bool | query result |
insertParams(
string $table, array $field_defs, array $data, array $field_map
=
null, bool $execute
=
true
)
:
bool
Insert data into table by parameter definition
Name | Type | Description |
---|---|---|
$table | string | Table name |
$field_defs | array | Definitions in vardef-like format |
$data | array | Key/value to insert |
$field_map | array | Fields map from SugarBean |
$execute | bool | Execute or return query? |
Type | Description |
---|---|
bool | query result |
insertSQL(
\SugarBean $bean
)
:
string
Generates SQL for insert statement.
Name | Type | Description |
---|---|---|
$bean | \SugarBean | SugarBean instance |
Type | Description |
---|---|
string | SQL Create Table statement |
installConfig(
)
:
array
Get install configuration for this DB
Type | Description |
---|---|
array |
isBooleanType(
string $type
)
:
bool
Check if type is boolean
Name | Type | Description |
---|---|---|
$type | string |
Type | Description |
---|---|
bool |
isDatabaseNameValid(
string $name
)
:
bool
Check if this DB name is valid
Name | Type | Description |
---|---|---|
$name | string |
Type | Description |
---|---|
bool |
isFieldArray(
mixed $defArray
)
:
bool
Checks to see if passed array is truely an array of defitions
Such an array may have type as a key but it will point to an array for a true array of definitions an to a col type for a definition only
Name | Type | Description |
---|---|---|
$defArray | mixed |
Type | Description |
---|---|
bool |
isNullable(
array $vardef
)
:
bool
Can this field be null? Auto-increment and ID fields can not be null
Name | Type | Description |
---|---|---|
$vardef | array |
Type | Description |
---|---|
bool |
isNumericType(
string $type
)
:
bool
Check if type is a number
Name | Type | Description |
---|---|---|
$type | string |
Type | Description |
---|---|
bool |
isSelect(
string $query
)
:
bool
Check if the query is a select query
Name | Type | Description |
---|---|---|
$query | string |
Type | Description |
---|---|
bool | Is query SELECT? |
isTextType(
string $type
)
:
bool
Name | Type | Description |
---|---|---|
$type | string |
Type | Description |
---|---|
bool |
- Abstract
- Does this type represent text (i.e., non-varchar) value?
lastDbError(
)
:
string | false
Get last database error This function should return last error as reported by DB driver and should return false if no error condition happened
Type | Description |
---|---|
string | false | Error message or false if no error happened |
lastError(
)
:
string
Return DB error message for the last query executed
Type | Description |
---|---|
string | Last error message |
limitQuery(
string $sql, int $start, int $count, boolean $dieOnError
=
false, string $msg
=
'', bool $execute
=
true
)
:
resource
Runs a limit query: one where we specify where to start getting records and how many to get
Name | Type | Description |
---|---|---|
$sql | string | SELECT query |
$start | int | Starting row |
$count | int | How many rows |
$dieOnError | boolean | True if we want to call die if the query returns errors |
$msg | string | Message to log if error occurs |
$execute | bool | Execute or return SQL? |
Type | Description |
---|---|
resource | query result |
limitQuerySql(
string $sql, int $start, int $count, bool $dieOnError
=
false, string $msg
=
''
)
:
resource | bool
Return limit query based on given query
Name | Type | Description |
---|---|---|
$sql | string | |
$start | int | |
$count | int | |
$dieOnError | bool | |
$msg | string |
Type | Description |
---|---|
resource | bool | query result |
massageFieldDef(
array $fieldDef, string $tablename
)
:
array
Massages the field defintions to fill in anything else the DB backend may add
Name | Type | Description |
---|---|---|
$fieldDef | array | |
$tablename | string |
Type | Description |
---|---|
array |
massageValue(
mixed $val, array $fieldDef
)
:
mixed
Outputs a correct string for the sql statement according to value
Name | Type | Description |
---|---|---|
$val | mixed | |
$fieldDef | array | field definition |
Type | Description |
---|---|
mixed |
modifyIndexes(
string $tablename, array $indexes, bool $execute
=
true
)
:
string
Modifies indexes
Name | Type | Description |
---|---|---|
$tablename | string | |
$indexes | array | indexes to modify |
$execute | bool | true if we want to execute the returned sql statement |
Type | Description |
---|---|
string | SQL statement |
now(
)
:
string
Return current time in format fit for insertion into DB (with quotes)
Type | Description |
---|---|
string |
number_of_columns(
string $table_name
)
:
int
Returns the number of columns in a table
Name | Type | Description |
---|---|---|
$table_name | string |
Type | Description |
---|---|
int |
oneColumnSQLRep(
array $fieldDef, bool $ignoreRequired
=
false, string $table
=
'', bool $return_as_array
=
false
)
:
string
Returns the defintion for a single column
Name | Type | Description |
---|---|---|
$fieldDef | array | Vardef-format field def |
$ignoreRequired | bool | Optional, true if we should ignore this being a required field |
$table | string | Optional, table name |
$return_as_array | bool | Optional, true if we should return the result as an array instead of sql |
Type | Description |
---|---|
string | or array if $return_as_array is true |
orderByEnum(
string $order_by, array $values, string $order_dir
)
:
string
Create ORDER BY clause for ENUM type field
Name | Type | Description |
---|---|---|
$order_by | string | Field name |
$values | array | Possible enum value |
$order_dir | string | Order direction, ASC or DESC |
Type | Description |
---|---|
string |
pQuery(
string $sql, array $data
=
array()
)
:
resource
Run both prepare and execute without the client having to run both individually.
Name | Type | Description |
---|---|---|
$sql | string | The sql to parse |
$data | array | The array of data to replace the tokens with. |
Type | Description |
---|---|
resource | result set or false on error |
parseFulltextQuery(
string $query
)
:
array
Parse fulltext search query with mysql syntax: terms quoted by "" + means the term must be included - means the term must be excluded * or % at the end means wildcard
Name | Type | Description |
---|---|---|
$query | string |
Type | Description |
---|---|
array | of 3 elements - query terms, mandatory terms and excluded terms |
prepareQuery(
string $sql
)
:
int
Given a sql stmt attempt to parse it into the sql and the tokens. Then return the index of this prepared statement Tokens can come in the following forms: ? - a scalar which will be quoted ! - a literal which will not be quoted & - binary data to read from a file
Name | Type | Description |
---|---|---|
$sql | string | The sql to parse |
Type | Description |
---|---|
int | index of the prepared statement to be used with execute |
query(
string $sql, bool $dieOnError
=
false, string $msg
=
'', bool $suppress
=
false, bool $keepResult
=
false
)
:
resource | bool
Parses and runs queries
Name | Type | Description |
---|---|---|
$sql | string | SQL Statement to execute |
$dieOnError | bool | True if we want to call die if the query returns errors |
$msg | string | Message to log if error occurs |
$suppress | bool | Flag to suppress all error output unless in debug logging mode. |
$keepResult | bool | Keep query result in the object? |
Type | Description |
---|---|
resource | bool | result set or success/failure bool |
queryArray(
array $sqls, bool $dieOnError
=
false, string $msg
=
'', bool $suppress
=
false
)
:
resource | bool
Execute multiple queries one after another
Name | Type | Description |
---|---|---|
$sqls | array | Queries |
$dieOnError | bool | Die on error, passed to query() |
$msg | string | Error message, passed to query() |
$suppress | bool | Supress errors, passed to query() |
Type | Description |
---|---|
resource | bool | result set or success/failure bool |
quote(
string $string
)
:
string
Quote string in DB-specific manner
Name | Type | Description |
---|---|---|
$string | string |
Type | Description |
---|---|
string |
quoteFormEmail(
string $string
)
:
string
Quotes a string for storing in the database
Name | Type | Description |
---|---|---|
$string | string |
Type | Description |
---|---|
string |
- Deprecated
- Return value will be not surrounded by quotes
quoteType(
string $type, string $value
)
:
string
Quote value according to type Numerics aren't quoted Dates are converted and quoted Rest is just quoted
Name | Type | Description |
---|---|---|
$type | string | |
$value | string |
Type | Description |
---|---|
string | Quoted value |
quoted(
string $string
)
:
string
Return string properly quoted with ''
Name | Type | Description |
---|---|---|
$string | string |
Type | Description |
---|---|
string |
registerError(
string $userMessage, string $message, bool $dieOnError
=
false
)
:
void
Register database error If die-on-error flag is set, logs the message and dies, otherwise sets last_error to the message
Name | Type | Description |
---|---|---|
$userMessage | string | Message from function user |
$message | string | Message from SQL driver |
$dieOnError | bool |
renameColumnSQL(
string $tablename, string $column, string $newname
)
:
void
Rename column in the DB
Name | Type | Description |
---|---|---|
$tablename | string | |
$column | string | |
$newname | string |
renameIndexDefs(
array $old_definition, array $new_definition, string $table_name
)
:
string
Renames an index using fields definition
Name | Type | Description |
---|---|---|
$old_definition | array | |
$new_definition | array | |
$table_name | string |
Type | Description |
---|---|
string | SQL statement |
repairTable(
\SugarBean $bean, bool $execute
=
true
)
:
string
Implements repair of a db table for a bean.
Name | Type | Description |
---|---|---|
$bean | \SugarBean | SugarBean instance |
$execute | bool | true if we want the action to take place, false if we just want the sql returned |
Type | Description |
---|---|
string | SQL statement or empty string, depending upon $execute |
repairTableParams(
string $tablename, array $fielddefs, array $indices, bool $execute
=
true, string $engine
=
null
)
:
string
Builds the SQL commands that repair a table structure
Name | Type | Description |
---|---|---|
$tablename | string | |
$fielddefs | array | Field definitions, in vardef format |
$indices | array | Index definitions, in vardef format |
$execute | bool | optional, true if we want the queries executed instead of returned |
$engine | string | optional, MySQL engine |
Type | Description |
---|---|
string |
- Todo
- : refactor engine param to be more generic
retrieve(
\SugarBean $bean, array $where
=
array()
)
:
resource
Implements a generic retrieve for any bean identified by id
If we want to pass multiple values for a name, pass it as an array If where is not passed, it defaults to id of table
Name | Type | Description |
---|---|---|
$bean | \SugarBean | Sugarbean instance |
$where | array | values with the keys as names of fields. |
Type | Description |
---|---|
resource | result from the query |
retrieveSQL(
\SugarBean $bean, array $where
)
:
string
Generates SQL for select statement for any bean identified by id.
Name | Type | Description |
---|---|---|
$bean | \SugarBean | SugarBean instance |
$where | array | where conditions in an array |
Type | Description |
---|---|
string | SQL Select Statement |
retrieveView(
array $beans, array $cols
=
array(), array $where
=
array()
)
:
resource
Implements a generic retrieve for a collection of beans.
These beans will be joined in the sql by the key attribute of field defs. Currently, this function does support outer joins.
Name | Type | Description |
---|---|---|
$beans | array | Sugarbean instance(s) |
$cols | array | columns to be returned with the keys as names of bean as identified by get_class of bean. Values of this array is the array of fieldDefs to be returned for a bean. If an empty array is passed, all columns are selected. |
$where | array | values with the keys as names of bean as identified by get_class of bean Each value at the first level is an array of values for that bean identified by name of fields. If we want to pass multiple values for a name, pass it as an array If where is not passed, all the rows will be returned. |
Type | Description |
---|---|
resource |
retrieveViewSQL(
array $beans, array $cols
=
array(), array $whereClause
=
array()
)
:
string
This method implements a generic sql for a collection of beans.
Currently, this function does not support outer joins.
Name | Type | Description |
---|---|---|
$beans | array | Array of values returned by get_class method as the keys and a bean as the value for that key. These beans will be joined in the sql by the key attribute of field defs. |
$cols | array | Optional, columns to be returned with the keys as names of bean as identified by get_class of bean. Values of this array is the array of fieldDefs to be returned for a bean. If an empty array is passed, all columns are selected. |
$whereClause | array | Optional, values with the keys as names of bean as identified by get_class of bean. Each value at the first level is an array of values for that bean identified by name of fields. If we want to pass multiple values for a name, pass it as an array. If where is not passed, all the rows will be returned. |
Type | Description |
---|---|
string | SQL Select Statement |
rollback(
)
:
bool
Rollsback pending changes to the database when the driver is setup to support transactions.
Note that the default implementation is applicable for transaction-less or auto commit scenarios. Since rollbacks cannot be done, this implementation always returns false.
Type | Description |
---|---|
bool | true if rollback succeeded, false if it failed |
- Abstract
save_audit_records(
\SugarBean $bean, array $changes
)
:
bool
Saves changes to module's audit table
Name | Type | Description |
---|---|---|
$bean | \SugarBean | Sugarbean instance that was changed |
$changes | array | List of changes, contains 'before' and 'after' |
Type | Description |
---|---|
bool | query result |
setAutoIncrement(
string $table, string $field_name
)
:
string
Either creates an auto increment through queries or returns sql for auto increment that can be appended to the end of column defination (mysql)
Name | Type | Description |
---|---|---|
$table | string | Table name |
$field_name | string | Field name |
Type | Description |
---|---|
string |
- Abstract
setAutoIncrementStart(
string $table, string $field_name, int $start_value
)
:
string
Sets the next auto-increment value of a column to a specific value.
Name | Type | Description |
---|---|---|
$table | string | Table name |
$field_name | string | Field name |
$start_value | int | Starting autoincrement value |
Type | Description |
---|---|
string |
- Abstract
setDieOnError(
bool $value
)
:
void
Sets the dieOnError value
Name | Type | Description |
---|---|---|
$value | bool |
setOptions(
array $options
)
:
\DBManager
Set database options Options are usually db-dependant and derive from $config['dbconfigoption']
Name | Type | Description |
---|---|---|
$options | array |
Type | Description |
---|---|
\DBManager |
setQueryLimit(
int $limit
)
:
void
This function sets the query threshold limit
Name | Type | Description |
---|---|---|
$limit | int | value of query threshold limit |
supports(
string $cap
)
:
bool
Check if this DB supports certain capability See $this->capabilities for the list
Name | Type | Description |
---|---|---|
$cap | string |
Type | Description |
---|---|
bool |
tableExists(
string $tableName
)
:
bool
Checks if a table with the name $tableName exists and returns true if it does or false otherwise
Name | Type | Description |
---|---|---|
$tableName | string |
Type | Description |
---|---|
bool |
tablesLike(
string $like
)
:
array
Get tables like expression
Name | Type | Description |
---|---|---|
$like | string | Expression describing tables |
Type | Description |
---|---|
array |
track_slow_queries(
string $query
)
:
void
Tracks slow queries in the tracker database table
Name | Type | Description |
---|---|---|
$query | string | value of query to track |
truncate(
string $string, int $len
)
:
string
Truncates a string to a given length
Name | Type | Description |
---|---|---|
$string | string | |
$len | int | length to trim to |
Type | Description |
---|---|
string |
truncateTableSQL(
string $name
)
:
string
Generates SQL for truncating a table.
Name | Type | Description |
---|---|---|
$name | string | table name |
Type | Description |
---|---|
string |
update(
\SugarBean $bean, array $where
=
array()
)
:
bool
Implements a generic update for any bean
Name | Type | Description |
---|---|---|
$bean | \SugarBean | Sugarbean instance |
$where | array | values with the keys as names of fields. If we want to pass multiple values for a name, pass it as an array If where is not passed, it defaults to id of table |
Type | Description |
---|---|
bool | query result |
updateSQL(
\SugarBean $bean, array $where
=
array()
)
:
string
Generates SQL for update statement.
Name | Type | Description |
---|---|---|
$bean | \SugarBean | SugarBean instance |
$where | array | Optional, where conditions in an array |
Type | Description |
---|---|
string | SQL Create Table statement |
updateWhereArray(
\SugarBean $bean, array $where
=
array()
)
:
array
This method returns a where array so that it has id entry if where is not an array or is empty
Name | Type | Description |
---|---|---|
$bean | \SugarBean | SugarBean instance |
$where | array | Optional, where conditions in an array |
Type | Description |
---|---|
array |
userExists(
string $username
)
:
void
Check if certain DB user exists
Name | Type | Description |
---|---|---|
$username | string |
validColumnType(
string $type
)
:
bool
returns true if the type can be mapped to a valid column type
Name | Type | Description |
---|---|---|
$type | string |
Type | Description |
---|---|
bool |
validateQuery(
string $query
)
:
bool
Check if this query is valid Validates only SELECT queries
Name | Type | Description |
---|---|---|
$query | string |
Type | Description |
---|---|
bool |
verifyCreateTable(
string $table, string $query
)
:
string
Tests an CREATE TABLE query
Name | Type | Description |
---|---|---|
$table | string | The table name to get DDL |
$query | string | The query to test. |
Type | Description |
---|---|
string | Non-empty if error found |
verifySQLStatement(
string $query, array $skipTables
)
:
string
Verify SQl statement using per-DB verification function provided the function exists
Name | Type | Description |
---|---|---|
$query | string | Query to verify |
$skipTables | array | List of blacklisted tables that aren't checked |
Type | Description |
---|---|
string |