Skip to content

Fail upgrade tool on download and write errors - #1435

Merged
mattn merged 2 commits into
masterfrom
fix-upgrade-error-handling
Jul 29, 2026
Merged

Fail upgrade tool on download and write errors#1435
mattn merged 2 commits into
masterfrom
fix-upgrade-error-handling

Conversation

@mattn

@mattn mattn commented Jul 29, 2026

Copy link
Copy Markdown
Owner

A write error while extracting the amalgamation was masked by scanner.Err() returning nil, so a truncated sqlite3-binding.c was reported as successfully extracted (and then committed by upgrade.sh). Fail on write and close errors, check the HTTP status of both downloads, and only remove the merge source file after a successful merge.

Summary by CodeRabbit

  • Bug Fixes
    • Improved download validation by checking server responses before parsing and reading.
    • Prevented source files from being removed if the merge/write process doesn’t fully succeed.
    • Enhanced error handling during amalgamation extraction, including stricter handling of write and close failures.

@coderabbitai

coderabbitai Bot commented Jul 29, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 42ec74b4-8d37-49b9-b5a2-e3b63b440149

📥 Commits

Reviewing files that changed from the base of the PR and between 322330f and 6ebb665.

📒 Files selected for processing (1)
  • upgrade/upgrade.go
🚧 Files skipped from review as they are similar to previous changes (1)
  • upgrade/upgrade.go

📝 Walkthrough

Walkthrough

The upgrade utility validates HTTP responses, removes merged source files only after successful destination writes and closes, and propagates extraction write and close failures.

Changes

Upgrade error handling

Layer / File(s) Summary
HTTP download validation
upgrade/upgrade.go
Both download requests require http.StatusOK; the second response body is closed before processing completes.
Merged source cleanup
upgrade/upgrade.go
The source file is removed only after the destination merge and close succeed, with close and removal errors returned.
Amalgamation extraction errors
upgrade/upgrade.go
Extraction now handles fmt.Fprintln failures and reports output-file close errors.

Estimated code review effort: 2 (Simple) | ~10 minutes

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately reflects the main change: the upgrade tool now fails on download, write, and close errors.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches 💡 1
📝 Generate docstrings 💡
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix-upgrade-error-handling

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@upgrade/upgrade.go`:
- Around line 104-106: Update mergeFile so fdst is explicitly closed before
os.Remove(src), returning any close error and only deleting the source after a
successful close. Replace the deferred-only close handling with logic that also
preserves and propagates fdst.Close errors on all earlier return paths.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: c7558d61-b0b4-438a-8644-b76d972b6dfc

📥 Commits

Reviewing files that changed from the base of the PR and between fadf4a7 and 322330f.

📒 Files selected for processing (1)
  • upgrade/upgrade.go

Comment thread upgrade/upgrade.go
Comment on lines +104 to +106
// Only remove the source once it has been merged successfully.
fmt.Printf("Removing: %s\n", src)
return os.Remove(src)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win

Close the destination before removing the source.

fdst.Close() remains deferred and its error is ignored, but os.Remove(src) runs first. A destination close/flush failure can therefore delete the only source copy while mergeFile still returns success. Explicitly close fdst, propagate that error, and remove src only after the close succeeds; preserve close errors on earlier return paths as well.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@upgrade/upgrade.go` around lines 104 - 106, Update mergeFile so fdst is
explicitly closed before os.Remove(src), returning any close error and only
deleting the source after a successful close. Replace the deferred-only close
handling with logic that also preserves and propagates fdst.Close errors on all
earlier return paths.

@mattn
mattn merged commit df9873f into master Jul 29, 2026
21 checks passed
@mattn
mattn deleted the fix-upgrade-error-handling branch July 29, 2026 05:15
nschloe pushed a commit to live-clones/forgejo that referenced this pull request Aug 1, 2026
This PR contains the following updates:

| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|
| [github.com/mattn/go-sqlite3](https://github.com/mattn/go-sqlite3) | `v1.14.48` → `v1.14.49` | ![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2fmattn%2fgo-sqlite3/v1.14.49?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2fmattn%2fgo-sqlite3/v1.14.48/v1.14.49?slim=true) |

---

### Release Notes

<details>
<summary>mattn/go-sqlite3 (github.com/mattn/go-sqlite3)</summary>

### [`v1.14.49`](https://github.com/mattn/go-sqlite3/releases/tag/v1.14.49): 1.14.49

[Compare Source](mattn/go-sqlite3@v1.14.48...v1.14.49)

#### What's Changed

- Release vtable and cursor handles when SQLite destroys them by [@&#8203;mattn](https://github.com/mattn) in [#&#8203;1429](mattn/go-sqlite3#1429)
- Do not clobber SQLite's default cost estimates in BestIndex by [@&#8203;mattn](https://github.com/mattn) in [#&#8203;1430](mattn/go-sqlite3#1430)
- Translate SQL NULL filter arguments to nil like goVUpdate by [@&#8203;mattn](https://github.com/mattn) in [#&#8203;1431](mattn/go-sqlite3#1431)
- Identify updated row by argv 0 in goVUpdate by [@&#8203;mattn](https://github.com/mattn) in [#&#8203;1432](mattn/go-sqlite3#1432)
- Ignore Used for constraints SQLite marked not usable by [@&#8203;mattn](https://github.com/mattn) in [#&#8203;1433](mattn/go-sqlite3#1433)
- Reject nil module and nil BestIndex result by [@&#8203;mattn](https://github.com/mattn) in [#&#8203;1434](mattn/go-sqlite3#1434)
- Fail upgrade tool on download and write errors by [@&#8203;mattn](https://github.com/mattn) in [#&#8203;1435](mattn/go-sqlite3#1435)
- Fix off-by-one truncating SQL in fuzz target by [@&#8203;mattn](https://github.com/mattn) in [#&#8203;1436](mattn/go-sqlite3#1436)
- Fix wrong results and cursor state sharing in series example by [@&#8203;mattn](https://github.com/mattn) in [#&#8203;1437](mattn/go-sqlite3#1437)
- Use the table name from xCreate args in vtable example by [@&#8203;mattn](https://github.com/mattn) in [#&#8203;1438](mattn/go-sqlite3#1438)
- Close leaked rows in hook example by [@&#8203;mattn](https://github.com/mattn) in [#&#8203;1439](mattn/go-sqlite3#1439)
- Close prepared statement and fail if limit is not enforced in limit example by [@&#8203;mattn](https://github.com/mattn) in [#&#8203;1440](mattn/go-sqlite3#1440)
- Upgrade SQLite to version [`3053004`](mattn/go-sqlite3@3053004) by [@&#8203;mattn](https://github.com/mattn) in [#&#8203;1442](mattn/go-sqlite3#1442)

**Full Changelog**: <mattn/go-sqlite3@v1.14.48...v1.14.49>

</details>

---

### Configuration

📅 **Schedule**: (UTC)

- Branch creation
  - Between 12:00 AM and 03:59 AM (`* 0-3 * * *`)
- Automerge
  - Between 12:00 AM and 03:59 AM (`* 0-3 * * *`)

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Mend Renovate](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yODEuMSIsInVwZGF0ZWRJblZlciI6IjQzLjI4MS4xIiwidGFyZ2V0QnJhbmNoIjoiZm9yZ2VqbyIsImxhYmVscyI6WyJkZXBlbmRlbmN5LXVwZ3JhZGUiLCJ0ZXN0L25vdC1uZWVkZWQiXX0=-->

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/13687
Reviewed-by: Mathieu Fenniak <mfenniak@noreply.codeberg.org>
dgalanberasaluce pushed a commit to dgalanberasaluce/maximus-cli that referenced this pull request Aug 8, 2026
This PR contains the following updates:

| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|
| [github.com/mattn/go-sqlite3](https://github.com/mattn/go-sqlite3) | `v1.14.47` → `v1.14.49` | ![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2fmattn%2fgo-sqlite3/v1.14.49?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2fmattn%2fgo-sqlite3/v1.14.47/v1.14.49?slim=true) |

---

### Release Notes

<details>
<summary>mattn/go-sqlite3 (github.com/mattn/go-sqlite3)</summary>

### [`v1.14.49`](https://github.com/mattn/go-sqlite3/releases/tag/v1.14.49): 1.14.49

[Compare Source](mattn/go-sqlite3@v1.14.48...v1.14.49)

#### What's Changed

- Release vtable and cursor handles when SQLite destroys them by [@&#8203;mattn](https://github.com/mattn) in [#&#8203;1429](mattn/go-sqlite3#1429)
- Do not clobber SQLite's default cost estimates in BestIndex by [@&#8203;mattn](https://github.com/mattn) in [#&#8203;1430](mattn/go-sqlite3#1430)
- Translate SQL NULL filter arguments to nil like goVUpdate by [@&#8203;mattn](https://github.com/mattn) in [#&#8203;1431](mattn/go-sqlite3#1431)
- Identify updated row by argv 0 in goVUpdate by [@&#8203;mattn](https://github.com/mattn) in [#&#8203;1432](mattn/go-sqlite3#1432)
- Ignore Used for constraints SQLite marked not usable by [@&#8203;mattn](https://github.com/mattn) in [#&#8203;1433](mattn/go-sqlite3#1433)
- Reject nil module and nil BestIndex result by [@&#8203;mattn](https://github.com/mattn) in [#&#8203;1434](mattn/go-sqlite3#1434)
- Fail upgrade tool on download and write errors by [@&#8203;mattn](https://github.com/mattn) in [#&#8203;1435](mattn/go-sqlite3#1435)
- Fix off-by-one truncating SQL in fuzz target by [@&#8203;mattn](https://github.com/mattn) in [#&#8203;1436](mattn/go-sqlite3#1436)
- Fix wrong results and cursor state sharing in series example by [@&#8203;mattn](https://github.com/mattn) in [#&#8203;1437](mattn/go-sqlite3#1437)
- Use the table name from xCreate args in vtable example by [@&#8203;mattn](https://github.com/mattn) in [#&#8203;1438](mattn/go-sqlite3#1438)
- Close leaked rows in hook example by [@&#8203;mattn](https://github.com/mattn) in [#&#8203;1439](mattn/go-sqlite3#1439)
- Close prepared statement and fail if limit is not enforced in limit example by [@&#8203;mattn](https://github.com/mattn) in [#&#8203;1440](mattn/go-sqlite3#1440)
- Upgrade SQLite to version [`3053004`](mattn/go-sqlite3@3053004) by [@&#8203;mattn](https://github.com/mattn) in [#&#8203;1442](mattn/go-sqlite3#1442)

**Full Changelog**: <mattn/go-sqlite3@v1.14.48...v1.14.49>

### [`v1.14.48`](https://github.com/mattn/go-sqlite3/releases/tag/v1.14.48): 1.14.48

[Compare Source](mattn/go-sqlite3@v1.14.47...v1.14.48)

#### What's Changed

- Add Serialize and Deserialize support by [@&#8203;otoolep](https://github.com/otoolep) in [#&#8203;1089](mattn/go-sqlite3#1089)
- Replace namedValue with driver.NamedValue to avoid copying exec/query args by [@&#8203;charlievieth](https://github.com/charlievieth) in [#&#8203;1128](mattn/go-sqlite3#1128)
- Add go 1.20 to workflow matrix, remove 1.17 by [@&#8203;connyay](https://github.com/connyay) in [#&#8203;1136](mattn/go-sqlite3#1136)
- Add build tags to support both x86 and ARM compilation on macOS by [@&#8203;Spaider](https://github.com/Spaider) in [#&#8203;1069](mattn/go-sqlite3#1069)
- Fix virtual table example. by [@&#8203;andrzh](https://github.com/andrzh) in [#&#8203;1149](mattn/go-sqlite3#1149)
- Update README.md by [@&#8203;parthokr](https://github.com/parthokr) in [#&#8203;1163](mattn/go-sqlite3#1163)
- Update amalgamation code by [@&#8203;mattn](https://github.com/mattn) in [#&#8203;1166](mattn/go-sqlite3#1166)
- Update amalgamation code by [@&#8203;mattn](https://github.com/mattn) in [#&#8203;1197](mattn/go-sqlite3#1197)
- Fix docker job by [@&#8203;itizir](https://github.com/itizir) in [#&#8203;1201](mattn/go-sqlite3#1201)
- Fix musl build ([#&#8203;1164](mattn/go-sqlite3#1164)) by [@&#8203;leso-kn](https://github.com/leso-kn) in [#&#8203;1177](mattn/go-sqlite3#1177)
- update go version to 1.19 by [@&#8203;mattn](https://github.com/mattn) in [#&#8203;1208](mattn/go-sqlite3#1208)
- Update amalgamation code to 3.45.0 by [@&#8203;mattn](https://github.com/mattn) in [#&#8203;1207](mattn/go-sqlite3#1207)
- Update amalgamation code to 3.45.1 by [@&#8203;mattn](https://github.com/mattn) in [#&#8203;1211](mattn/go-sqlite3#1211)
- close channel by [@&#8203;mattn](https://github.com/mattn) in [#&#8203;1213](mattn/go-sqlite3#1213)
- fix: some typos by [@&#8203;pomadev](https://github.com/pomadev) in [#&#8203;1222](mattn/go-sqlite3#1222)
- Add support for libsqlite3 on z/OS by [@&#8203;dustin-ward](https://github.com/dustin-ward) in [#&#8203;1239](mattn/go-sqlite3#1239)
- Update amalgamation code to 3.46.1 by [@&#8203;mattn](https://github.com/mattn) in [#&#8203;1273](mattn/go-sqlite3#1273)
- close statement when missing query arguments by [@&#8203;mattn](https://github.com/mattn) in [#&#8203;1281](mattn/go-sqlite3#1281)
- Upgrade upload-artifact action by [@&#8203;jonstacks](https://github.com/jonstacks) in [#&#8203;1300](mattn/go-sqlite3#1300)
- Remove suggestion that CGO isn't always needed by [@&#8203;samjewell](https://github.com/samjewell) in [#&#8203;1290](mattn/go-sqlite3#1290)
- remove superfluous use of runtime.SetFinalizer on SQLiteRows by [@&#8203;charlievieth](https://github.com/charlievieth) in [#&#8203;1301](mattn/go-sqlite3#1301)
- Fix sqlite3\_opt\_unlock\_notify with USE\_LIBSQLITE3 by [@&#8203;q66](https://github.com/q66) in [#&#8203;1262](mattn/go-sqlite3#1262)
- Fix memory leak in callbackRetText function by [@&#8203;hionay](https://github.com/hionay) in [#&#8203;1259](mattn/go-sqlite3#1259)
- docs: clarify GCP section by [@&#8203;justinsb](https://github.com/justinsb) in [#&#8203;1305](mattn/go-sqlite3#1305)
- Add ability to set an int64 file control by [@&#8203;jonstacks](https://github.com/jonstacks) in [#&#8203;1298](mattn/go-sqlite3#1298)
- Update amalgamation code to 3.49.1 by [@&#8203;mattn](https://github.com/mattn) in [#&#8203;1335](mattn/go-sqlite3#1335)
- Update amalgamation code to 3.50.3 by [@&#8203;mattn](https://github.com/mattn) in [#&#8203;1343](mattn/go-sqlite3#1343)
- Drop userauth implementation by [@&#8203;mattn](https://github.com/mattn) in [#&#8203;1344](mattn/go-sqlite3#1344)
- fix syntax error by [@&#8203;eraytufan](https://github.com/eraytufan) in [#&#8203;1346](mattn/go-sqlite3#1346)
- update amalgamation code by [@&#8203;mattn](https://github.com/mattn) in [#&#8203;1347](mattn/go-sqlite3#1347)
- use quote include instead of angled include for sqlite3-binding.h by [@&#8203;nautaa](https://github.com/nautaa) in [#&#8203;1362](mattn/go-sqlite3#1362)
- Upgrade SQLite to version [`3051001`](mattn/go-sqlite3@3051001) by [@&#8203;mattn](https://github.com/mattn) in [#&#8203;1366](mattn/go-sqlite3#1366)
- Feat: add percentile extension option by [@&#8203;dsonck92](https://github.com/dsonck92) in [#&#8203;1364](mattn/go-sqlite3#1364)
- Upgrade SQLite to version [`3051002`](mattn/go-sqlite3@3051002) by [@&#8203;mattn](https://github.com/mattn) in [#&#8203;1370](mattn/go-sqlite3#1370)
- Use unsafe slice by [@&#8203;mattn](https://github.com/mattn) in [#&#8203;1373](mattn/go-sqlite3#1373)
- Call sqlite3\_clear\_bindings() after sqlite3\_reset() in bind() by [@&#8203;mattn](https://github.com/mattn) in [#&#8203;1374](mattn/go-sqlite3#1374)
- Upgrade SQLite to version [`3051003`](mattn/go-sqlite3@3051003) by [@&#8203;mattn](https://github.com/mattn) in [#&#8203;1375](mattn/go-sqlite3#1375)
- Ensure Close always removes runtime finalizer to prevent memory leak by [@&#8203;mattn](https://github.com/mattn) in [#&#8203;1376](mattn/go-sqlite3#1376)
- Fix json example by [@&#8203;Jaculabilis](https://github.com/Jaculabilis) in [#&#8203;1313](mattn/go-sqlite3#1313)
- Add missing virtual table constraint op constants by [@&#8203;theimpostor](https://github.com/theimpostor) in [#&#8203;1379](mattn/go-sqlite3#1379)
- Eliminate unnecessary bounds checks in hot paths by [@&#8203;mattn](https://github.com/mattn) in [#&#8203;1381](mattn/go-sqlite3#1381)
- \[codex] optimize sqlite bind fast path by [@&#8203;mattn](https://github.com/mattn) in [#&#8203;1382](mattn/go-sqlite3#1382)
- \[codex] batch row column fetches in Next by [@&#8203;mattn](https://github.com/mattn) in [#&#8203;1383](mattn/go-sqlite3#1383)
- Raise minimum Go version to 1.21 by [@&#8203;mattn](https://github.com/mattn) in [#&#8203;1384](mattn/go-sqlite3#1384)
- Reduce sqlite bind overhead by [@&#8203;mattn](https://github.com/mattn) in [#&#8203;1385](mattn/go-sqlite3#1385)
- reduce CGO call overhead for exec and bind paths by [@&#8203;mattn](https://github.com/mattn) in [#&#8203;1386](mattn/go-sqlite3#1386)
- \[codex] add opt-in statement cache by [@&#8203;mattn](https://github.com/mattn) in [#&#8203;1387](mattn/go-sqlite3#1387)
- Fix panic when querying input with no SQL (only comments/whitespace) by [@&#8203;mattn](https://github.com/mattn) in [#&#8203;1392](mattn/go-sqlite3#1392)
- evict least-recently-used stmt when cache is full by [@&#8203;mattn](https://github.com/mattn) in [#&#8203;1388](mattn/go-sqlite3#1388)
- Upgrade SQLite to version [`3053000`](mattn/go-sqlite3@3053000) by [@&#8203;mattn](https://github.com/mattn) in [#&#8203;1394](mattn/go-sqlite3#1394)
- add sqlite\_dbstat tag for the DBSTAT virtual table by [@&#8203;calmh](https://github.com/calmh) in [#&#8203;1338](mattn/go-sqlite3#1338)
- avoid out of bounds write in unlock\_notify\_wait on 64 bit platforms by [@&#8203;calmh](https://github.com/calmh) in [#&#8203;1399](mattn/go-sqlite3#1399)
- modernise reflect.SliceHeader to unsafe.Slice by [@&#8203;calmh](https://github.com/calmh) in [#&#8203;1400](mattn/go-sqlite3#1400)
- guard oversized string length in ResultText by [@&#8203;dxbjavid](https://github.com/dxbjavid) in [#&#8203;1402](mattn/go-sqlite3#1402)
- bind via sqlite3\_bind\_text64/blob64 to avoid 32-bit length truncation by [@&#8203;dxbjavid](https://github.com/dxbjavid) in [#&#8203;1403](mattn/go-sqlite3#1403)
- Upgrade SQLite to version [`3053002`](mattn/go-sqlite3@3053002) by [@&#8203;mattn](https://github.com/mattn) in [#&#8203;1404](mattn/go-sqlite3#1404)
- guard oversized blob length in callbackRetBlob by [@&#8203;dxbjavid](https://github.com/dxbjavid) in [#&#8203;1405](mattn/go-sqlite3#1405)
- preserve embedded NUL bytes in custom function text values by [@&#8203;dxbjavid](https://github.com/dxbjavid) in [#&#8203;1406](mattn/go-sqlite3#1406)
- Follow documented call order for sqlite3\_value\_blob in callbackArgString by [@&#8203;mattn](https://github.com/mattn) in [#&#8203;1407](mattn/go-sqlite3#1407)
- Use atomic.Value for handle table and add concurrent lookup benchmark by [@&#8203;mattn](https://github.com/mattn) in [#&#8203;1412](mattn/go-sqlite3#1412)
- cache column metadata for prepared and cached statements by [@&#8203;mattn](https://github.com/mattn) in [#&#8203;1413](mattn/go-sqlite3#1413)
- free leaked schema string in GetFilename by [@&#8203;dxbjavid](https://github.com/dxbjavid) in [#&#8203;1408](mattn/go-sqlite3#1408)
- Fix race in SQLiteStmt.Close by holding conn lock across cache check by [@&#8203;mattn](https://github.com/mattn) in [#&#8203;1416](mattn/go-sqlite3#1416)
- Add CodeRabbit as a sponsor by [@&#8203;mattn](https://github.com/mattn) in [#&#8203;1417](mattn/go-sqlite3#1417)
- Return error from vtable cursor open instead of ignoring it by [@&#8203;mattn](https://github.com/mattn) in [#&#8203;1419](mattn/go-sqlite3#1419)
- Check sqlite3\_malloc64 result in Deserialize by [@&#8203;mattn](https://github.com/mattn) in [#&#8203;1420](mattn/go-sqlite3#1420)
- Fix panic when registered functions return named types by [@&#8203;mattn](https://github.com/mattn) in [#&#8203;1421](mattn/go-sqlite3#1421)
- Return error instead of silently ignoring unsupported bind types by [@&#8203;mattn](https://github.com/mattn) in [#&#8203;1422](mattn/go-sqlite3#1422)
- Add CodeRabbit configuration by [@&#8203;mattn](https://github.com/mattn) in [#&#8203;1418](mattn/go-sqlite3#1418)
- Close database on all error paths in Open by [@&#8203;mattn](https://github.com/mattn) in [#&#8203;1423](mattn/go-sqlite3#1423)
- Check preupdate value fetch result to avoid NULL dereference by [@&#8203;mattn](https://github.com/mattn) in [#&#8203;1424](mattn/go-sqlite3#1424)
- Use C.int in exported callbacks to match C declarations by [@&#8203;mattn](https://github.com/mattn) in [#&#8203;1425](mattn/go-sqlite3#1425)
- Fix leak of extension load error message by [@&#8203;mattn](https://github.com/mattn) in [#&#8203;1426](mattn/go-sqlite3#1426)
- Upgrade SQLite to version [`3053003`](mattn/go-sqlite3@3053003) by [@&#8203;mattn](https://github.com/mattn) in [#&#8203;1427](mattn/go-sqlite3#1427)

#### New Contributors

- [@&#8203;charlievieth](https://github.com/charlievieth) made their first contribution in [#&#8203;1128](mattn/go-sqlite3#1128)
- [@&#8203;connyay](https://github.com/connyay) made their first contribution in [#&#8203;1136](mattn/go-sqlite3#1136)
- [@&#8203;Spaider](https://github.com/Spaider) made their first contribution in [#&#8203;1069](mattn/go-sqlite3#1069)
- [@&#8203;andrzh](https://github.com/andrzh) made their first contribution in [#&#8203;1149](mattn/go-sqlite3#1149)
- [@&#8203;parthokr](https://github.com/parthokr) made their first contribution in [#&#8203;1163](mattn/go-sqlite3#1163)
- [@&#8203;leso-kn](https://github.com/leso-kn) made their first contribution in [#&#8203;1177](mattn/go-sqlite3#1177)
- [@&#8203;pomadev](https://github.com/pomadev) made their first contribution in [#&#8203;1222](mattn/go-sqlite3#1222)
- [@&#8203;dustin-ward](https://github.com/dustin-ward) made their first contribution in [#&#8203;1239](mattn/go-sqlite3#1239)
- [@&#8203;jonstacks](https://github.com/jonstacks) made their first contribution in [#&#8203;1300](mattn/go-sqlite3#1300)
- [@&#8203;samjewell](https://github.com/samjewell) made their first contribution in [#&#8203;1290](mattn/go-sqlite3#1290)
- [@&#8203;q66](https://github.com/q66) made their first contribution in [#&#8203;1262](mattn/go-sqlite3#1262)
- [@&#8203;hionay](https://github.com/hionay) made their first contribution in [#&#8203;1259](mattn/go-sqlite3#1259)
- [@&#8203;justinsb](https://github.com/justinsb) made their first contribution in [#&#8203;1305](mattn/go-sqlite3#1305)
- [@&#8203;eraytufan](https://github.com/eraytufan) made their first contribution in [#&#8203;1346](mattn/go-sqlite3#1346)
- [@&#8203;nautaa](https://github.com/nautaa) made their first contribution in [#&#8203;1362](mattn/go-sqlite3#1362)
- [@&#8203;dsonck92](https://github.com/dsonck92) made their first contribution in [#&#8203;1364](mattn/go-sqlite3#1364)
- [@&#8203;Jaculabilis](https://github.com/Jaculabilis) made their first contribution in [#&#8203;1313](mattn/go-sqlite3#1313)
- [@&#8203;theimpostor](https://github.com/theimpostor) made their first contribution in [#&#8203;1379](mattn/go-sqlite3#1379)
- [@&#8203;calmh](https://github.com/calmh) made their first contribution in [#&#8203;1338](mattn/go-sqlite3#1338)
- [@&#8203;dxbjavid](https://github.com/dxbjavid) made their first contribution in [#&#8203;1402](mattn/go-sqlite3#1402)

**Full Changelog**: <mattn/go-sqlite3@v1.14.16...v1.14.48>

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My43My4yIiwidXBkYXRlZEluVmVyIjoiNDMuNzMuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

Reviewed-on: https://forgejo.internal/forgejo_admin/maximus/pulls/19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant