## For SQLite

The following limitations apply to SQLite databases accessed via Libgda:

### Last inserted row's values

The gda_connection_statement_execute_non_select()'s last_insert_row attribute uses the hidden "_ROWID_" column for each table, but it may fail if the table has a column with the same name.

### Date and time

As SQLite stores dates and times as strings, Libgda only handles dates in the format recommended by SQLite, which is "YYYY-MM-DD" for dates, "HH:MM:SS" for times and "YYYY-MM-DD HH:MM:SS" for timestamps (see SQLite's documentation).

### Timezone information

Timezone information associated with time and timestamp data types is not stored by PostgreSQL, so when executing statements all the variables containing a time or timestamp information are converted to GMT (timezone 0) before the execution happens. The consequence is that for example if a variable holds the "11:23:55+2" time (11 hours, 23 minutes and 55 seconds, at GMT + 2), then the actual time stored in the database will be "09:23:55", the same time but GMT.

### Multi threaded environment

No limitation if sqlite has been compiled with the SQLITE_THREADSAFE=1 flag (which is the case for the embedded version of SQLite). If the system installed SQLite is used and if it was not compiled using that flag, then Libgda sets the SQLite library in a state where multi threading is fully supported.

### Error reporting

If there is not enough free space on the disk which stores an SQLite database, you may have some "Disk I/O error" errors. This is also true for meta data connections which are by default created in a temporary location.