sqlboiler icon indicating copy to clipboard operation
sqlboiler copied to clipboard

psql placeholder numeration in query is not incremented

Open bondar-aleksandr opened this issue 1 year ago • 0 comments

Hi team

I have a trouble with query. Looks like boiler doesn't increment counter for parameters placeholders for postgresql. The schema is as follow:

CREATE TABLE IF NOT EXISTS device (
    id SERIAL PRIMARY KEY,
    hostname VARCHAR(100),
    device_address VARCHAR(100),
    serial_number VARCHAR(100) NOT NULL,
    UNIQUE(serial_number),
    UNIQUE(device_address)
);

CREATE TABLE IF NOT EXISTS interface (
    id SERIAL PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    device_id INT NOT NULL,
    CONSTRAINT interface_device_fkey FOREIGN KEY (device_id) REFERENCES device(id) ON DELETE CASCADE
);

When I run the following code

localDevice, err := dbmodels.Devices(qm.Where("device_address = $1", src)).One(ctx, s.DB)
localInterface, err := localDevice.Interfaces(qm.Select("id"), qm.Where("name = $1", item.Name)).One(ctx, s.DB)

I got the error below:

failed to execute a one query for interface: bind failed to execute query: pq: operator does not exist: integer = text

After turning on debug for boil, I see the actual query

SELECT "id" FROM "interface" WHERE (name = $1) AND ("interface"."device_id"=$1) LIMIT 1;
[TenGigabitEthernet0/0/0 1]

Due to some reason I have $1 mentioned twice in query

bondar-aleksandr avatar Sep 30 '24 13:09 bondar-aleksandr