Skip to content

NamedExec unable to form bulk insert query #712

@RajatBanerjee

Description

@RajatBanerjee

in v 1.2.1 while performing a NamedExec with a slice of interface

INSERT INTO foo (foo_nm, ins_user) VALUES (:foo_nm, :ins_user) ON DUPLICATE KEY UPDATE foo_nm = values(foo_nm),upd_user = values(ins_user)

data := []interface{} _, err := sqlx.NamedExec(db, query, data)`

would produce via bindNamedMapper (assume data had 2 values)
INSERT INTO foo (foo_nm, ins_user) VALUES (?, ?).(?,?) ON DUPLICATE KEY UPDATE foo_nm = values(foo_nm),upd_user = values(ins_user)

However in 1.3.1
This becomes
INSERT INTO foo (foo_nm, ins_user) VALUES (?, ?) ON DUPLICATE KEY UPDATE foo_nm = values(foo_nm),upd_user = values(ins_user),(ins_user)

Notice the extra ins_user instead of (?,?) after values

I suspect its due to
https://github.com/jmoiron/sqlx/blob/master/named.go#L227
which was regexp.MustCompile(([^(]?+[^)]))

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions