diff --git a/dialect/dialect.go b/dialect/dialect.go index 5bd6afa56..d5c392d64 100644 --- a/dialect/dialect.go +++ b/dialect/dialect.go @@ -6,6 +6,7 @@ package dialect import ( "context" + "database/sql" "database/sql/driver" "fmt" "log" @@ -109,6 +110,23 @@ func (d *DebugDriver) Tx(ctx context.Context) (Tx, error) { return &DebugTx{tx, id, d.log, ctx}, nil } +// BeginTx adds an log-id for the transaction and calls the underlying driver BeginTx command if it's supported. +func (d *DebugDriver) BeginTx(ctx context.Context, opts *sql.TxOptions) (Tx, error) { + drv, ok := d.Driver.(interface { + BeginTx(context.Context, *sql.TxOptions) (Tx, error) + }) + if !ok { + return nil, fmt.Errorf("Driver.BeginTx is not supported") + } + tx, err := drv.BeginTx(ctx, opts) + if err != nil { + return nil, err + } + id := uuid.New().String() + d.log(ctx, fmt.Sprintf("driver.BeginTx(%s): started", id)) + return &DebugTx{tx, id, d.log, ctx}, nil +} + // DebugTx is a transaction implementation that logs all transaction operations. type DebugTx struct { Tx // underlying transaction. diff --git a/entc/gen/internal/bindata.go b/entc/gen/internal/bindata.go index 9706aa314..a6f869338 100644 --- a/entc/gen/internal/bindata.go +++ b/entc/gen/internal/bindata.go @@ -870,7 +870,7 @@ func templateDialectSqlSelectTmpl() (*asset, error) { return a, nil } -var _templateDialectSqlTxTmpl = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x84\x92\xbf\x6e\xdb\x3a\x18\xc5\x67\xf1\x29\xce\x35\x7c\x03\xcb\x50\xe8\x34\x5b\x55\x64\x48\xdd\x14\x08\x50\xb8\x43\xbd\x07\x0a\xf9\x51\x26\xac\x90\x0e\x49\x39\x0a\x04\xbe\x7b\x41\xca\x2e\xe2\x2e\x9d\xf4\xfd\x3f\xbf\x43\x68\x1c\x57\x4b\xb6\xb6\x87\x77\xa7\xdb\x5d\xc0\xed\xcd\xa7\xcf\xd7\x07\x47\x9e\x4c\xc0\xf7\x46\xd0\xb3\xb5\x7b\x3c\x1a\xc1\x71\xdf\x75\xc8\x43\x1e\xa9\xef\x8e\x24\x39\xdb\xee\xb4\x87\xb7\xbd\x13\x04\x61\x25\x41\x7b\x74\x5a\x90\xf1\x24\xd1\x1b\x49\x0e\x61\x47\xb8\x3f\x34\x62\x47\xb8\xe5\x37\xe7\x2e\x94\xed\x8d\x64\xda\xe4\xfe\x8f\xc7\xf5\xc3\xe6\xd7\x03\x94\xee\x08\xa7\x9a\xb3\x36\x40\x6a\x47\x22\x58\xf7\x0e\xab\x10\x3e\x88\x05\x47\xc4\xd9\x72\x15\x23\x63\xe3\x08\x49\x4a\x1b\xc2\x4c\xea\xa6\x23\x11\x56\xfe\xb5\x5b\x85\xc1\x1e\x82\xb6\xc6\xcf\x10\x23\x5b\xad\xf0\x95\x5a\x6d\xb6\x03\x1c\x85\xde\x19\x8f\x06\xc1\x35\xc6\x37\x22\x4d\x35\x1d\x44\xa7\x93\xed\x37\x1d\x76\xf0\x07\x12\x5a\x69\x92\x38\x1d\xe1\x4c\xf5\x46\x60\x21\xb0\x5c\xe7\xb9\xf2\x7c\x6f\x21\xc2\x00\x61\x4d\xa0\x21\xf0\xf5\xf4\xad\xd2\x9a\xc7\xd2\xbf\x76\x7c\x3b\xfc\x9c\x4e\x94\x58\x2c\xb7\x43\x05\x72\xce\xba\x12\x23\x2b\xb4\xc2\x53\x05\xbb\x47\x7d\x07\xc1\xa5\xd3\x47\x72\x7c\xb1\x0c\xc3\xb7\x1c\x96\x5f\x52\x6f\x64\x45\x31\x21\xc3\xe8\xae\x82\x7a\x09\xfc\x21\x9d\x50\x8b\x19\x99\x50\x43\x34\xc6\xd8\x00\x1f\x1a\x17\x2e\x4d\x65\x2f\xda\x5c\x16\x67\x25\x2b\x22\x2b\xc2\x44\xf2\x97\x74\x02\x3e\x89\xf3\x0f\xfe\x26\x3f\x65\x26\x4e\x4b\xff\xdd\x25\x96\x7f\xa3\x65\x26\x6d\xda\x4b\x82\x1a\xff\x1f\x67\x59\x7d\x42\x11\xaa\xcd\x18\xd6\x28\xdd\x8e\x13\x4b\x8d\xab\xf3\x33\x8c\x61\xa8\x91\x18\xa4\x3b\xd6\x7f\x60\x63\x85\xce\xb6\x29\xef\x6c\x5b\x41\xd2\x73\x9f\xb3\x1c\x54\xd8\x59\xbb\xf7\x29\xcf\x41\x64\x67\xce\xab\xed\x90\xa8\x27\xad\x1a\x42\xb5\x15\x2b\x8a\x71\x84\x6b\x4c\x4b\x98\x3f\x55\x98\x9b\x44\x33\xe7\x1b\x2b\xc9\xe3\x3a\x46\x56\xe4\x89\xb9\xe1\x9b\xe6\x85\x10\x63\x8d\x0d\xbd\x5d\x54\xa6\x7f\x62\x21\x54\x5b\x9e\xee\x91\x91\xd3\x6e\xac\xd2\xe3\xb0\xc8\x4e\xc5\x18\xd9\xef\x00\x00\x00\xff\xff\x36\xd8\x2d\x14\x76\x03\x00\x00") +var _templateDialectSqlTxTmpl = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x84\x92\x3f\x6f\xdb\x30\x10\xc5\x67\xf1\x53\xbc\x1a\x6e\x60\x19\x0a\x9d\x66\xab\x8a\x0c\xa9\x9b\x02\x01\x0a\x77\xa8\xf7\x40\x21\x8f\x32\x61\x85\x74\x48\xda\x51\x20\xf0\xbb\x17\xa4\xec\x34\x6e\x87\x4e\xba\x7f\xbc\xf7\x7e\x07\x0d\xc3\x62\xce\x96\x76\xf7\xea\x74\xbb\x09\xb8\xbe\xfa\xf4\xf9\x72\xe7\xc8\x93\x09\xf8\xde\x08\x7a\xb4\x76\x8b\x7b\x23\x38\x6e\xbb\x0e\x79\xc8\x23\xf5\xdd\x81\x24\x67\xeb\x8d\xf6\xf0\x76\xef\x04\x41\x58\x49\xd0\x1e\x9d\x16\x64\x3c\x49\xec\x8d\x24\x87\xb0\x21\xdc\xee\x1a\xb1\x21\x5c\xf3\xab\x53\x17\xca\xee\x8d\x64\xda\xe4\xfe\x8f\xfb\xe5\xdd\xea\xd7\x1d\x94\xee\x08\xc7\x9a\xb3\x36\x40\x6a\x47\x22\x58\xf7\x0a\xab\x10\xde\x89\x05\x47\xc4\xd9\x7c\x11\x23\x63\xc3\x00\x49\x4a\x1b\xc2\x44\xea\xa6\x23\x11\x16\xfe\xb9\x5b\x84\xde\xee\x82\xb6\xc6\x4f\x10\x23\x5b\x2c\xf0\x95\x5a\x6d\xd6\x3d\x1c\x85\xbd\x33\x1e\x0d\x82\x6b\x8c\x6f\x44\x9a\x6a\x3a\x88\x4e\x27\xec\x17\x1d\x36\xf0\x3b\x12\x5a\x69\x92\x38\x2e\xe1\x4c\xed\x8d\xc0\x4c\x60\xbe\xcc\x73\xe5\x69\xdf\x4c\x84\x1e\xc2\x9a\x40\x7d\xe0\xcb\xf1\x5b\xa5\x67\x1e\x73\xff\xdc\xf1\x75\xff\x73\x5c\x51\x62\x36\x5f\xf7\x15\xc8\x39\xeb\x4a\x0c\xac\xd0\x0a\x0f\x15\xec\x16\xf5\x0d\x04\x97\x4e\x1f\xc8\xf1\xd9\x3c\xf4\xdf\x72\x58\x7e\x49\xbd\x81\x15\xc5\x68\x19\x46\x77\x15\xd4\x53\xe0\x77\x69\x85\x9a\x4d\xc8\x84\x1a\xa2\x31\xc6\x06\xf8\xd0\xb8\x70\x0e\x95\x59\xb4\x39\x2f\x4e\x4a\x56\x44\x56\x84\xd1\xc9\xb9\xb4\x36\x81\x9c\x6a\x04\x65\xd5\x37\xc0\xbf\xe1\xfe\xe1\x3a\xde\x9d\xff\xc1\x63\x45\x2c\xf9\xbb\x0b\x8d\x17\x29\x33\x73\x92\xfd\x70\x93\x68\xfe\x0f\x97\xa9\xb4\x69\xcf\x19\x6a\x7c\x3c\x4c\xb2\xd4\x08\x23\x54\x9b\x41\xac\x51\xba\x1d\x46\x9a\x1a\x17\xa7\x43\x0e\xa1\xaf\x91\x3c\x48\x77\xa8\xdf\x70\x63\x85\xce\xb6\x29\xef\x6c\x5b\x41\xd2\xe3\x3e\x67\x39\xa8\xb0\xb1\x76\xeb\x53\x9e\x83\xc8\x4e\x3e\x2f\xd6\x7d\x72\x3d\x6a\xd5\x10\xaa\xad\x58\x51\x0c\x03\x5c\x63\x5a\xc2\xf4\xa1\xc2\xd4\x24\x37\x53\xbe\xb2\x92\x3c\x2e\x63\x64\x45\x9e\x98\x1a\xbe\x6a\x9e\x08\x31\xd6\x58\xd1\xcb\x59\x65\xfc\xab\x66\x42\xb5\xe5\x71\x1f\x19\x39\xbe\x8d\x55\x3a\x0e\x8b\xec\x58\x8c\x91\xfd\x0e\x00\x00\xff\xff\xba\xdd\x6c\xbf\xb8\x03\x00\x00") func templateDialectSqlTxTmplBytes() ([]byte, error) { return bindataRead( @@ -885,7 +885,7 @@ func templateDialectSqlTxTmpl() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "template/dialect/sql/tx.tmpl", size: 886, mode: os.FileMode(420), modTime: time.Unix(1, 0)} + info := bindataFileInfo{name: "template/dialect/sql/tx.tmpl", size: 952, mode: os.FileMode(420), modTime: time.Unix(1, 0)} a := &asset{bytes: bytes, info: info} return a, nil } diff --git a/entc/gen/template/dialect/sql/tx.tmpl b/entc/gen/template/dialect/sql/tx.tmpl index ec822554b..75e9ee6e7 100644 --- a/entc/gen/template/dialect/sql/tx.tmpl +++ b/entc/gen/template/dialect/sql/tx.tmpl @@ -10,7 +10,9 @@ func (c *Client) BeginTx(ctx context.Context, opts *sql.TxOptions) (*Tx, error) if _, ok := c.driver.(*txDriver); ok { return nil, fmt.Errorf("ent: cannot start a transaction within a transaction") } - tx, err := c.driver.(*sql.Driver).BeginTx(ctx, opts) + tx, err := c.driver.(interface { + BeginTx(context.Context, *sql.TxOptions) (dialect.Tx, error) + }).BeginTx(ctx, opts) if err != nil { return nil, fmt.Errorf("ent: starting a transaction: %v", err) } diff --git a/entc/integration/config/ent/client.go b/entc/integration/config/ent/client.go index bf1b7f65e..5203523c1 100644 --- a/entc/integration/config/ent/client.go +++ b/entc/integration/config/ent/client.go @@ -81,7 +81,9 @@ func (c *Client) BeginTx(ctx context.Context, opts *sql.TxOptions) (*Tx, error) if _, ok := c.driver.(*txDriver); ok { return nil, fmt.Errorf("ent: cannot start a transaction within a transaction") } - tx, err := c.driver.(*sql.Driver).BeginTx(ctx, opts) + tx, err := c.driver.(interface { + BeginTx(context.Context, *sql.TxOptions) (dialect.Tx, error) + }).BeginTx(ctx, opts) if err != nil { return nil, fmt.Errorf("ent: starting a transaction: %v", err) } diff --git a/entc/integration/customid/ent/client.go b/entc/integration/customid/ent/client.go index db70f02bb..26d033ca3 100644 --- a/entc/integration/customid/ent/client.go +++ b/entc/integration/customid/ent/client.go @@ -108,7 +108,9 @@ func (c *Client) BeginTx(ctx context.Context, opts *sql.TxOptions) (*Tx, error) if _, ok := c.driver.(*txDriver); ok { return nil, fmt.Errorf("ent: cannot start a transaction within a transaction") } - tx, err := c.driver.(*sql.Driver).BeginTx(ctx, opts) + tx, err := c.driver.(interface { + BeginTx(context.Context, *sql.TxOptions) (dialect.Tx, error) + }).BeginTx(ctx, opts) if err != nil { return nil, fmt.Errorf("ent: starting a transaction: %v", err) } diff --git a/entc/integration/ent/client.go b/entc/integration/ent/client.go index b4e034413..b70c0a420 100644 --- a/entc/integration/ent/client.go +++ b/entc/integration/ent/client.go @@ -148,7 +148,9 @@ func (c *Client) BeginTx(ctx context.Context, opts *sql.TxOptions) (*Tx, error) if _, ok := c.driver.(*txDriver); ok { return nil, fmt.Errorf("ent: cannot start a transaction within a transaction") } - tx, err := c.driver.(*sql.Driver).BeginTx(ctx, opts) + tx, err := c.driver.(interface { + BeginTx(context.Context, *sql.TxOptions) (dialect.Tx, error) + }).BeginTx(ctx, opts) if err != nil { return nil, fmt.Errorf("ent: starting a transaction: %v", err) } diff --git a/entc/integration/hooks/ent/client.go b/entc/integration/hooks/ent/client.go index 5ea9758a4..89c347d17 100644 --- a/entc/integration/hooks/ent/client.go +++ b/entc/integration/hooks/ent/client.go @@ -87,7 +87,9 @@ func (c *Client) BeginTx(ctx context.Context, opts *sql.TxOptions) (*Tx, error) if _, ok := c.driver.(*txDriver); ok { return nil, fmt.Errorf("ent: cannot start a transaction within a transaction") } - tx, err := c.driver.(*sql.Driver).BeginTx(ctx, opts) + tx, err := c.driver.(interface { + BeginTx(context.Context, *sql.TxOptions) (dialect.Tx, error) + }).BeginTx(ctx, opts) if err != nil { return nil, fmt.Errorf("ent: starting a transaction: %v", err) } diff --git a/entc/integration/idtype/ent/client.go b/entc/integration/idtype/ent/client.go index 479d7059b..13db915dc 100644 --- a/entc/integration/idtype/ent/client.go +++ b/entc/integration/idtype/ent/client.go @@ -82,7 +82,9 @@ func (c *Client) BeginTx(ctx context.Context, opts *sql.TxOptions) (*Tx, error) if _, ok := c.driver.(*txDriver); ok { return nil, fmt.Errorf("ent: cannot start a transaction within a transaction") } - tx, err := c.driver.(*sql.Driver).BeginTx(ctx, opts) + tx, err := c.driver.(interface { + BeginTx(context.Context, *sql.TxOptions) (dialect.Tx, error) + }).BeginTx(ctx, opts) if err != nil { return nil, fmt.Errorf("ent: starting a transaction: %v", err) } diff --git a/entc/integration/json/ent/client.go b/entc/integration/json/ent/client.go index dc75d9f45..22970a3cc 100644 --- a/entc/integration/json/ent/client.go +++ b/entc/integration/json/ent/client.go @@ -81,7 +81,9 @@ func (c *Client) BeginTx(ctx context.Context, opts *sql.TxOptions) (*Tx, error) if _, ok := c.driver.(*txDriver); ok { return nil, fmt.Errorf("ent: cannot start a transaction within a transaction") } - tx, err := c.driver.(*sql.Driver).BeginTx(ctx, opts) + tx, err := c.driver.(interface { + BeginTx(context.Context, *sql.TxOptions) (dialect.Tx, error) + }).BeginTx(ctx, opts) if err != nil { return nil, fmt.Errorf("ent: starting a transaction: %v", err) } diff --git a/entc/integration/migrate/entv1/client.go b/entc/integration/migrate/entv1/client.go index 702bde565..ae37d3bfb 100644 --- a/entc/integration/migrate/entv1/client.go +++ b/entc/integration/migrate/entv1/client.go @@ -97,7 +97,9 @@ func (c *Client) BeginTx(ctx context.Context, opts *sql.TxOptions) (*Tx, error) if _, ok := c.driver.(*txDriver); ok { return nil, fmt.Errorf("ent: cannot start a transaction within a transaction") } - tx, err := c.driver.(*sql.Driver).BeginTx(ctx, opts) + tx, err := c.driver.(interface { + BeginTx(context.Context, *sql.TxOptions) (dialect.Tx, error) + }).BeginTx(ctx, opts) if err != nil { return nil, fmt.Errorf("ent: starting a transaction: %v", err) } diff --git a/entc/integration/migrate/entv2/client.go b/entc/integration/migrate/entv2/client.go index be816ea98..cc5aed7c1 100644 --- a/entc/integration/migrate/entv2/client.go +++ b/entc/integration/migrate/entv2/client.go @@ -112,7 +112,9 @@ func (c *Client) BeginTx(ctx context.Context, opts *sql.TxOptions) (*Tx, error) if _, ok := c.driver.(*txDriver); ok { return nil, fmt.Errorf("ent: cannot start a transaction within a transaction") } - tx, err := c.driver.(*sql.Driver).BeginTx(ctx, opts) + tx, err := c.driver.(interface { + BeginTx(context.Context, *sql.TxOptions) (dialect.Tx, error) + }).BeginTx(ctx, opts) if err != nil { return nil, fmt.Errorf("ent: starting a transaction: %v", err) } diff --git a/entc/integration/privacy/ent/client.go b/entc/integration/privacy/ent/client.go index 589dd1bf1..542ca5e7e 100644 --- a/entc/integration/privacy/ent/client.go +++ b/entc/integration/privacy/ent/client.go @@ -92,7 +92,9 @@ func (c *Client) BeginTx(ctx context.Context, opts *sql.TxOptions) (*Tx, error) if _, ok := c.driver.(*txDriver); ok { return nil, fmt.Errorf("ent: cannot start a transaction within a transaction") } - tx, err := c.driver.(*sql.Driver).BeginTx(ctx, opts) + tx, err := c.driver.(interface { + BeginTx(context.Context, *sql.TxOptions) (dialect.Tx, error) + }).BeginTx(ctx, opts) if err != nil { return nil, fmt.Errorf("ent: starting a transaction: %v", err) } diff --git a/entc/integration/template/ent/client.go b/entc/integration/template/ent/client.go index 1e8170cc5..3493c1ca9 100644 --- a/entc/integration/template/ent/client.go +++ b/entc/integration/template/ent/client.go @@ -94,7 +94,9 @@ func (c *Client) BeginTx(ctx context.Context, opts *sql.TxOptions) (*Tx, error) if _, ok := c.driver.(*txDriver); ok { return nil, fmt.Errorf("ent: cannot start a transaction within a transaction") } - tx, err := c.driver.(*sql.Driver).BeginTx(ctx, opts) + tx, err := c.driver.(interface { + BeginTx(context.Context, *sql.TxOptions) (dialect.Tx, error) + }).BeginTx(ctx, opts) if err != nil { return nil, fmt.Errorf("ent: starting a transaction: %v", err) } diff --git a/examples/edgeindex/ent/client.go b/examples/edgeindex/ent/client.go index daa3542e3..43730e5f1 100644 --- a/examples/edgeindex/ent/client.go +++ b/examples/edgeindex/ent/client.go @@ -87,7 +87,9 @@ func (c *Client) BeginTx(ctx context.Context, opts *sql.TxOptions) (*Tx, error) if _, ok := c.driver.(*txDriver); ok { return nil, fmt.Errorf("ent: cannot start a transaction within a transaction") } - tx, err := c.driver.(*sql.Driver).BeginTx(ctx, opts) + tx, err := c.driver.(interface { + BeginTx(context.Context, *sql.TxOptions) (dialect.Tx, error) + }).BeginTx(ctx, opts) if err != nil { return nil, fmt.Errorf("ent: starting a transaction: %v", err) } diff --git a/examples/entcpkg/ent/client.go b/examples/entcpkg/ent/client.go index a732baf20..336830af6 100644 --- a/examples/entcpkg/ent/client.go +++ b/examples/entcpkg/ent/client.go @@ -81,7 +81,9 @@ func (c *Client) BeginTx(ctx context.Context, opts *sql.TxOptions) (*Tx, error) if _, ok := c.driver.(*txDriver); ok { return nil, fmt.Errorf("ent: cannot start a transaction within a transaction") } - tx, err := c.driver.(*sql.Driver).BeginTx(ctx, opts) + tx, err := c.driver.(interface { + BeginTx(context.Context, *sql.TxOptions) (dialect.Tx, error) + }).BeginTx(ctx, opts) if err != nil { return nil, fmt.Errorf("ent: starting a transaction: %v", err) } diff --git a/examples/m2m2types/ent/client.go b/examples/m2m2types/ent/client.go index f6d7b0646..4695227fb 100644 --- a/examples/m2m2types/ent/client.go +++ b/examples/m2m2types/ent/client.go @@ -87,7 +87,9 @@ func (c *Client) BeginTx(ctx context.Context, opts *sql.TxOptions) (*Tx, error) if _, ok := c.driver.(*txDriver); ok { return nil, fmt.Errorf("ent: cannot start a transaction within a transaction") } - tx, err := c.driver.(*sql.Driver).BeginTx(ctx, opts) + tx, err := c.driver.(interface { + BeginTx(context.Context, *sql.TxOptions) (dialect.Tx, error) + }).BeginTx(ctx, opts) if err != nil { return nil, fmt.Errorf("ent: starting a transaction: %v", err) } diff --git a/examples/m2mbidi/ent/client.go b/examples/m2mbidi/ent/client.go index 8a041a968..ce2f95c58 100644 --- a/examples/m2mbidi/ent/client.go +++ b/examples/m2mbidi/ent/client.go @@ -82,7 +82,9 @@ func (c *Client) BeginTx(ctx context.Context, opts *sql.TxOptions) (*Tx, error) if _, ok := c.driver.(*txDriver); ok { return nil, fmt.Errorf("ent: cannot start a transaction within a transaction") } - tx, err := c.driver.(*sql.Driver).BeginTx(ctx, opts) + tx, err := c.driver.(interface { + BeginTx(context.Context, *sql.TxOptions) (dialect.Tx, error) + }).BeginTx(ctx, opts) if err != nil { return nil, fmt.Errorf("ent: starting a transaction: %v", err) } diff --git a/examples/m2mrecur/ent/client.go b/examples/m2mrecur/ent/client.go index 3ea652969..3762eaef9 100644 --- a/examples/m2mrecur/ent/client.go +++ b/examples/m2mrecur/ent/client.go @@ -82,7 +82,9 @@ func (c *Client) BeginTx(ctx context.Context, opts *sql.TxOptions) (*Tx, error) if _, ok := c.driver.(*txDriver); ok { return nil, fmt.Errorf("ent: cannot start a transaction within a transaction") } - tx, err := c.driver.(*sql.Driver).BeginTx(ctx, opts) + tx, err := c.driver.(interface { + BeginTx(context.Context, *sql.TxOptions) (dialect.Tx, error) + }).BeginTx(ctx, opts) if err != nil { return nil, fmt.Errorf("ent: starting a transaction: %v", err) } diff --git a/examples/o2m2types/ent/client.go b/examples/o2m2types/ent/client.go index 37dede106..1cd793ba1 100644 --- a/examples/o2m2types/ent/client.go +++ b/examples/o2m2types/ent/client.go @@ -87,7 +87,9 @@ func (c *Client) BeginTx(ctx context.Context, opts *sql.TxOptions) (*Tx, error) if _, ok := c.driver.(*txDriver); ok { return nil, fmt.Errorf("ent: cannot start a transaction within a transaction") } - tx, err := c.driver.(*sql.Driver).BeginTx(ctx, opts) + tx, err := c.driver.(interface { + BeginTx(context.Context, *sql.TxOptions) (dialect.Tx, error) + }).BeginTx(ctx, opts) if err != nil { return nil, fmt.Errorf("ent: starting a transaction: %v", err) } diff --git a/examples/o2mrecur/ent/client.go b/examples/o2mrecur/ent/client.go index 3c905521b..ef1fa0146 100644 --- a/examples/o2mrecur/ent/client.go +++ b/examples/o2mrecur/ent/client.go @@ -82,7 +82,9 @@ func (c *Client) BeginTx(ctx context.Context, opts *sql.TxOptions) (*Tx, error) if _, ok := c.driver.(*txDriver); ok { return nil, fmt.Errorf("ent: cannot start a transaction within a transaction") } - tx, err := c.driver.(*sql.Driver).BeginTx(ctx, opts) + tx, err := c.driver.(interface { + BeginTx(context.Context, *sql.TxOptions) (dialect.Tx, error) + }).BeginTx(ctx, opts) if err != nil { return nil, fmt.Errorf("ent: starting a transaction: %v", err) } diff --git a/examples/o2o2types/ent/client.go b/examples/o2o2types/ent/client.go index 434a2b9b4..777f629f8 100644 --- a/examples/o2o2types/ent/client.go +++ b/examples/o2o2types/ent/client.go @@ -87,7 +87,9 @@ func (c *Client) BeginTx(ctx context.Context, opts *sql.TxOptions) (*Tx, error) if _, ok := c.driver.(*txDriver); ok { return nil, fmt.Errorf("ent: cannot start a transaction within a transaction") } - tx, err := c.driver.(*sql.Driver).BeginTx(ctx, opts) + tx, err := c.driver.(interface { + BeginTx(context.Context, *sql.TxOptions) (dialect.Tx, error) + }).BeginTx(ctx, opts) if err != nil { return nil, fmt.Errorf("ent: starting a transaction: %v", err) } diff --git a/examples/o2obidi/ent/client.go b/examples/o2obidi/ent/client.go index 224506108..844d24914 100644 --- a/examples/o2obidi/ent/client.go +++ b/examples/o2obidi/ent/client.go @@ -82,7 +82,9 @@ func (c *Client) BeginTx(ctx context.Context, opts *sql.TxOptions) (*Tx, error) if _, ok := c.driver.(*txDriver); ok { return nil, fmt.Errorf("ent: cannot start a transaction within a transaction") } - tx, err := c.driver.(*sql.Driver).BeginTx(ctx, opts) + tx, err := c.driver.(interface { + BeginTx(context.Context, *sql.TxOptions) (dialect.Tx, error) + }).BeginTx(ctx, opts) if err != nil { return nil, fmt.Errorf("ent: starting a transaction: %v", err) } diff --git a/examples/o2orecur/ent/client.go b/examples/o2orecur/ent/client.go index 1795f8cfa..0941dcef4 100644 --- a/examples/o2orecur/ent/client.go +++ b/examples/o2orecur/ent/client.go @@ -82,7 +82,9 @@ func (c *Client) BeginTx(ctx context.Context, opts *sql.TxOptions) (*Tx, error) if _, ok := c.driver.(*txDriver); ok { return nil, fmt.Errorf("ent: cannot start a transaction within a transaction") } - tx, err := c.driver.(*sql.Driver).BeginTx(ctx, opts) + tx, err := c.driver.(interface { + BeginTx(context.Context, *sql.TxOptions) (dialect.Tx, error) + }).BeginTx(ctx, opts) if err != nil { return nil, fmt.Errorf("ent: starting a transaction: %v", err) } diff --git a/examples/privacyadmin/ent/client.go b/examples/privacyadmin/ent/client.go index 7c3ce2708..c9c0e7bec 100644 --- a/examples/privacyadmin/ent/client.go +++ b/examples/privacyadmin/ent/client.go @@ -81,7 +81,9 @@ func (c *Client) BeginTx(ctx context.Context, opts *sql.TxOptions) (*Tx, error) if _, ok := c.driver.(*txDriver); ok { return nil, fmt.Errorf("ent: cannot start a transaction within a transaction") } - tx, err := c.driver.(*sql.Driver).BeginTx(ctx, opts) + tx, err := c.driver.(interface { + BeginTx(context.Context, *sql.TxOptions) (dialect.Tx, error) + }).BeginTx(ctx, opts) if err != nil { return nil, fmt.Errorf("ent: starting a transaction: %v", err) } diff --git a/examples/privacytenant/ent/client.go b/examples/privacytenant/ent/client.go index 450d8ee1f..28c4632fd 100644 --- a/examples/privacytenant/ent/client.go +++ b/examples/privacytenant/ent/client.go @@ -92,7 +92,9 @@ func (c *Client) BeginTx(ctx context.Context, opts *sql.TxOptions) (*Tx, error) if _, ok := c.driver.(*txDriver); ok { return nil, fmt.Errorf("ent: cannot start a transaction within a transaction") } - tx, err := c.driver.(*sql.Driver).BeginTx(ctx, opts) + tx, err := c.driver.(interface { + BeginTx(context.Context, *sql.TxOptions) (dialect.Tx, error) + }).BeginTx(ctx, opts) if err != nil { return nil, fmt.Errorf("ent: starting a transaction: %v", err) } diff --git a/examples/start/ent/client.go b/examples/start/ent/client.go index 22ba0323e..ef28460dd 100644 --- a/examples/start/ent/client.go +++ b/examples/start/ent/client.go @@ -92,7 +92,9 @@ func (c *Client) BeginTx(ctx context.Context, opts *sql.TxOptions) (*Tx, error) if _, ok := c.driver.(*txDriver); ok { return nil, fmt.Errorf("ent: cannot start a transaction within a transaction") } - tx, err := c.driver.(*sql.Driver).BeginTx(ctx, opts) + tx, err := c.driver.(interface { + BeginTx(context.Context, *sql.TxOptions) (dialect.Tx, error) + }).BeginTx(ctx, opts) if err != nil { return nil, fmt.Errorf("ent: starting a transaction: %v", err) } diff --git a/examples/traversal/ent/client.go b/examples/traversal/ent/client.go index 4ab1c389e..ca68e8402 100644 --- a/examples/traversal/ent/client.go +++ b/examples/traversal/ent/client.go @@ -92,7 +92,9 @@ func (c *Client) BeginTx(ctx context.Context, opts *sql.TxOptions) (*Tx, error) if _, ok := c.driver.(*txDriver); ok { return nil, fmt.Errorf("ent: cannot start a transaction within a transaction") } - tx, err := c.driver.(*sql.Driver).BeginTx(ctx, opts) + tx, err := c.driver.(interface { + BeginTx(context.Context, *sql.TxOptions) (dialect.Tx, error) + }).BeginTx(ctx, opts) if err != nil { return nil, fmt.Errorf("ent: starting a transaction: %v", err) }