Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bump body-parser and express in /examples/mysql-proxy #24

Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
160 commits
Select commit Hold shift + click to select a range
443df39
created singlestore-core and singlestore driver
Rodriguespn Jul 23, 2024
57e0dc3
change 'json_array' to 'json_to_array'
Rodriguespn Jul 23, 2024
e10136e
add bson type
Rodriguespn Jul 23, 2024
6c177c9
Renamed mysql to singlestore in singlestore-core
drodrigues4 Jul 23, 2024
78bd04e
Merge pull request #2 from singlestore-labs/the-great-renaming
drodrigues4 Jul 23, 2024
7e1133f
test actions
drodrigues4 Jul 23, 2024
f7f75e4
add uuid column
mitchwadair Jul 23, 2024
ce7c09e
add guid
mitchwadair Jul 23, 2024
783fc76
add override tag to `build`
mitchwadair Jul 23, 2024
dd8b12a
more actions tests
drodrigues4 Jul 23, 2024
21529bb
release to github
drodrigues4 Jul 23, 2024
2783479
add vector data type, operator experessions
mitchwadair Jul 23, 2024
5bce7e5
nits
drodrigues4 Jul 23, 2024
f7068dc
nits
drodrigues4 Jul 23, 2024
ab00e2a
add geographypoint type
mitchwadair Jul 23, 2024
0c14e0f
Push to NPM instead
drodrigues4 Jul 23, 2024
da0f7e4
Corrected version
drodrigues4 Jul 24, 2024
23aa8d2
Removed foreign keys
drodrigues4 Jul 24, 2024
d4e4045
Disallow INTERSECT ALL and EXCEPT ALL; Allow MINUS
drodrigues4 Jul 24, 2024
1ed0d80
Removed more stuff of foreign keys
drodrigues4 Jul 24, 2024
2903d1a
Build fork when pushing to main
drodrigues4 Jul 24, 2024
2df9688
Changed name of version var
drodrigues4 Jul 24, 2024
4b186e6
fixed action
drodrigues4 Jul 24, 2024
b42d3cb
Added detach
drodrigues4 Jul 24, 2024
da7e81f
Renamed driver
drodrigues4 Jul 24, 2024
f662fb4
Fixed detach
drodrigues4 Jul 24, 2024
4a15249
Added attach
drodrigues4 Jul 24, 2024
b9dccbe
Differentiate rowstore and columnstore on creation and block btree in…
tiagoacastro Jul 24, 2024
00ee412
Formatted files
tiagoacastro Jul 24, 2024
92268c1
Make index types difference clearer
tiagoacastro Jul 24, 2024
c88a60a
Apparently ATTACH does not support prepared statements, so we give th…
drodrigues4 Jul 24, 2024
b6a7853
Added ATTACH AT TIME
drodrigues4 Jul 24, 2024
6a73e72
Added ATTACH AS
drodrigues4 Jul 24, 2024
94df1b3
Trying another approach for type checking index input
tiagoacastro Jul 24, 2024
fbf33ec
initial geography implementation
mitchwadair Jul 24, 2024
35abff0
Reverth all columnstore and rowstore work
tiagoacastro Jul 24, 2024
1cb055f
add types to index, fix? geography
mitchwadair Jul 24, 2024
7ec3901
fix polygon
mitchwadair Jul 24, 2024
9621d95
Remove check
tiagoacastro Jul 24, 2024
4cd60b7
improve geography type narrowing
mitchwadair Jul 24, 2024
a574989
error -> drizzleerror
mitchwadair Jul 24, 2024
3f844c4
add branching
mitchwadair Jul 24, 2024
feffcfd
CREATE and DROP MILESTONE
drodrigues4 Jul 24, 2024
01334cc
combine buildAttachQuery and buildBranchQuery
mitchwadair Jul 24, 2024
4afb283
OPTIMIZE TABLE
drodrigues4 Jul 24, 2024
d09afcc
nits to OPTIMIZE TABLE
drodrigues4 Jul 24, 2024
f11e571
more nits
drodrigues4 Jul 24, 2024
a72e61c
even more nits
drodrigues4 Jul 24, 2024
52963af
more nits to OPTIMIZE TABLE
drodrigues4 Jul 25, 2024
a623dce
stringify BSON column
Rodriguespn Jul 24, 2024
10aec33
new blob column type
Rodriguespn Jul 25, 2024
fba59c0
Try another approach for table type related typecheck
tiagoacastro Jul 25, 2024
fcddec0
Fixed build
tiagoacastro Jul 25, 2024
3b08870
Even more nits to OPTIMIZE TABLE
drodrigues4 Jul 25, 2024
73486a0
Revert table changes
tiagoacastro Jul 25, 2024
24097f8
Add defaultCurrentTimestamp and fsp to defaultNow
drodrigues4 Jul 25, 2024
43188c3
Separated tables into columnstore and rowstore
tiagoacastro Jul 25, 2024
5f86590
Fix build
tiagoacastro Jul 25, 2024
08b4c4d
Fix build v2
tiagoacastro Jul 25, 2024
b83f2b7
fix geography data type
mitchwadair Jul 25, 2024
021bf75
fix geography type v2
mitchwadair Jul 25, 2024
d1dbe61
lint/fmt
mitchwadair Jul 25, 2024
b8686fa
nits with datetime
drodrigues4 Jul 25, 2024
dd8ffbd
improve geography code readability
mitchwadair Jul 25, 2024
1d7e53b
lint/fmt datetime
mitchwadair Jul 25, 2024
ee18494
improve readability in geography mapToDriverValue
mitchwadair Jul 25, 2024
f2b7128
Undo changes to differentiate tables
tiagoacastro Jul 25, 2024
337ee34
Fix build
tiagoacastro Jul 25, 2024
ac24dc3
Fix datetime merge error
tiagoacastro Jul 25, 2024
404d420
fix polygon generator
mitchwadair Jul 25, 2024
bc86043
fix relational query?
mitchwadair Jul 25, 2024
46e8864
revert
mitchwadair Jul 25, 2024
9daf249
fixed revert of 46e88647cd19230ce6a07f6f780ba7645218c123
drodrigues4 Jul 25, 2024
893caa4
Fix relational queries for S2
drodrigues4 Jul 25, 2024
d13c2a3
stuff
drodrigues4 Jul 26, 2024
e201257
Full text
drodrigues4 Jul 26, 2024
89ebe11
nits with fulltext index
drodrigues4 Jul 26, 2024
b7e596f
MATCH AGAINST
drodrigues4 Jul 26, 2024
f0bf136
nits
drodrigues4 Jul 26, 2024
7068637
more nits
drodrigues4 Jul 26, 2024
80e0bb0
nits with MATCH AGAINST
drodrigues4 Jul 26, 2024
5d01131
nits of MATCH AGAINST
drodrigues4 Jul 26, 2024
2e846a6
Sort key
drodrigues4 Jul 27, 2024
d20e3ca
Fixed sortKey
drodrigues4 Jul 27, 2024
ba24167
fix lint issues and add lint:fix command
Rodriguespn Jul 28, 2024
006362b
Merge branch 'drizzle-team:main' into main
Rodriguespn Aug 8, 2024
b93062b
add singlestore dialect to drizzle-kit
Rodriguespn Aug 8, 2024
fb90045
create new singlestore-schemas.test.ts file
Rodriguespn Aug 8, 2024
0dd478b
adapt validations.test.ts to singlestore dialect
Rodriguespn Aug 8, 2024
a861f5d
replicate generate tables and general singlestore migrations test
Rodriguespn Aug 8, 2024
8084ad6
replicate generate tables and general singlestore migrations test
Rodriguespn Aug 8, 2024
052d62c
Merge pull request #7 from singlestore-labs/feature/adapt-drizzle-kit
Rodriguespn Aug 13, 2024
a2d0c41
lint fix on drizzle-kit files
Rodriguespn Aug 13, 2024
de059cb
Merge branch 'drizzle-team:main' into main
Rodriguespn Aug 13, 2024
67c9680
vector elementType optional
mitchwadair Aug 15, 2024
bee314c
define intersectAll and excludeAll sql functions for SingleStore
Rodriguespn Aug 20, 2024
2df01eb
created singlestore-proxy from mysql-proxy
Rodriguespn Aug 20, 2024
ae78e04
add type-tests for SingleStore dialect
Rodriguespn Aug 20, 2024
345def7
Merge pull request #10 from singlestore-labs/feature/singlestore-proxy
Rodriguespn Aug 21, 2024
8dd9d1d
Merge pull request #9 from singlestore-labs/feature/singlestore-type-…
Rodriguespn Aug 21, 2024
3400b04
Remove new column types (#11)
mitchwadair Sep 4, 2024
904dcb2
Merge branch 'main' into main
Rodriguespn Sep 6, 2024
dd09dac
Test implementation
Sukairo-02 Aug 26, 2024
25d3753
Type-level implementation
Sukairo-02 Aug 26, 2024
8439bf1
Added functional runtimes for node-pg, aws-data-api-pg [custom drizzl…
Sukairo-02 Aug 26, 2024
f2115f8
Resolved bun type related build issues
Sukairo-02 Aug 26, 2024
ab07dd7
Implemented extra drivers
Sukairo-02 Aug 26, 2024
5f49379
Complete runtime implementations [TO BE TESTED]
Sukairo-02 Aug 26, 2024
45d2d13
Prototype implementation
Sukairo-02 Aug 27, 2024
be0aab2
switched bun to dynamic imports
Sukairo-02 Aug 27, 2024
936b319
Removed static imports, removed promise wrapper
Sukairo-02 Aug 27, 2024
493dd13
Returned async imports due to conflicts
Sukairo-02 Aug 27, 2024
6c6394d
More comnprehensive import errors
Sukairo-02 Aug 27, 2024
1b580d8
Changed error messge
Sukairo-02 Aug 28, 2024
b6b8258
Improved params destructurization
Sukairo-02 Aug 29, 2024
4f7d703
Functional prototype of SQLite $count
Sukairo-02 Sep 2, 2024
e009be7
Added pg, mysql; Added tests, type tests for $count
Sukairo-02 Sep 2, 2024
672b441
Added missing runtime tests
Sukairo-02 Sep 4, 2024
951e549
LibSQL improvements
AleksandrSherman Aug 12, 2024
0b768d4
- updated tests
AleksandrSherman Aug 12, 2024
7239e9f
- handled foreign keys for recreate table
AleksandrSherman Aug 15, 2024
b0cf555
changed package json to prev state
AleksandrSherman Aug 15, 2024
8d62f90
updated tests
AleksandrSherman Aug 16, 2024
ec4420e
- moved 'turso' driver to dialect
AleksandrSherman Sep 2, 2024
15c6b1a
fixed dialects in introspect musql, psql, sqlite
AleksandrSherman Sep 2, 2024
deb7533
updated tests and removed pragma from push in libsql
AleksandrSherman Sep 2, 2024
380a4ce
removed console.log
AleksandrSherman Sep 2, 2024
9b68f3d
updated pull config
AleksandrSherman Sep 3, 2024
7790983
removed driver
AleksandrSherman Sep 3, 2024
d954a4b
updated sqlite connection to libsql
AleksandrSherman Sep 4, 2024
482cdce
Added alternate config for better-sqlite3, bun:sqlite; Renamed bun-sq…
Sukairo-02 Sep 2, 2024
b40b752
Added monomigrator
Sukairo-02 Sep 2, 2024
ccac440
Changed style of monodriver, monomigrator function args
Sukairo-02 Sep 3, 2024
79b2dd9
Fixed overload order for better autocomplete
Sukairo-02 Sep 3, 2024
977fdd2
Removed garbage
Sukairo-02 Sep 3, 2024
3430e1c
Added missing postgres.js to monomigrator
Sukairo-02 Sep 3, 2024
56f7b16
Fixed missing defaults in templates
Sukairo-02 Sep 3, 2024
091a8f4
Improved types, matched supported instances of monodriver and monomig…
Sukairo-02 Sep 4, 2024
9af5fec
Fixed invalid [entityKind] call
Sukairo-02 Sep 4, 2024
ca04053
Added `:memory:` autocomplete
Sukairo-02 Sep 4, 2024
1e1d8ae
Removed leftover code from overloads, added `assertUnreachable`
Sukairo-02 Sep 4, 2024
1de8bf8
Exposed db drivers from monodriver
Sukairo-02 Sep 4, 2024
0f81774
Fixed test tables using already existing names
Sukairo-02 Sep 4, 2024
f027500
Fixed faulty test cases; Fixed lack of count type conversion in mysql…
Sukairo-02 Sep 4, 2024
8903755
Switched mysql count to execute
Sukairo-02 Sep 4, 2024
a171311
Added cast to embedded
Sukairo-02 Sep 4, 2024
4f9c076
Switched to `.execute` for mysql, pg; reverted pg proxy session chang…
Sukairo-02 Sep 5, 2024
99795fa
Moved type conversion drom db to ORM; improved types
Sukairo-02 Sep 5, 2024
0105349
Moved pg, mysql counts to sessions to resolve return shape conflicts
Sukairo-02 Sep 5, 2024
865fc07
Fixed neon-http, planetscale; removed leftover lines; switched sqlite…
Sukairo-02 Sep 5, 2024
b60aa98
changed console.log outputs for connection to Sqlite
AleksandrSherman Sep 5, 2024
388d422
Add draft for beta release
AndriiSherman Sep 6, 2024
6d413df
Add release notes for orm and kit
AndriiSherman Sep 9, 2024
d5a0238
Update release notes
AndriiSherman Sep 11, 2024
c38333a
add singlestore dialect to drizzle-kit
Rodriguespn Aug 8, 2024
f86f5a1
create new singlestore-schemas.test.ts file
Rodriguespn Aug 8, 2024
f32c8b8
lint fix on drizzle-kit files
Rodriguespn Aug 13, 2024
28876e6
adding missing driver declaration in drizzle-orm
Rodriguespn Sep 20, 2024
13f0835
Merge pull request #20 from singlestore-labs/feature/rebase-beta-branch
Rodriguespn Sep 20, 2024
ffd4fe2
Bump body-parser and express in /examples/mysql-proxy
dependabot[bot] Sep 20, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
178 changes: 178 additions & 0 deletions .github/workflows/release-fork-to-npm.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,178 @@
name: Release fork to NPM

on:
push:
branches:
- main
workflow_dispatch:

env:
PACKAGE_VERSION: 0.32.1-${{ github.sha }}

jobs:
release:
permissions: write-all
strategy:
fail-fast: false
matrix:
package:
- drizzle-orm
runs-on: ubuntu-20.04
services:
postgres-postgis:
image: postgis/postgis:16-3.4
env:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_DB: drizzle
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
ports:
- 54322:5432
postgres-vector:
image: pgvector/pgvector:pg16
env:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_DB: drizzle
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
ports:
- 54321:5432
postgres:
image: postgres:14
env:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_DB: drizzle
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
ports:
- 55433:5432
mysql:
image: mysql:8
env:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: drizzle
options: >-
--health-cmd "mysqladmin ping"
--health-interval 10s
--health-timeout 5s
--health-retries 5
ports:
- 33306:3306
steps:
- uses: actions/checkout@v4

- uses: actions/setup-node@v4
with:
node-version: '18.18'
registry-url: 'https://registry.npmjs.org'

- uses: pnpm/action-setup@v3
name: Install pnpm
id: pnpm-install
with:
version: latest
run_install: false

- name: Get pnpm store directory
id: pnpm-cache
shell: bash
run: |
echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_OUTPUT

- uses: actions/cache@v4
name: Setup pnpm cache
with:
path: ${{ steps.pnpm-cache.outputs.STORE_PATH }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-

- name: Install dependencies
run: pnpm install

- name: Generate prisma schemas
run: |
(
cd drizzle-orm
pnpm prisma generate --schema src/prisma/schema.prisma
)
(
cd integration-tests
pnpm prisma generate --schema tests/prisma/pg/schema.prisma
pnpm prisma generate --schema tests/prisma/mysql/schema.prisma
pnpm prisma generate --schema tests/prisma/sqlite/schema.prisma
)

- name: Build
working-directory: ${{ matrix.package }}
run: |
jq '.name="@drodrigues4/${{ matrix.package }}"' package.json --tab > tmp.$$.json && mv tmp.$$.json package.json
jq --arg version "$PACKAGE_VERSION" '.version=$version' package.json --tab > tmp.$$.json && mv tmp.$$.json package.json
jq 'del(.publishConfig.provenance)' package.json --tab > tmp.$$.json && mv tmp.$$.json package.json

pnpm build

- name: Run tests
if: 0
env:
PG_CONNECTION_STRING: postgres://postgres:postgres@localhost:55433/drizzle
PG_VECTOR_CONNECTION_STRING: postgres://postgres:postgres@localhost:54321/drizzle
PG_POSTGIS_CONNECTION_STRING: postgres://postgres:postgres@localhost:54322/drizzle
MYSQL_CONNECTION_STRING: mysql://root:root@localhost:33306/drizzle
PLANETSCALE_CONNECTION_STRING: ${{ secrets.PLANETSCALE_CONNECTION_STRING }}
NEON_CONNECTION_STRING: ${{ secrets.NEON_CONNECTION_STRING }}
TIDB_CONNECTION_STRING: ${{ secrets.TIDB_CONNECTION_STRING }}
XATA_API_KEY: ${{ secrets.XATA_API_KEY }}
XATA_BRANCH: ${{ secrets.XATA_BRANCH }}
LIBSQL_URL: file:local.db
run: |
if [[ "${{ matrix.package }}" == "drizzle-orm" ]]; then
pnpm test --filter ${{ matrix.package }} --filter integration-tests
else
pnpm test --filter ${{ matrix.package }}
fi

- name: Pack
working-directory: ${{ matrix.package }}
shell: bash
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_ACCESS_TOKEN }}
run: |
npm run pack

- name: Run @arethetypeswrong/cli
if: 0
working-directory: ${{ matrix.package }}
shell: bash
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_ACCESS_TOKEN }}
run: |
pnpm attw package.tgz

- name: Publish
working-directory: ${{ matrix.package }}
shell: bash
env:
NODE_AUTH_TOKEN: ${{ secrets.NODE_AUTH_TOKEN }}
run: |
echo "//registry.npmjs.org/:_authToken=${NODE_AUTH_TOKEN}" > .npmrc

echo "Publishing ${{ matrix.package }}@$PACKAGE_VERSION"
npm publish package.tgz --access public

echo "npm: \`+ ${{ matrix.package }}@$PACKAGE_VERSION\`" >> $GITHUB_STEP_SUMMARY

# Post release message to Discord
# curl -X POST -H "Content-Type: application/json" -d "{\"embeds\": [{\"title\": \"New \`${{ matrix.package }}\` release! 🎉\", \"url\": \"https://www.npmjs.com/package/${{ matrix.package }}\", \"color\": \"12907856\", \"fields\": [{\"name\": \"Tag\", \"value\": \"\`$tag\`\"}]}]}" ${{ secrets.DISCORD_RELEASE_WEBHOOK_URL }}
144 changes: 144 additions & 0 deletions changelogs/drizzle-kit/0.25.0.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,144 @@
## Breaking changes and migrate guide for Turso users

If you are using Turso and libsql, you will need to upgrade your `drizzle.config` and `@libsql/client` package.

1. This version of drizzle-orm will only work with `@libsql/[email protected]` or higher if you are using the `migrate` function. For other use cases, you can continue using previous versions(But the suggestion is to upgrade)
To install the latest version, use the command:

```bash
npm i @libsql/client@latest
```

2. Previously, we had a common `drizzle.config` for SQLite and Turso users, which allowed a shared strategy for both dialects. Starting with this release, we are introducing the turso dialect in drizzle-kit. We will evolve and improve Turso as a separate dialect with its own migration strategies.

**Before**

```ts
import { defineConfig } from "drizzle-kit";

export default defineConfig({
dialect: "sqlite",
schema: "./schema.ts",
out: "./drizzle",
dbCredentials: {
url: "database.db",
},
breakpoints: true,
verbose: true,
strict: true,
});
```

**After**

```ts
import { defineConfig } from "drizzle-kit";

export default defineConfig({
dialect: "turso",
schema: "./schema.ts",
out: "./drizzle",
dbCredentials: {
url: "database.db",
},
breakpoints: true,
verbose: true,
strict: true,
});
```

If you are using only SQLite, you can use `dialect: "sqlite"`

## LibSQL/Turso and Sqlite migration updates

### SQLite "generate" and "push" statements updates

Starting from this release, we will no longer generate comments like this:

```sql
'/*\n SQLite does not support "Changing existing column type" out of the box, we do not generate automatic migration for that, so it has to be done manually'
+ '\n Please refer to: https://www.techonthenet.com/sqlite/tables/alter_table.php'
+ '\n https://www.sqlite.org/lang_altertable.html'
+ '\n https://stackoverflow.com/questions/2083543/modify-a-columns-type-in-sqlite3'
+ "\n\n Due to that we don't generate migration automatically and it has to be done manually"
+ '\n*/'
```

We will generate a set of statements, and you can decide if it's appropriate to create data-moving statements instead. Here is an example of the SQL file you'll receive now:

```sql
PRAGMA foreign_keys=OFF;
--> statement-breakpoint
CREATE TABLE `__new_worker` (
`id` integer PRIMARY KEY NOT NULL,
`name` text NOT NULL,
`salary` text NOT NULL,
`job_id` integer,
FOREIGN KEY (`job_id`) REFERENCES `job`(`id`) ON UPDATE no action ON DELETE no action
);
--> statement-breakpoint
INSERT INTO `__new_worker`("id", "name", "salary", "job_id") SELECT "id", "name", "salary", "job_id" FROM `worker`;
--> statement-breakpoint
DROP TABLE `worker`;
--> statement-breakpoint
ALTER TABLE `__new_worker` RENAME TO `worker`;
--> statement-breakpoint
PRAGMA foreign_keys=ON;
```

### LibSQL/Turso "generate" and "push" statements updates

Since LibSQL supports more ALTER statements than SQLite, we can generate more statements without recreating your schema and moving all the data, which can be potentially dangerous for production environments.

LibSQL and Turso will now have a separate dialect in the Drizzle config file, meaning that we will evolve Turso and LibSQL independently from SQLite and will aim to support as many features as Turso/LibSQL offer.

With the updated LibSQL migration strategy, you will have the ability to:

- **Change Data Type**: Set a new data type for existing columns.
- **Set and Drop Default Values**: Add or remove default values for existing columns.
- **Set and Drop NOT NULL**: Add or remove the NOT NULL constraint on existing columns.
- **Add References to Existing Columns**: Add foreign key references to existing columns

You can find more information in the [LibSQL documentation](https://github.com/tursodatabase/libsql/blob/main/libsql-sqlite3/doc/libsql_extensions.md#altering-columns)

### LIMITATIONS

- Dropping or altering an index will cause table recreation.

This is because LibSQL/Turso does not support dropping this type of index.

```sql
CREATE TABLE `users` (
`id` integer NOT NULL,
`name` integer,
`age` integer PRIMARY KEY NOT NULL
FOREIGN KEY (`name`) REFERENCES `users1`("id") ON UPDATE no action ON DELETE no action
);
```

- If the table has indexes, altering columns will cause table recreation.
- Drizzle-Kit will drop the indexes, modify the columns, and then recreate the indexes.
- Adding or dropping composite foreign keys is not supported and will cause table recreation

### NOTES

- You can create a reference on any column type, but if you want to insert values, the referenced column must have a unique index or primary key.

```sql
CREATE TABLE parent(a PRIMARY KEY, b UNIQUE, c, d, e, f);
CREATE UNIQUE INDEX i1 ON parent(c, d);
CREATE INDEX i2 ON parent(e);
CREATE UNIQUE INDEX i3 ON parent(f COLLATE nocase);

CREATE TABLE child1(f, g REFERENCES parent(a)); -- Ok
CREATE TABLE child2(h, i REFERENCES parent(b)); -- Ok
CREATE TABLE child3(j, k, FOREIGN KEY(j, k) REFERENCES parent(c, d)); -- Ok
CREATE TABLE child4(l, m REFERENCES parent(e)); -- Error!
CREATE TABLE child5(n, o REFERENCES parent(f)); -- Error!
CREATE TABLE child6(p, q, FOREIGN KEY(p, q) REFERENCES parent(b, c)); -- Error!
CREATE TABLE child7(r REFERENCES parent(c)); -- Error!
```

> **NOTE**: The foreign key for the table child5 is an error because, although the parent key column has a unique index, the index uses a different collating sequence.

See more: https://www.sqlite.org/foreignkeys.html
Loading
Loading