You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+10-10Lines changed: 10 additions & 10 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -36,11 +36,11 @@ Features
36
36
- Support Bulk `INSERT` by using `batch_size` option
37
37
- Support `INSERT`/`UPDATE` with generated column
38
38
- Support `ON CONFLICT DO NOTHING`
39
-
- Support mixed SQLite [data affinity](https://www.sqlite.org/datatype3.html) input and filtering (`SELECT`/`WHERE` usage) for such dataypes as
39
+
- Support mixed SQLite [data affinity](https://www.sqlite.org/datatype3.html) input and filtering (`SELECT`/`WHERE` usage) for such data types as
40
40
- `timestamp`: `text` and `int`,
41
41
- `uuid`: `text`(32..39) and `blob`(16),
42
42
- `bool`: `text`(1..5) and `int`.
43
-
- Support mixed SQLite [data affinity](https://www.sqlite.org/datatype3.html) output (`INSERT`/`UPDATE`) for such dataypes as
43
+
- Support mixed SQLite [data affinity](https://www.sqlite.org/datatype3.html) output (`INSERT`/`UPDATE`) for such data types as
44
44
- `timestamp`: `text`(default) or `int`,
45
45
- `uuid`: `text`(36) or `blob`(16)(default).
46
46
@@ -55,7 +55,7 @@ Features
55
55
-`mod()` is pushdowned. In PostgreSQL gives [argument-dependend data type](https://www.postgresql.org/docs/current/functions-math.html), but result from SQLite always [have `real` affinity](https://www.sqlite.org/lang_mathfunc.html#mod).
56
56
-`upper`, `lower` and other character case functions are **not** pushed down because they does not work with UNICODE character in SQLite.
57
57
-`WITH TIES` option is **not** pushed down.
58
-
- Bit string `#` (XOR) operator is **not** pushed down becasuse there is no equal SQLite operator.
58
+
- Bit string `#` (XOR) operator is **not** pushed down because there is no equal SQLite operator.
59
59
60
60
### Notes about pushdowning
61
61
@@ -69,7 +69,7 @@ Features
69
69
- For `numeric` data type, `sqlite_fdw` use `sqlite3_column_double` to get value, while SQLite shell uses `sqlite3_column_text` to get value. Those 2 APIs may return different numeric value. Therefore, for `numeric` data type, the value returned from `sqlite_fdw` may different from the value returned from SQLite shell.
70
70
-`sqlite_fdw` can return implementation-dependent order for column if the column is not specified in `ORDER BY` clause.
71
71
- When the column type is `varchar array`, if the string is shorter than the declared length, values of type character will be space-padded; values of type `character varying` will simply store the shorter string.
72
-
-[String literals for `boolean`](https://www.postgresql.org/docs/current/datatype-boolean.html) (`t`, `f`, `y`, `n`, `yes`, `no`, `on`, `off` etc. case insensetive) can be readed and filtred but cannot writed, because SQLite documentation recommends only `int` affinity values (`0` or `1`) for boolean data and usually text boolean data belongs to legacy datasets.
72
+
-[String literals for `boolean`](https://www.postgresql.org/docs/current/datatype-boolean.html) (`t`, `f`, `y`, `n`, `yes`, `no`, `on`, `off` etc. case insensitive) can be readed and filtred but cannot writed, because SQLite documentation recommends only `int` affinity values (`0` or `1`) for boolean data and usually text boolean data belongs to legacy datasets.
73
73
74
74
Also see [Limitations](#limitations)
75
75
@@ -227,7 +227,7 @@ In OS `sqlite_fdw` works as executed code with permissions of user of PostgreSQL
227
227
in SQLite (mixed affinity case). Updated and inserted values will have this affinity. Default preferred SQLite affinity for `timestamp` and `uuid` PostgreSQL data types is `text`.
228
228
229
229
- Use `INT` value for SQLite column (epoch Unix Time) to be treated/visualized as `timestamp` in PostgreSQL.
230
-
- Use `BLOB` value for SQLite column to be treated/visualized as `uuid` in PostgreSQL 14+.
230
+
- Use `BLOB` value for SQLite column to be treated/visualized as `uuid`.
231
231
232
232
-**key** as *boolean*, optional, default *false*
233
233
@@ -300,7 +300,7 @@ sqlite_fdw_version
300
300
Identifier case handling
301
301
------------------------
302
302
303
-
PostgreSQL folds identifiers to lower case by default, SQLite is case insensetive by default
303
+
PostgreSQL folds identifiers to lower case by default, SQLite is case insensitive by default
304
304
and doesn't differ uppercase and lowercase ASCII base latin letters. It's important
305
305
to be aware of potential issues with table and column names.
306
306
@@ -533,7 +533,7 @@ Limitations
533
533
- For `sum` function of SQLite, output of `sum(bigint)` is `integer` value. If input values are big, the overflow error may occurs on SQLite because it overflow within the range of signed 64bit. For PostgreSQL, it can calculate as over the precision of `bigint`, so overflow does not occur.
534
534
- SQLite promises to preserve the 15 most significant digits of a floating point value. The big value which exceed 15 most significant digits may become different value after inserted.
535
535
- SQLite does not support `numeric` type as PostgreSQL. Therefore, it does not allow to store numbers with too high precision and scale. Error out of range occurs.
536
-
- SQLite does not support special values for IEEE 754-2008 numbers such as `NaN`, `+Infinity` and `-Infinity` in SQL expressions with numeric context. Also SQLite can not store this values with `real`[affinity](https://www.sqlite.org/datatype3.html). In opposite to SQLite, PostgreSQL can store special values in columns belongs to `real` datatype family such as `float` or `double precision` and use arithmetic comparation for this values. In oppose to PostgreSQL, SQLite stores `NaN`, `+Infinity` and `-Infinity` as a text values. Also conditions with special literals (such as ` n < '+Infinity'` or ` m > '-Infinity'` ) isn't numeric conditions in SQLite and gives unexpected result after pushdowning in oppose to internal PostgreSQL calculations. During `INSERT INTO ... SELECT` or in `WHERE` conditions `sqlite_fdw` uses given by PostgreSQL standard case sensetive literals **only** in follow forms: `NaN`, `-Infinity`, `Infinity`, not original strings from `WHERE` condition. *This can caused selecting issues*.
536
+
- SQLite does not support special values for IEEE 754-2008 numbers such as `NaN`, `+Infinity` and `-Infinity` in SQL expressions with numeric context. Also SQLite can not store this values with `real`[affinity](https://www.sqlite.org/datatype3.html). In opposite to SQLite, PostgreSQL can store special values in columns belongs to `real` datatype family such as `float` or `double precision` and use arithmetic comparation for this values. In oppose to PostgreSQL, SQLite stores `NaN`, `+Infinity` and `-Infinity` as a text values. Also conditions with special literals (such as ` n < '+Infinity'` or ` m > '-Infinity'` ) isn't numeric conditions in SQLite and gives unexpected result after pushdowning in oppose to internal PostgreSQL calculations. During `INSERT INTO ... SELECT` or in `WHERE` conditions `sqlite_fdw` uses given by PostgreSQL standard case sensitive literals **only** in follow forms: `NaN`, `-Infinity`, `Infinity`, not original strings from `WHERE` condition. *This can caused selecting issues*.
537
537
538
538
### Boolean values
539
539
-`sqlite_fdw` boolean values support exists only for `bool` columns in foreign table. SQLite documentation recommends to store boolean as value with `integer`[affinity](https://www.sqlite.org/datatype3.html). `NULL` isn't converted, 1 converted to `true`, all other `NOT NULL` values converted to `false`. During `SELECT ... WHERE condition_column` condition converted only to `condition_column`.
@@ -542,17 +542,17 @@ Limitations
542
542
### UUID values
543
543
-`sqlite_fdw` UUID values support exists only for `uuid` columns in foreign table. SQLite documentation recommends to store UUID as value with both `blob` and `text`[affinity](https://www.sqlite.org/datatype3.html). `sqlite_fdw` can pushdown both reading and filtering both `text` and `blob` values.
544
544
- Expected affinity of UUID value in SQLite table determined by `column_type` option of the column
545
-
for `INSERT` and `UPDATE` commands. In PostgreSQL 14- only `text` data affinity is availlable, PostgreSQL 14+ supports also `blob` data affinity.
545
+
for `INSERT` and `UPDATE` commands. PostgreSQL supports both `blob` and `text`[affinity](https://www.sqlite.org/datatype3.html).
546
546
547
547
### bit and varbit support
548
548
-`sqlite_fdw` PostgreSQL `bit`/`varbit` values support based on `int` SQLite data affinity, because there is no per bit operations for SQLite `blob` affinity data. Maximum SQLite `int` affinity value is 8 bytes length, hence maximum `bit`/`varbit` values length is 64 bits.
549
-
-`sqlite_fdw` doesn't pushdown `#` (XOR) operator becasuse there is no equal SQLite operator.
549
+
-`sqlite_fdw` doesn't pushdown `#` (XOR) operator because there is no equal SQLite operator.
0 commit comments