## For SQLite

The following arguments are used to connect to an SQLite database:

Table 2.

Argument name | Description | Required
--- | --- | ---
DB_NAME | Name of the database. This should be the name of the database file without the ".db" extension. However when opening a database, if a file named after the DB_NAME value exists then it is used (so beware, for example if DB_NAME is set to "mydb" and a file named "mydb" exists but is not an SQLite database, then an error will occur). Using the ":memory:" database name will result in a database residing purely in memory, the database ceases to exist as soon as the database connection is closed (every memory database is distinct from every other); refer to SQLite's in memory databases for more information. | Yes
APPEND_DB_EXTENSION | Defines if the '.db' extension need to be appended to the name of the database. Defaults to TRUE if not specified. | No
DB_DIR | The directory where the database file is; if not specified, the current working directory is used. | No
EXTRA_FUNCTIONS | If set to TRUE (or unspecified), then some extra functions defined by Libgda are added. The functions are: `gda_file_exists()`, `gda_hex_print()`, `gda_hex()`, `gda_rmdiacr()`, `gda_lower()` and `gda_upper()`; see below for more information about them. | No
EXTRA_COLLATIONS | If set to TRUE (or unspecified), then some extra collations defined by Libgda are added. They are: `LOCALE` (the strings are compared taking into account UTF8 sorting and the current locale) and `DCASE` (before comparison, all the diacritical signs (for example accents) are removed from the strings and they are converted to lower case). | No
REGEXP | If set to TRUE (or unspecified), then the `regexp()` and `regexp_match()` functions are defined. The `regexp()` function is used by SQL statement with a construct as "x REGEXP y", and the `regexp_match()` is more general. The default for this option is TRUE. See below for more information about this function. | No
FK | Defines if foreign keys are enforced, by default, they are. | No
EXTENSIONS | Defines if SQLite extensions are allowed to be loaded, using the load_extension() function, default is to deny loading extensions. | No

### The `gda_file_exists()` function

This function accepts a filename as argument, and returns 0 if the file with that filename does not exist, or 1 if it does.

### The `gda_hex_print()` function

This function accepts at most 2 arguments, in that order:

- a blob value

- a length (not mandatory)

It returns a string suitable to be printed (where all the non ascii characters are converted to the "\xyz" syntax where "xyz" is the decimal value of the character), limited to the specified length if any.

### The `gda_hex()` function

This function accepts at most 2 arguments, in that order:

- a blob value

- a length (not mandatory)

It returns a hex dump string of the blob value, limited to the specified length if any.

### The `gda_rmdiacr()` function

This function accepts at most 2 arguments, in that order:

- a string value

- a case conversion to do (not mandatory), as a string which must be 'upper' or 'lower'

It returns a string where all the diacritical signs (for example accents) from the input string, and optionally converts the string to upper or lower case if specified. This function takes into account the current locale and is useful to do some text search.

### The `gda_upper()` and `gda_lower()` functions

These function accept one string argument and convert it to upper or lower case, taking into account the locale (the standard SQLite `upper()` and `lower()` functions only operating on ASCII characters).

### The `regexp_match()` function

This function accepts at most 3 arguments, in that order:

- the string on which the regular expression will be applied

- the regular expression to apply

- the options (not mandatory)

The options are specified as a string where each character corresponds to a boolean flag (the presence of the character meaning the flag is set). They are:

- 'i': specifies a case insensitive matching

- 'm': specifies that the the "start of line" and "end of line" constructs match immediately following or immediately before any newline in the string, respectively, as well as at the very start and end of the string

- 'v': specifies that instead of returning 0 or 1 as a result for matching or non matching, the function returns the string which actually matches, or NULL if not match was found

This function is implemented using GLib's Perl-compatible regular expressions implementation: GRegex, itself based on the PCRE library.

Also refer to the SQLite's provider's limitations.