Bug 2162163

Summary: sqlitebrowser uses an earlier version of sqlite3
Product: [Fedora] Fedora Reporter: Ian Dall <ian>
Component: sqlitebrowserAssignee: Sandro Mani <manisandro>
Status: NEW --- QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 37CC: bugzilla, i, manisandro
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Ian Dall 2023-01-19 01:37:18 UTC
Description of problem:
In Fedora 37, sqlitebrowser currently is built with (static) version 3.34.1 of sqlite3 but the sqlite3 package is currently version 3.40.0.  There a number of small but annoying differences between the two versions.

Version-Release number of selected component (if applicable):
3.13.0-0.4.gita302128.fc37

How reproducible:
Always

Steps to Reproduce:
1. In sqlitebrowser execute the SQL "SELECT format('%s', 'Hi');"
2.
3.

Actual results:
Execution finished with errors.
Result: no such function: format

Expected results:
Hi

Additional info:
The version of sqlite3 actually used in sqlitebrowser can be found by executing "SELECT sqlite_version()"

sqlitebrowser appears to be statically linked. Is it possible to dynamically link to the latest sqlite3 libraries?

Comment 1 Sandro Mani 2023-01-19 08:30:20 UTC
sqlitebrowser is definitely not built statically linked to sqlite, but it is built dynamically linked to libsqlcipher, you should be able to verify this via

$ ldd /usr/bin/sqlitebrowser | grep sqlcipher
        libsqlcipher-3.39.2.so.0 => /lib64/libsqlcipher-3.39.2.so.0 (0x00007f2aabf41000)

sqlcipher is a fork of libsqlite which adds 256 bit AES encryption. Perhaps what you are seeing is that sqlcipher in F37 is based on an older sqlite than what F37 ships as libsqlite3.

Comment 2 Ian Dall 2023-01-20 01:44:07 UTC
Ah. That would be it. I have sqlcipher 4.4.3 and looking at the sqlcipher git, the last merge prior to that was sqlite 3.34.1. Even at sqlcipher head the most recent merge is sqlite 3.94.4. I can see encryption might be important for some, but the version skew seems undesirable. Is there a way to accomodate both?

For now I have built my own sqlitebrowser.