* dialect/sql: move FROM to inside switch
* dialect/sql: adds simple example of subquery usage
* dialect/sql: adds a more complex example with join
* Apply suggestions from code review
Co-authored-by: Ariel Mashraki <7413593+a8m@users.noreply.github.com>
* dialect/sql: fix missing type and change modify to where
Co-authored-by: Ariel Mashraki <7413593+a8m@users.noreply.github.com>
What's the problem: Under versioned migration on MySQL 8.0, unique string field would be generated as type varchar(191) instead of varchar(255). This is because in generating migration files by NamedDiff(), sqlDialect's init() method is not called.
Further concern: For init() function, MySQL and Postgres's implementation checks the database version which is what I want. But SQLite's implementation checks the foreign_keys support. So I think there might be a better may to check the database version before doing Diff().
* dialect/sql/schema: add method to create a named versioned migration file
* doc/md: documentation for named versioned migrations
* entc/gen/template/dialect/sql/feature: add NamedDiff method to create named versioned migration files
* all: go generate
* doc/md: apply CR
* dialect/sql/schema: fix no change condition in atlas
* dialect/sql/schema: fix bug in atlas integration when working WithDropIndex/WithDropColumn
Co-authored-by: Zeev Manilovich <zeevmanilovich@gmail.com>
* dialect/sql/schema: fix go doc
* all: update atlas
* dialect/sql/schema: diff connected DB and defined schema and write changes to migration file
* dialect/sql/schema: use migration directory and formatter directly instead of a planner
* all: update atlas
* cmd: add command to create a new migration file
* entc/gen: generate main.go with migrate diff example
* all: regenerate
* cmd/internal/base: make linter happy
* all: support Go 1.16 in versioned migrations main.go
* entc/gen: put versioned migrations behind feature flag
* all: regenerate
* cmd/ent: driver-prefixed dsn in migrate diff command
* cmd/internal/base: remove prefix from migrate import
* cmd/internal/base: use cobra.CheckErr
* cmd: remove diff command
* entc/gen/template/dialect/sql/feature: remove generated main.go
* all: rebase on master and go mod tidy
* all: regenerate
For example, in PostgreSQL, every statement is executed within a transaction. Therefore, we can avoid creating transaction
blocks manually (group of statements surrounded by BEGIN and COMMIT) for CreateNode operation with single SQL statement.
Benchmark was improved from:
(4000 BatchInserts) 17.16s 4289178 ns/op 412893 B/op 4913 allocs/op
To:
(4000 BatchInserts) 9.16s 2288807 ns/op 412142 B/op 4899 allocs/op
* Support migration of varying length varchar postgres
* update type
* fix type
* improve type
* remove not needed change
* fix failing test
* add inspect test
* add more tests
* go fmt
* fix pr comment