electric-sql / electric-sql/pglite

`PGlite.exec()` returns result objects with misplaced `affectedRows`

Open
#91 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
TypeScript
Stars
16k
Forks
442
Avg merge
20h 19m
Merged PRs (30d)
7

Description

The return results of `PGlite.exec()` misplace `affectedRows`.

Here's an example of a query whose results show `affectedRows`:
- missing from INSERTs
- only present on last SELECT
- as a total for the whole transaction on the last SELECT result

```json
{
"query": "SELECT k,v FROM lww WHERE k = 0; INSERT INTO lww (k,v) VALUES (1,'0') ON CONFLICT (k) DO UPDATE SET v = lww.v || ' ' || '0'; INSERT INTO lww (k,v) VALUES (2,'0') ON CONFLICT (k) DO UPDATE SET v = lww.v || ' ' || '0'; SELECT k,v FROM lww WHERE k = 1; SELECT k,v FROM lww WHERE k = 2; INSERT INTO lww (k,v) VALUES (3,'0') ON CONFLICT (k) DO UPDATE SET v = lww.v || ' ' || '0'; SELECT k,v FROM lww WHERE k = 3;"
}
```

```json
[
{
"rows": [],
"fields": [
{
"name": "k",
"dataTypeID": 23
},
{
"name": "v",
"dataTypeID": 25
}
]
},
{
"rows": [],
"fields": []
},
{
"rows": [],
"fields": []
},
{
"rows": [
{
"k": 1,
"v": "0 0"
}
],
"fields": [
{
"name": "k",
"dataTypeID": 23
},
{
"name": "v",
"dataTypeID": 25
}
]
},
{
"rows": [
{
"k": 2,
"v": "0 0 0 0"
}
],
"fields": [
{
"name": "k",
"dataTypeID": 23
},
{
"name": "v",
"dataTypeID": 25
}
]
},
{
"rows": [],
"fields": []
},
{
"rows": [
{
"k": 3,
"v": "0"
}
],
"fields": [
{
"name": "k",
"dataTypeID": 23
},
{
"name": "v",
"dataTypeID": 25
}
],
"affectedRows": 3
}
]
```

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.