canonical / canonical/sqlair

Selection without using an output argument returns invalid result

Open
#154 2 comments 0 reactions 0 assignees View on GitHub
Dominant language
Go
Stars
19
Forks
10
PR merge metrics
No merged PRs in 30d

Description

The following select statement will return no error, even though the table in question does not have a charm by the name of `juju-controller`.

Table contents:

```
uuid name description summary subordinate min_juju_version run_as_id assumes lxd_profile
31b7cf74-6773-4bf2-8bf9-ac63cb2947ac ubuntu false
```

Table schema:

```sql
CREATE TABLE charm_run_as_kind (
id INT PRIMARY KEY,
name TEXT NOT NULL
);

CREATE UNIQUE INDEX idx_charm_run_as_kind_name
ON charm_run_as_kind (name);

INSERT INTO charm_run_as_kind VALUES
(0, 'default'),
(1, 'root'),
(2, 'sudoer'),
(3, 'non-root');

CREATE TABLE charm (
uuid TEXT NOT NULL PRIMARY KEY,
name TEXT,
description TEXT,
summary TEXT,
subordinate BOOLEAN DEFAULT FALSE,
min_juju_version TEXT,
run_as_id INT,
assumes TEXT,
lxd_profile TEXT,
CONSTRAINT fk_charm_run_as_kind_charm
FOREIGN KEY (run_as_id)
REFERENCES charm_run_as_kind (id)
);
```

Query that should return `sql.ErrNoRows`, instead returns nil.

```
SELECT 1 FROM charm WHERE name = 'juju-controller' AND uuid = $charmID.uuid;
```

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.