diff --git a/_examples/a_bit_of_everything/gen.sh b/_examples/a_bit_of_everything/gen.sh
index e4122993..75f9093d 100755
--- a/_examples/a_bit_of_everything/gen.sh
+++ b/_examples/a_bit_of_everything/gen.sh
@@ -10,7 +10,7 @@ DSNS+=(
[oracle]=or://$TEST:$TEST@localhost:1521/db1
[postgres]=pg://$TEST:$TEST@localhost/$TEST
[sqlite3]=sq:$TEST.db
- [sqlserver]=ms://$TEST:$TEST@localhost/$TEST
+ [sqlserver]=ms://$TEST:$TEST@localhost/?database=$TEST
)
APPLY=0
diff --git a/_examples/a_bit_of_everything/mysql/abitofeverything.xo.go b/_examples/a_bit_of_everything/mysql/abitofeverything.xo.go
index f5c11560..3ff049ed 100644
--- a/_examples/a_bit_of_everything/mysql/abitofeverything.xo.go
+++ b/_examples/a_bit_of_everything/mysql/abitofeverything.xo.go
@@ -67,7 +67,7 @@ type ABitOfEverything struct {
ATime string `json:"a_time"` // a_time
ATimeNullable sql.NullString `json:"a_time_nullable"` // a_time_nullable
ATimestamp time.Time `json:"a_timestamp"` // a_timestamp
- ATimestampNullable time.Time `json:"a_timestamp_nullable"` // a_timestamp_nullable
+ ATimestampNullable sql.NullTime `json:"a_timestamp_nullable"` // a_timestamp_nullable
ATinyblob []byte `json:"a_tinyblob"` // a_tinyblob
ATinyblobNullable []byte `json:"a_tinyblob_nullable"` // a_tinyblob_nullable
ATinyint int8 `json:"a_tinyint"` // a_tinyint
diff --git a/_examples/a_bit_of_everything/mysql/aviewofeverything.xo.go b/_examples/a_bit_of_everything/mysql/aviewofeverything.xo.go
index 2a3d3e72..414926ca 100644
--- a/_examples/a_bit_of_everything/mysql/aviewofeverything.xo.go
+++ b/_examples/a_bit_of_everything/mysql/aviewofeverything.xo.go
@@ -66,7 +66,7 @@ type AViewOfEverything struct {
ATime string `json:"a_time"` // a_time
ATimeNullable sql.NullString `json:"a_time_nullable"` // a_time_nullable
ATimestamp time.Time `json:"a_timestamp"` // a_timestamp
- ATimestampNullable time.Time `json:"a_timestamp_nullable"` // a_timestamp_nullable
+ ATimestampNullable sql.NullTime `json:"a_timestamp_nullable"` // a_timestamp_nullable
ATinyblob []byte `json:"a_tinyblob"` // a_tinyblob
ATinyblobNullable []byte `json:"a_tinyblob_nullable"` // a_tinyblob_nullable
ATinyint int8 `json:"a_tinyint"` // a_tinyint
diff --git a/_examples/a_bit_of_everything/mysql/xo.xo.json b/_examples/a_bit_of_everything/mysql/xo.xo.json
index 0fbfb3ef..e640f321 100644
--- a/_examples/a_bit_of_everything/mysql/xo.xo.json
+++ b/_examples/a_bit_of_everything/mysql/xo.xo.json
@@ -598,15 +598,14 @@
"name": "a_timestamp",
"datatype": {
"type": "timestamp"
- },
- "default": "current_timestamp()"
+ }
},
{
"name": "a_timestamp_nullable",
"datatype": {
- "type": "timestamp"
- },
- "default": "'0000-00-00 00:00:00'"
+ "type": "timestamp",
+ "nullable": true
+ }
},
{
"name": "a_tinyblob",
@@ -1664,15 +1663,14 @@
"name": "a_timestamp",
"datatype": {
"type": "timestamp"
- },
- "default": "current_timestamp()"
+ }
},
{
"name": "a_timestamp_nullable",
"datatype": {
- "type": "timestamp"
- },
- "default": "'0000-00-00 00:00:00'"
+ "type": "timestamp",
+ "nullable": true
+ }
},
{
"name": "a_tinyblob",
diff --git a/_examples/a_bit_of_everything/mysql/xo.xo.sql b/_examples/a_bit_of_everything/mysql/xo.xo.sql
index c12f465f..b0b431b2 100644
--- a/_examples/a_bit_of_everything/mysql/xo.xo.sql
+++ b/_examples/a_bit_of_everything/mysql/xo.xo.sql
@@ -58,8 +58,8 @@ CREATE TABLE a_bit_of_everything (
a_text_nullable TEXT,
a_time TIME NOT NULL,
a_time_nullable TIME,
- a_timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL,
- a_timestamp_nullable TIMESTAMP DEFAULT '0000-00-00 00:00:00' NOT NULL,
+ a_timestamp TIMESTAMP NOT NULL,
+ a_timestamp_nullable TIMESTAMP,
a_tinyblob TINYBLOB NOT NULL,
a_tinyblob_nullable TINYBLOB,
a_tinyint TINYINT(4) NOT NULL,
diff --git a/_examples/a_bit_of_everything/mysql/xo.xo.yaml b/_examples/a_bit_of_everything/mysql/xo.xo.yaml
index 97aabbb9..27f7fde7 100644
--- a/_examples/a_bit_of_everything/mysql/xo.xo.yaml
+++ b/_examples/a_bit_of_everything/mysql/xo.xo.yaml
@@ -361,11 +361,10 @@ schemas:
- name: a_timestamp
datatype:
type: timestamp
- default: current_timestamp()
- name: a_timestamp_nullable
datatype:
type: timestamp
- default: "'0000-00-00 00:00:00'"
+ nullable: true
- name: a_tinyblob
datatype:
type: tinyblob
@@ -983,11 +982,10 @@ schemas:
- name: a_timestamp
datatype:
type: timestamp
- default: current_timestamp()
- name: a_timestamp_nullable
datatype:
type: timestamp
- default: "'0000-00-00 00:00:00'"
+ nullable: true
- name: a_tinyblob
datatype:
type: tinyblob
diff --git a/_examples/booktest/gen.sh b/_examples/booktest/gen.sh
index 2d185f7f..0789ab34 100755
--- a/_examples/booktest/gen.sh
+++ b/_examples/booktest/gen.sh
@@ -10,7 +10,7 @@ DSNS+=(
[oracle]=or://$TEST:$TEST@localhost:1521/db1
[postgres]=pg://$TEST:$TEST@localhost/$TEST
[sqlite3]=sq:$TEST.db
- [sqlserver]=ms://$TEST:$TEST@localhost/$TEST
+ [sqlserver]=ms://$TEST:$TEST@localhost/?database=$TEST
)
APPLY=0
diff --git a/_examples/django/Pipfile.lock b/_examples/django/Pipfile.lock
index fe8fb729..2c482164 100644
--- a/_examples/django/Pipfile.lock
+++ b/_examples/django/Pipfile.lock
@@ -18,11 +18,11 @@
"default": {
"asgiref": {
"hashes": [
- "sha256:1d2880b792ae8757289136f1db2b7b99100ce959b2aa57fd69dab783d05afac4",
- "sha256:4a29362a6acebe09bf1d6640db38c1dc3d9217c68e6f9f6204d72667fc19a424"
+ "sha256:71e68008da809b957b7ee4b43dbccff33d1b23519fb8344e33f049897077afac",
+ "sha256:9567dfe7bd8d3c8c892227827c41cce860b368104c3431da67a0c5a65a949506"
],
"markers": "python_version >= '3.7'",
- "version": "==3.5.2"
+ "version": "==3.6.0"
},
"cx-oracle": {
"hashes": [
@@ -48,11 +48,11 @@
},
"django": {
"hashes": [
- "sha256:41bd65a9e5f8a89cdbfa7a7bba45cd7431ae89e750af82dea8a35fd1a7ecbe66",
- "sha256:9c6d5ad36be798e562ddcaa6b17b1c3ff2d3c4f529a47432b69fb9a30f847461"
+ "sha256:44f714b81c5f190d9d2ddad01a532fe502fa01c4cb8faf1d081f4264ed15dcd8",
+ "sha256:f2f431e75adc40039ace496ad3b9f17227022e8b11566f4b363da44c7e44761e"
],
"index": "pypi",
- "version": "==4.0.7"
+ "version": "==4.1.7"
},
"lock": {
"hashes": [
@@ -63,11 +63,11 @@
},
"mssql-django": {
"hashes": [
- "sha256:896373ae45434a337239a225dfb0d48fc9c5d71105b0c9a774bb9561165d8cfb",
- "sha256:be8e6fde9bbfdb80e316bf9a4d865bce5c166891b26d239221dc7544c3e5bb6c"
+ "sha256:bc6ee6357df6aeabc2bcdf78dcde38417bc1c748cd1234c6bd17e315d1469e36",
+ "sha256:e482215743ce1032484f0972cea8601f0b6fca9f3c7d261429623b50319c446f"
],
"index": "pypi",
- "version": "==1.1.3"
+ "version": "==1.2"
},
"mysqlclient": {
"hashes": [
@@ -84,57 +84,74 @@
},
"psycopg2": {
"hashes": [
- "sha256:06f32425949bd5fe8f625c49f17ebb9784e1e4fe928b7cce72edc36fb68e4c0c",
- "sha256:0762c27d018edbcb2d34d51596e4346c983bd27c330218c56c4dc25ef7e819bf",
- "sha256:083707a696e5e1c330af2508d8fab36f9700b26621ccbcb538abe22e15485362",
- "sha256:34b33e0162cfcaad151f249c2649fd1030010c16f4bbc40a604c1cb77173dcf7",
- "sha256:4295093a6ae3434d33ec6baab4ca5512a5082cc43c0505293087b8a46d108461",
- "sha256:8cf3878353cc04b053822896bc4922b194792df9df2f1ad8da01fb3043602126",
- "sha256:8e841d1bf3434da985cc5ef13e6f75c8981ced601fd70cc6bf33351b91562981",
- "sha256:9572e08b50aed176ef6d66f15a21d823bb6f6d23152d35e8451d7d2d18fdac56",
- "sha256:a81e3866f99382dfe8c15a151f1ca5fde5815fde879348fe5a9884a7c092a305",
- "sha256:cb10d44e6694d763fa1078a26f7f6137d69f555a78ec85dc2ef716c37447e4b2",
- "sha256:d3ca6421b942f60c008f81a3541e8faf6865a28d5a9b48544b0ee4f40cac7fca"
+ "sha256:093e3894d2d3c592ab0945d9eba9d139c139664dcf83a1c440b8a7aa9bb21955",
+ "sha256:190d51e8c1b25a47484e52a79638a8182451d6f6dff99f26ad9bd81e5359a0fa",
+ "sha256:1a5c7d7d577e0eabfcf15eb87d1e19314c8c4f0e722a301f98e0e3a65e238b4e",
+ "sha256:1e5a38aa85bd660c53947bd28aeaafb6a97d70423606f1ccb044a03a1203fe4a",
+ "sha256:322fd5fca0b1113677089d4ebd5222c964b1760e361f151cbb2706c4912112c5",
+ "sha256:4cb9936316d88bfab614666eb9e32995e794ed0f8f6b3b718666c22819c1d7ee",
+ "sha256:920bf418000dd17669d2904472efeab2b20546efd0548139618f8fa305d1d7ad",
+ "sha256:922cc5f0b98a5f2b1ff481f5551b95cd04580fd6f0c72d9b22e6c0145a4840e0",
+ "sha256:a5246d2e683a972e2187a8714b5c2cf8156c064629f9a9b1a873c1730d9e245a",
+ "sha256:b9ac1b0d8ecc49e05e4e182694f418d27f3aedcfca854ebd6c05bb1cffa10d6d",
+ "sha256:d3ef67e630b0de0779c42912fe2cbae3805ebaba30cda27fea2a3de650a9414f",
+ "sha256:f5b6320dbc3cf6cfb9f25308286f9f7ab464e65cfb105b64cc9c52831748ced2",
+ "sha256:fc04dd5189b90d825509caa510f20d1d504761e78b8dfb95a0ede180f71d50e5"
],
"index": "pypi",
- "version": "==2.9.3"
+ "version": "==2.9.5"
},
"pyodbc": {
"hashes": [
- "sha256:07caafd49335e444f66d7ac78a87ffd1b8ce71d352b5bf0ffaa93d9ea82b003b",
- "sha256:2ad077231c6f33555abd6e482ce027739c54430b973477a42094fbae2f3d9791",
- "sha256:402e94519ee95ae7ce0a792fc37fc3922f8a970337edc873b03d64427815ac8f",
- "sha256:5502d98e7bb37d6407e97ecd9f6528e9512439c7c3ff6f444d8b4b59ebb5ef4b",
- "sha256:5a400524ad64dcd242ea75070789696f7157e23597767340307494e4b85c5a8e",
- "sha256:5e454fe5ac21d5a920e2d1f269c38e2af2d045ea97979951953f57f41ac8cea0",
- "sha256:5eda44df6c064d43075ced640d955399a663523028a847132a50fc02722c4904",
- "sha256:7ea7869532b96b8d529b1f08ea85765f94df7e4a58e968b2f8d455346a03e45c",
- "sha256:991c1441b5067e88c37f32eb79b4015fda6b5451b396187325ec594bd4d5ae74",
- "sha256:9b2bb29121971b3316faeb2593e59f6f9faebd85048b4f0716b46c6282c1b9a8",
- "sha256:9d8ca2122c2671264d53f0009e4c96b80b4da9bd44394e6ef6692b3aeb34be7c",
- "sha256:b80aee02983130cf0087234d226e2310b527d093402b60d307f2b90dc038ff65",
- "sha256:befe795303ff13d55fa15c42496aa414cd60f465e8d96daec8c9b48bfea2c1ec",
- "sha256:c8d95528d0c33fb24d0928d8cfe7dd194f7406a3da9c4a73b6fcb203b66addd4",
- "sha256:e8244184fd7b92cafbdb417709a214371fe489d6fed97e61d130ceb2891f5e52",
- "sha256:eb7a1a15eb35322e62bfb1c2910274106781edf4dc268ad2b0e9fc89958689e4"
+ "sha256:0c9fb521b376d1b804ada98c6dd12a8b349c301060bfdc194a5045882f0b2887",
+ "sha256:12b7a308e9e30d2da96a613ac12d46cd6f81a4791e5c5849e382e73eda1d23a2",
+ "sha256:27340dff78694fee6e6629500ecbfbafc7694861e22256ff00af9865442d1bfe",
+ "sha256:2a85203d2b6ab417f52600295294a5bb46a69fa383764959b57e8d843090fd43",
+ "sha256:2b92c67e8255c8636af687f56361eaa420dd5d1b7bc883e2ff473d85a5e63e08",
+ "sha256:389a8522806f439c430f5f339186e02b130f7b2de91c1366f44a21fb1229bb1b",
+ "sha256:38da788c66e9594174635ee37f494d0211fe2b5634aa2364be28317b1bbed16d",
+ "sha256:3bbd1819c7441766a086bf24d7803a7fd466f22dbbaffcab7acc01397961e552",
+ "sha256:4b3d978619e68d0a6d6bc1f7749575b6de4ac4312aab0e889a18315b1bb06e9b",
+ "sha256:71aa000e8ac925ccfabb2cdb9b2ec3247de243305d12bf5b24fcdd248ffd07e3",
+ "sha256:729b4454ede1384c4eb0608b552d59e933b377bc9f3d68a0b3d44f00c8c2ecab",
+ "sha256:8388c222a64fc8b0039be8e2663212e6a2915c842d5fd34f32126ee392b6c48e",
+ "sha256:92b9af48e8b928455bc8b94bf3da05751faec0932a11eee237c189c6d439e5c8",
+ "sha256:95c1e3f2747af0957de17192811f06525a8e9c3e6491b4698b3f34d626333be7",
+ "sha256:9632c19850bdeeb7ce2e9e38cf64df1688cd803e810bf18ab92fb0588956f7be",
+ "sha256:9918c50936e80cac300c9423c5936a2573543e2476749155616ef50685891145",
+ "sha256:b6f1d113d382fed53fd2f5692266c83409ecbdc6144a7e1abbed76050e9e5973",
+ "sha256:baf1d62959de66a664b4d63c4af00d09f107981be7a8961ce235a0fce386663b",
+ "sha256:c24115c491585018faf88b1cafc73a91e177ff57c7d82d04abebe7fb52cae6b3",
+ "sha256:c3ab48723c647bfd38dfa60dde3c1967e4e0e92a11c93ae30ec6665765e5a0f7",
+ "sha256:c7f8e34b18474bc347bd3623408c8ecb405cf2fa71cb72e42b9657f4ffbc146a",
+ "sha256:cd885f28ba39debb1c8ace95a1fed551835a5a399778350094c71d0007e42a75",
+ "sha256:cfe3c59fb151daef483533ab94b6b7367fa643137f94dac0a189e9779d691755",
+ "sha256:d94dd82d8ded92d3f7ed7d575dc53127e1bcc2bb7ada0ccac51eb4520cffc780",
+ "sha256:dda0b6f9728941523e5b84b6a12bdcff420596451d2cfefcd7f21ace3bfde334",
+ "sha256:df74d692e3002208ef16994adcd0ba0a5f579ec8621a2aa2866195defcecfdb1",
+ "sha256:e9a69b16fc59b74a9153c06e452a8093eae4a6ea542462811f517e7ccc5ff3e8",
+ "sha256:ea33e115ea6b3f5113a647c4a121247d32d8f338c3d9e1937b50222e52ad4360",
+ "sha256:f068590bcce50b0120e88ec4f90d65f660e8d39052fad3733a40614623a987e4",
+ "sha256:f964f5f153569dae60b149b35aa7d54b46fb38c6bf928c346d928771b0a5f590",
+ "sha256:fe0448f3d39253ed55d1b2b4bfa22f04413e8d0b09202a81d74e4cbe54de34a4"
],
"index": "pypi",
- "version": "==4.0.34"
+ "version": "==4.0.35"
},
"pytz": {
"hashes": [
- "sha256:220f481bdafa09c3955dfbdddb7b57780e9a94f5127e35456a48589b9e0c0197",
- "sha256:cea221417204f2d1a2aa03ddae3e867921971d0d76f14d87abb4414415bbdcf5"
+ "sha256:1d8ce29db189191fb55338ee6d0387d82ab59f3d00eac103412d64e0ebd0c588",
+ "sha256:a151b3abb88eda1d4e34a9814df37de2a80e301e68ba0fd856fb9b46bfbbbffb"
],
- "version": "==2022.2.1"
+ "version": "==2023.3"
},
"sqlparse": {
"hashes": [
- "sha256:0c00730c74263a94e5a9919ade150dfc3b19c574389985446148402998287dae",
- "sha256:48719e356bb8b42991bdbb1e8b83223757b93789c00910a616a071910ca4a64d"
+ "sha256:0323c0ec29cd52bceabc1b4d9d579e311f3e4961b98d174201d5622a23b85e34",
+ "sha256:69ca804846bb114d2ec380e4360a8a340db83f0ccf3afceeb1404df028f57268"
],
"markers": "python_version >= '3.5'",
- "version": "==0.4.2"
+ "version": "==0.4.3"
}
},
"develop": {}
diff --git a/_examples/django/gen.sh b/_examples/django/gen.sh
index 3e36bd73..17866911 100755
--- a/_examples/django/gen.sh
+++ b/_examples/django/gen.sh
@@ -10,7 +10,7 @@ DSNS+=(
[oracle]=or://$TEST:$TEST@localhost/db1
[postgres]=pg://$TEST:$TEST@localhost/$TEST
[sqlite3]=sq:$TEST.db
- [sqlserver]=ms://$TEST:$TEST@localhost/$TEST
+ [sqlserver]=ms://$TEST:$TEST@localhost/?database=$TEST
)
APPLY=0
diff --git a/_examples/django/init.sh b/_examples/django/init.sh
index 177035f0..e8f9858b 100755
--- a/_examples/django/init.sh
+++ b/_examples/django/init.sh
@@ -62,7 +62,7 @@ case $TYPE in
[user]=django
[pass]=django
[name]=django
- [options]="'OPTIONS': {'driver': 'ODBC Driver 18 for SQL Server'},"
+ [options]="'OPTIONS': {'driver': 'ODBC Driver 18 for SQL Server', 'extra_params': 'Encrypt=no'},"
)
;;
esac
diff --git a/_examples/django/sqlite3/djangoadminlog.xo.go b/_examples/django/sqlite3/djangoadminlog.xo.go
index 787b71d0..b1d82b07 100644
--- a/_examples/django/sqlite3/djangoadminlog.xo.go
+++ b/_examples/django/sqlite3/djangoadminlog.xo.go
@@ -10,13 +10,13 @@ import (
// DjangoAdminLog represents a row from 'django_admin_log'.
type DjangoAdminLog struct {
ID int `json:"id"` // id
- ActionTime Time `json:"action_time"` // action_time
ObjectID sql.NullString `json:"object_id"` // object_id
ObjectRepr string `json:"object_repr"` // object_repr
+ ActionFlag uint `json:"action_flag"` // action_flag
ChangeMessage string `json:"change_message"` // change_message
ContentTypeID sql.NullInt64 `json:"content_type_id"` // content_type_id
UserID int `json:"user_id"` // user_id
- ActionFlag uint `json:"action_flag"` // action_flag
+ ActionTime Time `json:"action_time"` // action_time
// xo fields
_exists, _deleted bool
}
@@ -42,13 +42,13 @@ func (dal *DjangoAdminLog) Insert(ctx context.Context, db DB) error {
}
// insert (primary key generated and returned by database)
const sqlstr = `INSERT INTO django_admin_log (` +
- `id, action_time, object_id, object_repr, change_message, content_type_id, user_id, action_flag` +
+ `id, object_id, object_repr, action_flag, change_message, content_type_id, user_id, action_time` +
`) VALUES (` +
`$1, $2, $3, $4, $5, $6, $7, $8` +
`)`
// run
- logf(sqlstr, dal.ActionTime, dal.ObjectID, dal.ObjectRepr, dal.ChangeMessage, dal.ContentTypeID, dal.UserID, dal.ActionFlag)
- res, err := db.ExecContext(ctx, sqlstr, dal.ID, dal.ActionTime, dal.ObjectID, dal.ObjectRepr, dal.ChangeMessage, dal.ContentTypeID, dal.UserID, dal.ActionFlag)
+ logf(sqlstr, dal.ObjectID, dal.ObjectRepr, dal.ActionFlag, dal.ChangeMessage, dal.ContentTypeID, dal.UserID, dal.ActionTime)
+ res, err := db.ExecContext(ctx, sqlstr, dal.ID, dal.ObjectID, dal.ObjectRepr, dal.ActionFlag, dal.ChangeMessage, dal.ContentTypeID, dal.UserID, dal.ActionTime)
if err != nil {
return logerror(err)
}
@@ -73,11 +73,11 @@ func (dal *DjangoAdminLog) Update(ctx context.Context, db DB) error {
}
// update with primary key
const sqlstr = `UPDATE django_admin_log SET ` +
- `action_time = $1, object_id = $2, object_repr = $3, change_message = $4, content_type_id = $5, user_id = $6, action_flag = $7 ` +
+ `object_id = $1, object_repr = $2, action_flag = $3, change_message = $4, content_type_id = $5, user_id = $6, action_time = $7 ` +
`WHERE id = $8`
// run
- logf(sqlstr, dal.ActionTime, dal.ObjectID, dal.ObjectRepr, dal.ChangeMessage, dal.ContentTypeID, dal.UserID, dal.ActionFlag, dal.ID)
- if _, err := db.ExecContext(ctx, sqlstr, dal.ActionTime, dal.ObjectID, dal.ObjectRepr, dal.ChangeMessage, dal.ContentTypeID, dal.UserID, dal.ActionFlag, dal.ID); err != nil {
+ logf(sqlstr, dal.ObjectID, dal.ObjectRepr, dal.ActionFlag, dal.ChangeMessage, dal.ContentTypeID, dal.UserID, dal.ActionTime, dal.ID)
+ if _, err := db.ExecContext(ctx, sqlstr, dal.ObjectID, dal.ObjectRepr, dal.ActionFlag, dal.ChangeMessage, dal.ContentTypeID, dal.UserID, dal.ActionTime, dal.ID); err != nil {
return logerror(err)
}
return nil
@@ -99,16 +99,16 @@ func (dal *DjangoAdminLog) Upsert(ctx context.Context, db DB) error {
}
// upsert
const sqlstr = `INSERT INTO django_admin_log (` +
- `id, action_time, object_id, object_repr, change_message, content_type_id, user_id, action_flag` +
+ `id, object_id, object_repr, action_flag, change_message, content_type_id, user_id, action_time` +
`) VALUES (` +
`$1, $2, $3, $4, $5, $6, $7, $8` +
`)` +
` ON CONFLICT (id) DO ` +
`UPDATE SET ` +
- `action_time = EXCLUDED.action_time, object_id = EXCLUDED.object_id, object_repr = EXCLUDED.object_repr, change_message = EXCLUDED.change_message, content_type_id = EXCLUDED.content_type_id, user_id = EXCLUDED.user_id, action_flag = EXCLUDED.action_flag `
+ `object_id = EXCLUDED.object_id, object_repr = EXCLUDED.object_repr, action_flag = EXCLUDED.action_flag, change_message = EXCLUDED.change_message, content_type_id = EXCLUDED.content_type_id, user_id = EXCLUDED.user_id, action_time = EXCLUDED.action_time `
// run
- logf(sqlstr, dal.ID, dal.ActionTime, dal.ObjectID, dal.ObjectRepr, dal.ChangeMessage, dal.ContentTypeID, dal.UserID, dal.ActionFlag)
- if _, err := db.ExecContext(ctx, sqlstr, dal.ID, dal.ActionTime, dal.ObjectID, dal.ObjectRepr, dal.ChangeMessage, dal.ContentTypeID, dal.UserID, dal.ActionFlag); err != nil {
+ logf(sqlstr, dal.ID, dal.ObjectID, dal.ObjectRepr, dal.ActionFlag, dal.ChangeMessage, dal.ContentTypeID, dal.UserID, dal.ActionTime)
+ if _, err := db.ExecContext(ctx, sqlstr, dal.ID, dal.ObjectID, dal.ObjectRepr, dal.ActionFlag, dal.ChangeMessage, dal.ContentTypeID, dal.UserID, dal.ActionTime); err != nil {
return logerror(err)
}
// set exists
@@ -143,7 +143,7 @@ func (dal *DjangoAdminLog) Delete(ctx context.Context, db DB) error {
func DjangoAdminLogByContentTypeID(ctx context.Context, db DB, contentTypeID sql.NullInt64) ([]*DjangoAdminLog, error) {
// query
const sqlstr = `SELECT ` +
- `id, action_time, object_id, object_repr, change_message, content_type_id, user_id, action_flag ` +
+ `id, object_id, object_repr, action_flag, change_message, content_type_id, user_id, action_time ` +
`FROM django_admin_log ` +
`WHERE content_type_id = $1`
// run
@@ -160,7 +160,7 @@ func DjangoAdminLogByContentTypeID(ctx context.Context, db DB, contentTypeID sql
_exists: true,
}
// scan
- if err := rows.Scan(&dal.ID, &dal.ActionTime, &dal.ObjectID, &dal.ObjectRepr, &dal.ChangeMessage, &dal.ContentTypeID, &dal.UserID, &dal.ActionFlag); err != nil {
+ if err := rows.Scan(&dal.ID, &dal.ObjectID, &dal.ObjectRepr, &dal.ActionFlag, &dal.ChangeMessage, &dal.ContentTypeID, &dal.UserID, &dal.ActionTime); err != nil {
return nil, logerror(err)
}
res = append(res, &dal)
@@ -177,7 +177,7 @@ func DjangoAdminLogByContentTypeID(ctx context.Context, db DB, contentTypeID sql
func DjangoAdminLogByID(ctx context.Context, db DB, id int) (*DjangoAdminLog, error) {
// query
const sqlstr = `SELECT ` +
- `id, action_time, object_id, object_repr, change_message, content_type_id, user_id, action_flag ` +
+ `id, object_id, object_repr, action_flag, change_message, content_type_id, user_id, action_time ` +
`FROM django_admin_log ` +
`WHERE id = $1`
// run
@@ -185,7 +185,7 @@ func DjangoAdminLogByID(ctx context.Context, db DB, id int) (*DjangoAdminLog, er
dal := DjangoAdminLog{
_exists: true,
}
- if err := db.QueryRowContext(ctx, sqlstr, id).Scan(&dal.ID, &dal.ActionTime, &dal.ObjectID, &dal.ObjectRepr, &dal.ChangeMessage, &dal.ContentTypeID, &dal.UserID, &dal.ActionFlag); err != nil {
+ if err := db.QueryRowContext(ctx, sqlstr, id).Scan(&dal.ID, &dal.ObjectID, &dal.ObjectRepr, &dal.ActionFlag, &dal.ChangeMessage, &dal.ContentTypeID, &dal.UserID, &dal.ActionTime); err != nil {
return nil, logerror(err)
}
return &dal, nil
@@ -197,7 +197,7 @@ func DjangoAdminLogByID(ctx context.Context, db DB, id int) (*DjangoAdminLog, er
func DjangoAdminLogByUserID(ctx context.Context, db DB, userID int) ([]*DjangoAdminLog, error) {
// query
const sqlstr = `SELECT ` +
- `id, action_time, object_id, object_repr, change_message, content_type_id, user_id, action_flag ` +
+ `id, object_id, object_repr, action_flag, change_message, content_type_id, user_id, action_time ` +
`FROM django_admin_log ` +
`WHERE user_id = $1`
// run
@@ -214,7 +214,7 @@ func DjangoAdminLogByUserID(ctx context.Context, db DB, userID int) ([]*DjangoAd
_exists: true,
}
// scan
- if err := rows.Scan(&dal.ID, &dal.ActionTime, &dal.ObjectID, &dal.ObjectRepr, &dal.ChangeMessage, &dal.ContentTypeID, &dal.UserID, &dal.ActionFlag); err != nil {
+ if err := rows.Scan(&dal.ID, &dal.ObjectID, &dal.ObjectRepr, &dal.ActionFlag, &dal.ChangeMessage, &dal.ContentTypeID, &dal.UserID, &dal.ActionTime); err != nil {
return nil, logerror(err)
}
res = append(res, &dal)
diff --git a/_examples/django/sqlite3/xo.xo.dot b/_examples/django/sqlite3/xo.xo.dot
index 7809ae7d..79c84470 100644
--- a/_examples/django/sqlite3/xo.xo.dot
+++ b/_examples/django/sqlite3/xo.xo.dot
@@ -88,13 +88,13 @@ digraph django_db {
"django_admin_log" |
id: integer |
- action_time: datetime |
object_id: text |
object_repr: varchar |
+ action_flag: smallint |
change_message: text |
content_type_id: integer |
user_id: integer |
- action_flag: smallint |
+ action_time: datetime |
> ]
"django_content_type" [ label=<
diff --git a/_examples/django/sqlite3/xo.xo.json b/_examples/django/sqlite3/xo.xo.json
index ac182c30..eda5623c 100644
--- a/_examples/django/sqlite3/xo.xo.json
+++ b/_examples/django/sqlite3/xo.xo.json
@@ -991,12 +991,6 @@
},
"is_primary": true
},
- {
- "name": "action_time",
- "datatype": {
- "type": "datetime"
- }
- },
{
"name": "object_id",
"datatype": {
@@ -1011,6 +1005,13 @@
"prec": 200
}
},
+ {
+ "name": "action_flag",
+ "datatype": {
+ "type": "smallint",
+ "unsigned": true
+ }
+ },
{
"name": "change_message",
"datatype": {
@@ -1031,10 +1032,9 @@
}
},
{
- "name": "action_flag",
+ "name": "action_time",
"datatype": {
- "type": "smallint",
- "unsigned": true
+ "type": "datetime"
}
}
],
diff --git a/_examples/django/sqlite3/xo.xo.sql b/_examples/django/sqlite3/xo.xo.sql
index 72740b8a..b0f79f81 100644
--- a/_examples/django/sqlite3/xo.xo.sql
+++ b/_examples/django/sqlite3/xo.xo.sql
@@ -139,13 +139,13 @@ CREATE INDEX books_tags_tag_id_8d70b40a ON books_tags (tag_id);
-- table django_admin_log
CREATE TABLE django_admin_log (
id INTEGER NOT NULL,
- action_time DATETIME NOT NULL,
object_id TEXT,
object_repr VARCHAR(200) NOT NULL,
+ action_flag SMALLINT UNSIGNED NOT NULL,
change_message TEXT NOT NULL,
content_type_id INTEGER REFERENCES django_content_type (id),
user_id INTEGER NOT NULL REFERENCES auth_user (id),
- action_flag SMALLINT UNSIGNED NOT NULL,
+ action_time DATETIME NOT NULL,
PRIMARY KEY (id)
);
diff --git a/_examples/django/sqlite3/xo.xo.yaml b/_examples/django/sqlite3/xo.xo.yaml
index 1c4aaf26..307bf192 100644
--- a/_examples/django/sqlite3/xo.xo.yaml
+++ b/_examples/django/sqlite3/xo.xo.yaml
@@ -524,9 +524,6 @@ schemas:
datatype:
type: integer
is_primary: true
- - name: action_time
- datatype:
- type: datetime
- name: object_id
datatype:
type: text
@@ -535,6 +532,10 @@ schemas:
datatype:
type: varchar
prec: 200
+ - name: action_flag
+ datatype:
+ type: smallint
+ unsigned: true
- name: change_message
datatype:
type: text
@@ -545,10 +546,9 @@ schemas:
- name: user_id
datatype:
type: integer
- - name: action_flag
+ - name: action_time
datatype:
- type: smallint
- unsigned: true
+ type: datetime
primary_keys:
- name: id
datatype:
diff --git a/_examples/django/sqlserver/db.xo.go b/_examples/django/sqlserver/db.xo.go
index 5203b1fa..63e0f4e7 100644
--- a/_examples/django/sqlserver/db.xo.go
+++ b/_examples/django/sqlserver/db.xo.go
@@ -29,10 +29,9 @@ func Logf(s string, v ...interface{}) {
// SetLogger sets the package logger. Valid logger types:
//
-// io.Writer
-// func(string, ...interface{}) (int, error) // fmt.Printf
-// func(string, ...interface{}) // log.Printf
-//
+// io.Writer
+// func(string, ...interface{}) (int, error) // fmt.Printf
+// func(string, ...interface{}) // log.Printf
func SetLogger(logger interface{}) {
logf = convLogger(logger)
}
@@ -44,10 +43,9 @@ func Errorf(s string, v ...interface{}) {
// SetErrorLogger sets the package error logger. Valid logger types:
//
-// io.Writer
-// func(string, ...interface{}) (int, error) // fmt.Printf
-// func(string, ...interface{}) // log.Printf
-//
+// io.Writer
+// func(string, ...interface{}) (int, error) // fmt.Printf
+// func(string, ...interface{}) // log.Printf
func SetErrorLogger(logger interface{}) {
errf = convLogger(logger)
}
diff --git a/_examples/django/sqlserver/xo.xo.dot b/_examples/django/sqlserver/xo.xo.dot
index 4976747f..0d449069 100644
--- a/_examples/django/sqlserver/xo.xo.dot
+++ b/_examples/django/sqlserver/xo.xo.dot
@@ -30,7 +30,7 @@ digraph django {
"django.auth_user" |
id: int |
password: nvarchar |
- last_login: datetime2 |
+ last_login: datetimeoffset |
is_superuser: bit |
username: nvarchar |
first_name: nvarchar |
@@ -38,7 +38,7 @@ digraph django {
email: nvarchar |
is_staff: bit |
is_active: bit |
- date_joined: datetime2 |
+ date_joined: datetimeoffset |
> ]
"django.auth_user_groups" [ label=<
@@ -72,7 +72,7 @@ digraph django {
book_type: int |
title: nvarchar |
year: int |
- available: datetime2 |
+ available: datetimeoffset |
books_author_id_fkey: bigint |
> ]
@@ -88,7 +88,7 @@ digraph django {
"django.django_admin_log" |
id: int |
- action_time: datetime2 |
+ action_time: datetimeoffset |
object_id: nvarchar |
object_repr: nvarchar |
action_flag: smallint |
@@ -111,7 +111,7 @@ digraph django {
id: bigint |
app: nvarchar |
name: nvarchar |
- applied: datetime2 |
+ applied: datetimeoffset |
> ]
"django.django_session" [ label=<
@@ -119,7 +119,7 @@ digraph django {
"django.django_session" |
session_key: nvarchar |
session_data: nvarchar |
- expire_date: datetime2 |
+ expire_date: datetimeoffset |
> ]
"django.tags" [ label=<
diff --git a/_examples/django/sqlserver/xo.xo.json b/_examples/django/sqlserver/xo.xo.json
index f0440aac..9dc55abd 100644
--- a/_examples/django/sqlserver/xo.xo.json
+++ b/_examples/django/sqlserver/xo.xo.json
@@ -366,8 +366,8 @@
{
"name": "last_login",
"datatype": {
- "type": "datetime2",
- "prec": 27,
+ "type": "datetimeoffset",
+ "prec": 34,
"scale": 7,
"nullable": true
}
@@ -424,8 +424,8 @@
{
"name": "date_joined",
"datatype": {
- "type": "datetime2",
- "prec": 27,
+ "type": "datetimeoffset",
+ "prec": 34,
"scale": 7
}
}
@@ -871,8 +871,8 @@
{
"name": "available",
"datatype": {
- "type": "datetime2",
- "prec": 27,
+ "type": "datetimeoffset",
+ "prec": 34,
"scale": 7
}
},
@@ -1120,8 +1120,8 @@
{
"name": "action_time",
"datatype": {
- "type": "datetime2",
- "prec": 27,
+ "type": "datetimeoffset",
+ "prec": 34,
"scale": 7
}
},
@@ -1382,8 +1382,8 @@
{
"name": "applied",
"datatype": {
- "type": "datetime2",
- "prec": 27,
+ "type": "datetimeoffset",
+ "prec": 34,
"scale": 7
}
}
@@ -1439,8 +1439,8 @@
{
"name": "expire_date",
"datatype": {
- "type": "datetime2",
- "prec": 27,
+ "type": "datetimeoffset",
+ "prec": 34,
"scale": 7
}
}
@@ -1462,8 +1462,8 @@
{
"name": "expire_date",
"datatype": {
- "type": "datetime2",
- "prec": 27,
+ "type": "datetimeoffset",
+ "prec": 34,
"scale": 7
}
}
diff --git a/_examples/django/sqlserver/xo.xo.sql b/_examples/django/sqlserver/xo.xo.sql
index b9e8c471..464ed940 100644
--- a/_examples/django/sqlserver/xo.xo.sql
+++ b/_examples/django/sqlserver/xo.xo.sql
@@ -49,7 +49,7 @@ CREATE INDEX auth_group_permissions_permission_id_84c5c92e ON auth_group_permiss
CREATE TABLE auth_user (
id INT IDENTITY(1, 1),
password NVARCHAR(128) NOT NULL,
- last_login DATETIME2,
+ last_login DATETIMEOFFSET,
is_superuser BIT NOT NULL,
username NVARCHAR(150) NOT NULL,
first_name NVARCHAR(150) NOT NULL,
@@ -57,7 +57,7 @@ CREATE TABLE auth_user (
email NVARCHAR(254) NOT NULL,
is_staff BIT NOT NULL,
is_active BIT NOT NULL,
- date_joined DATETIME2 NOT NULL,
+ date_joined DATETIMEOFFSET NOT NULL,
CONSTRAINT auth_user_id_pkey PRIMARY KEY (id),
CONSTRAINT auth_user_username_6821ab7c_uniq UNIQUE (username)
);
@@ -106,7 +106,7 @@ CREATE TABLE books (
book_type INT NOT NULL,
title NVARCHAR(255) NOT NULL,
year INT NOT NULL,
- available DATETIME2 NOT NULL,
+ available DATETIMEOFFSET NOT NULL,
books_author_id_fkey BIGINT NOT NULL CONSTRAINT books_books_author_id_fkey_73ac0c26_fk_authors_author_id REFERENCES authors (author_id),
CONSTRAINT books_book_id_pkey PRIMARY KEY (book_id)
);
@@ -139,7 +139,7 @@ CREATE INDEX books_tags_tag_id_8d70b40a ON books_tags (tag_id);
-- table django_admin_log
CREATE TABLE django_admin_log (
id INT IDENTITY(1, 1),
- action_time DATETIME2 NOT NULL,
+ action_time DATETIMEOFFSET NOT NULL,
object_id NVARCHAR,
object_repr NVARCHAR(200) NOT NULL,
action_flag SMALLINT NOT NULL,
@@ -160,7 +160,7 @@ CREATE TABLE django_migrations (
id BIGINT IDENTITY(1, 1),
app NVARCHAR(255) NOT NULL,
name NVARCHAR(255) NOT NULL,
- applied DATETIME2 NOT NULL,
+ applied DATETIMEOFFSET NOT NULL,
CONSTRAINT django_migrations_id_pkey PRIMARY KEY (id)
);
@@ -168,7 +168,7 @@ CREATE TABLE django_migrations (
CREATE TABLE django_session (
session_key NVARCHAR(40) NOT NULL,
session_data NVARCHAR NOT NULL,
- expire_date DATETIME2 NOT NULL,
+ expire_date DATETIMEOFFSET NOT NULL,
CONSTRAINT django_session_session_key_pkey PRIMARY KEY (session_key)
);
diff --git a/_examples/django/sqlserver/xo.xo.yaml b/_examples/django/sqlserver/xo.xo.yaml
index 63a31971..a0a7720f 100644
--- a/_examples/django/sqlserver/xo.xo.yaml
+++ b/_examples/django/sqlserver/xo.xo.yaml
@@ -215,8 +215,8 @@ schemas:
prec: 128
- name: last_login
datatype:
- type: datetime2
- prec: 27
+ type: datetimeoffset
+ prec: 34
scale: 7
nullable: true
- name: is_superuser
@@ -249,8 +249,8 @@ schemas:
prec: 1
- name: date_joined
datatype:
- type: datetime2
- prec: 27
+ type: datetimeoffset
+ prec: 34
scale: 7
primary_keys:
- name: id
@@ -508,8 +508,8 @@ schemas:
prec: 10
- name: available
datatype:
- type: datetime2
- prec: 27
+ type: datetimeoffset
+ prec: 34
scale: 7
- name: books_author_id_fkey
datatype:
@@ -652,8 +652,8 @@ schemas:
is_sequence: true
- name: action_time
datatype:
- type: datetime2
- prec: 27
+ type: datetimeoffset
+ prec: 34
scale: 7
- name: object_id
datatype:
@@ -805,8 +805,8 @@ schemas:
prec: 255
- name: applied
datatype:
- type: datetime2
- prec: 27
+ type: datetimeoffset
+ prec: 34
scale: 7
primary_keys:
- name: id
@@ -839,8 +839,8 @@ schemas:
type: nvarchar
- name: expire_date
datatype:
- type: datetime2
- prec: 27
+ type: datetimeoffset
+ prec: 34
scale: 7
primary_keys:
- name: session_key
@@ -853,8 +853,8 @@ schemas:
fields:
- name: expire_date
datatype:
- type: datetime2
- prec: 27
+ type: datetimeoffset
+ prec: 34
scale: 7
- name: django_session_session_key_pkey
fields:
diff --git a/_examples/init/sqlserver.sql b/_examples/init/sqlserver.sql
index 3a0e13e5..5aa19050 100644
--- a/_examples/init/sqlserver.sql
+++ b/_examples/init/sqlserver.sql
@@ -10,7 +10,7 @@ DROP DATABASE :NAME;
CREATE DATABASE :NAME
CONTAINMENT=PARTIAL;
-\connect 'ms://localhost/':NAME
+\connect 'ms://localhost/?database=':NAME
CREATE LOGIN :NAME
WITH
diff --git a/_examples/northwind/gen.sh b/_examples/northwind/gen.sh
index ee531922..4d69a2a2 100755
--- a/_examples/northwind/gen.sh
+++ b/_examples/northwind/gen.sh
@@ -10,7 +10,7 @@ DSNS+=(
[oracle]=or://$TEST:$TEST@localhost:1521/db1
[postgres]=pg://$TEST:$TEST@localhost/$TEST
[sqlite3]=sq:$TEST.db
- [sqlserver]=ms://$TEST:$TEST@localhost/$TEST
+ [sqlserver]=ms://$TEST:$TEST@localhost/?database=$TEST
)
APPLY=0
diff --git a/go.mod b/go.mod
index f7fadee4..bec0f6e3 100644
--- a/go.mod
+++ b/go.mod
@@ -6,41 +6,41 @@ require (
github.com/Masterminds/sprig/v3 v3.2.3
github.com/go-sql-driver/mysql v1.7.0
github.com/gobwas/glob v0.2.3
- github.com/goccy/go-yaml v1.9.8
+ github.com/goccy/go-yaml v1.10.1
github.com/kenshaw/inflector v0.2.0
github.com/kenshaw/snaker v0.2.0
github.com/lib/pq v1.10.7
github.com/mattn/go-sqlite3 v1.14.16
- github.com/microsoft/go-mssqldb v0.19.0
- github.com/sijms/go-ora/v2 v2.5.22
+ github.com/microsoft/go-mssqldb v0.21.0
+ github.com/sijms/go-ora/v2 v2.6.10
github.com/spf13/cobra v1.6.1
- github.com/traefik/yaegi v0.14.3
+ github.com/traefik/yaegi v0.15.1
github.com/xo/dburl v0.13.0
github.com/yookoala/realpath v1.0.0
- golang.org/x/tools v0.5.0
+ golang.org/x/tools v0.7.0
mvdan.cc/gofumpt v0.4.0
)
require (
github.com/Masterminds/goutils v1.1.1 // indirect
github.com/Masterminds/semver/v3 v3.2.0 // indirect
- github.com/fatih/color v1.13.0 // indirect
+ github.com/fatih/color v1.15.0 // indirect
github.com/golang-sql/civil v0.0.0-20220223132316-b832511892a9 // indirect
github.com/golang-sql/sqlexp v0.1.0 // indirect
github.com/google/go-cmp v0.5.9 // indirect
github.com/google/uuid v1.3.0 // indirect
github.com/huandu/xstrings v1.4.0 // indirect
- github.com/imdario/mergo v0.3.13 // indirect
+ github.com/imdario/mergo v0.3.15 // indirect
github.com/inconshreveable/mousetrap v1.1.0 // indirect
github.com/mattn/go-colorable v0.1.13 // indirect
- github.com/mattn/go-isatty v0.0.17 // indirect
+ github.com/mattn/go-isatty v0.0.18 // indirect
github.com/mitchellh/copystructure v1.2.0 // indirect
github.com/mitchellh/reflectwalk v1.0.2 // indirect
github.com/shopspring/decimal v1.3.1 // indirect
github.com/spf13/cast v1.5.0 // indirect
github.com/spf13/pflag v1.0.5 // indirect
- golang.org/x/crypto v0.5.0 // indirect
- golang.org/x/mod v0.7.0 // indirect
- golang.org/x/sys v0.4.0 // indirect
+ golang.org/x/crypto v0.7.0 // indirect
+ golang.org/x/mod v0.9.0 // indirect
+ golang.org/x/sys v0.6.0 // indirect
golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect
)
diff --git a/go.sum b/go.sum
index 191e270d..0e376af1 100644
--- a/go.sum
+++ b/go.sum
@@ -1,8 +1,10 @@
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.0.0/go.mod h1:uGG2W01BaETf0Ozp+QxxKJdMBNRWPdstHG0Fmdwn1/U=
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.1.2/go.mod h1:uGG2W01BaETf0Ozp+QxxKJdMBNRWPdstHG0Fmdwn1/U=
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.1.0/go.mod h1:bhXu1AjYL+wutSL/kpSq6s7733q2Rb0yuot9Zgfqa/0=
+github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.2.1/go.mod h1:gLa1CL2RNE4s7M3yopJ/p0iq5DdY6Yv5ZUt9MTRZOQM=
github.com/Azure/azure-sdk-for-go/sdk/internal v1.0.0/go.mod h1:eWRD7oawr1Mu1sLCawqVc0CUiF43ia3qQMxLscsKQ9w=
github.com/AzureAD/microsoft-authentication-library-for-go v0.5.1/go.mod h1:Vt9sXTKwMyGcOxSmLDMnGPgqsUg7m8pe215qMLrDXw4=
+github.com/AzureAD/microsoft-authentication-library-for-go v0.8.1/go.mod h1:4qFor3D/HDsvBME35Xy9rwW9DecL+M2sNw1ybjPtwA0=
github.com/Masterminds/goutils v1.1.1 h1:5nUrii3FMTL5diU80unEVvNevw1nH4+ZV4DSLVJLSYI=
github.com/Masterminds/goutils v1.1.1/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU=
github.com/Masterminds/semver/v3 v3.2.0 h1:3MEsd0SM6jqZojhjLWWeBY+Kcjy9i6MQAeY7YgDP83g=
@@ -18,6 +20,8 @@ github.com/dnaeon/go-vcr v1.2.0/go.mod h1:R4UdLID7HZT3taECzJs4YgbbH6PIGXB6W/sc5O
github.com/fatih/color v1.10.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM=
github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w=
github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk=
+github.com/fatih/color v1.15.0 h1:kOqh6YHBtK8aywxGerMG2Eq3H6Qgoqeo13Bk2Mv/nBs=
+github.com/fatih/color v1.15.0/go.mod h1:0h5ZqXfHYED7Bhv2ZJamyIOUej9KtShiJESRwBDUSsw=
github.com/frankban/quicktest v1.14.3 h1:FJKSZTDHjyhriyC81FLQ0LY93eSai0ZyR/ZIkd3ZUKE=
github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4=
github.com/go-playground/locales v0.13.0 h1:HyWk6mgj5qFqCT5fjGBuRArbVDfE4hi8+e8ceBS/t7Q=
@@ -32,9 +36,12 @@ github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y=
github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8=
github.com/goccy/go-yaml v1.9.8 h1:5gMyLUeU1/6zl+WFfR1hN7D2kf+1/eRGa7DFtToiBvQ=
github.com/goccy/go-yaml v1.9.8/go.mod h1:JubOolP3gh0HpiBc4BLRD4YmjEjHAmIIB2aaXKkTfoE=
+github.com/goccy/go-yaml v1.10.1 h1:neijiyxgQOmEyVw8ZsDxcCzkU3NJ5NS+q7xmnOcd8UQ=
+github.com/goccy/go-yaml v1.10.1/go.mod h1:H+mJrWtjPTJAHvRbV09MCK9xYwODM+wRTVFFTWckfng=
github.com/golang-jwt/jwt v3.2.1+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I=
github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I=
github.com/golang-jwt/jwt/v4 v4.2.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg=
+github.com/golang-jwt/jwt/v4 v4.4.2/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0=
github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0=
github.com/golang-sql/civil v0.0.0-20220223132316-b832511892a9 h1:au07oEsX2xN0ktxqI+Sida1w446QrXBRJ0nee3SNZlA=
github.com/golang-sql/civil v0.0.0-20220223132316-b832511892a9/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0=
@@ -54,6 +61,8 @@ github.com/huandu/xstrings v1.4.0/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq
github.com/imdario/mergo v0.3.11/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA=
github.com/imdario/mergo v0.3.13 h1:lFzP57bqS/wsqKssCGmtLAb8A0wKjLGrve2q3PPVcBk=
github.com/imdario/mergo v0.3.13/go.mod h1:4lJ1jqUDcsbIECGy0RUJAXNIhg+6ocWgb1ALK2O4oXg=
+github.com/imdario/mergo v0.3.15 h1:M8XP7IuFNsqUx6VPK2P9OSmsYsI/YFaGil0uD21V3dM=
+github.com/imdario/mergo v0.3.15/go.mod h1:WBLT9ZmE3lPoWsEzCh9LPo3TiwVN+ZKEjmz+hD27ysY=
github.com/inconshreveable/mousetrap v1.0.1/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=
github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
@@ -83,10 +92,14 @@ github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27k
github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
github.com/mattn/go-isatty v0.0.17 h1:BTarxUcIeDqL27Mc+vyvdWYSL28zpIhv3RoTdsLMPng=
github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
+github.com/mattn/go-isatty v0.0.18 h1:DOKFKCQ7FNG2L1rbrmstDN4QVRdS89Nkh85u68Uwp98=
+github.com/mattn/go-isatty v0.0.18/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
github.com/mattn/go-sqlite3 v1.14.16 h1:yOQRA0RpS5PFz/oikGwBEqvAWhWg5ufRz4ETLjwpU1Y=
github.com/mattn/go-sqlite3 v1.14.16/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg=
github.com/microsoft/go-mssqldb v0.19.0 h1:LMRSgLcNMF8paPX14xlyQBmBH+jnFylPsYpVZf86eHM=
github.com/microsoft/go-mssqldb v0.19.0/go.mod h1:ukJCBnnzLzpVF0qYRT+eg1e+eSwjeQ7IvenUv8QPook=
+github.com/microsoft/go-mssqldb v0.21.0 h1:p2rpHIL7TlSv1QrbXJUAcbyRKnIT0C9rRkH2E4OjLn8=
+github.com/microsoft/go-mssqldb v0.21.0/go.mod h1:+4wZTUnz/SV6nffv+RRRB/ss8jPng5Sho2SmM1l2ts4=
github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw=
github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw=
github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s=
@@ -106,6 +119,8 @@ github.com/shopspring/decimal v1.3.1 h1:2Usl1nmF/WZucqkFZhnfFYxxxu8LG21F6nPQBE5g
github.com/shopspring/decimal v1.3.1/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o=
github.com/sijms/go-ora/v2 v2.5.22 h1:TH5AOdzPHGxBosz0LOGKTGaUVa4N+hh3u47DjmgWn3Q=
github.com/sijms/go-ora/v2 v2.5.22/go.mod h1:EHxlY6x7y9HAsdfumurRfTd+v8NrEOTR3Xl4FWlH6xk=
+github.com/sijms/go-ora/v2 v2.6.10 h1:15n+6SJ/LqxBPuiiq8WZ+TVVftE3hQNPrNcOMyz2NSU=
+github.com/sijms/go-ora/v2 v2.6.10/go.mod h1:EHxlY6x7y9HAsdfumurRfTd+v8NrEOTR3Xl4FWlH6xk=
github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE=
github.com/spf13/cast v1.5.0 h1:rj3WzYc11XZaIZMPKmwP96zkFEnnAmV8s6XbB2aY32w=
github.com/spf13/cast v1.5.0/go.mod h1:SpXXQ5YoyJw6s3/6cMTQuxvgRl3PCJiyaX9p6b155UU=
@@ -122,6 +137,8 @@ github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5Cc
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/traefik/yaegi v0.14.3 h1:LqA0k8DKwvRMc+msfQjNusphHJc+r6WC5tZU5TmUFOM=
github.com/traefik/yaegi v0.14.3/go.mod h1:AVRxhaI2G+nUsaM1zyktzwXn69G3t/AuTDrCiTds9p0=
+github.com/traefik/yaegi v0.15.1 h1:YA5SbaL6HZA0Exh9T/oArRHqGN2HQ+zgmCY7dkoTXu4=
+github.com/traefik/yaegi v0.15.1/go.mod h1:AVRxhaI2G+nUsaM1zyktzwXn69G3t/AuTDrCiTds9p0=
github.com/xo/dburl v0.13.0 h1:kq+oD1j/m8DnJ/p6G/LQXRosVchs8q5/AszEUKkvYfo=
github.com/xo/dburl v0.13.0/go.mod h1:K6rSPgbVqP3ZFT0RHkdg/M3M5KhLeV2MaS/ZqaLd1kA=
github.com/yookoala/realpath v1.0.0 h1:7OA9pj4FZd+oZDsyvXWQvjn5oBdcHRTV44PpdMSuImQ=
@@ -136,9 +153,13 @@ golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0
golang.org/x/crypto v0.3.0/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4=
golang.org/x/crypto v0.5.0 h1:U/0M97KRkSFvyD/3FSmdP5W5swImpNgle/EHFhOsQPE=
golang.org/x/crypto v0.5.0/go.mod h1:NK/OQwhpMQP3MwtdjgLlYHnH9ebylxKWv3e0fK+mkQU=
+golang.org/x/crypto v0.7.0 h1:AvwMYaRytfdeVt3u6mLaxYtErKYjxA2OXjJ1HHq6t3A=
+golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU=
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
golang.org/x/mod v0.7.0 h1:LapD9S96VoQRhi/GrNTqeBJFrUjs5UHCAtTlgwA5oZA=
golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
+golang.org/x/mod v0.9.0 h1:KENHtAZL2y3NLMYZeHY9DW8HW8V+kQyJsY/V9JlKvCs=
+golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
@@ -170,6 +191,8 @@ golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBc
golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.4.0 h1:Zr2JFtRQNX3BCZ8YtxRE9hNJYC8J6I1MVbMg6owUp18=
golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.6.0 h1:MVltZSvRTcU2ljQOhs94SXPftV6DCNnZViHeQps87pQ=
+golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc=
@@ -184,6 +207,8 @@ golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtn
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
golang.org/x/tools v0.5.0 h1:+bSpV5HIeWkuvgaMfI3UmKRThoTA5ODJTUd8T17NO+4=
golang.org/x/tools v0.5.0/go.mod h1:N+Kgy78s5I24c24dU8OfWNEotWjutIs8SnJvn5IDq+k=
+golang.org/x/tools v0.7.0 h1:W4OVu8VVOaIO0yzWMNdepAulS7YfoS3Zabrm8DOXXU4=
+golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3jS9O0/s90v0rJh3X/OLHEUk=