Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package rqlite for openSUSE:Factory checked in at 2026-01-30 18:22:47 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/rqlite (Old) and /work/SRC/openSUSE:Factory/.rqlite.new.1995 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "rqlite" Fri Jan 30 18:22:47 2026 rev:42 rq:1329885 version:9.3.18 Changes: -------- --- /work/SRC/openSUSE:Factory/rqlite/rqlite.changes 2026-01-17 21:43:53.308720107 +0100 +++ /work/SRC/openSUSE:Factory/.rqlite.new.1995/rqlite.changes 2026-01-30 18:22:52.102993555 +0100 @@ -1,0 +2,6 @@ +Thu Jan 29 20:14:20 UTC 2026 - Andreas Stieger <[email protected]> + +- Update to version 9.3.18: + * Upgrade SQL parser + +------------------------------------------------------------------- Old: ---- rqlite-9.3.15.tar.xz New: ---- rqlite-9.3.18.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ rqlite.spec ++++++ --- /var/tmp/diff_new_pack.A7RbV5/_old 2026-01-30 18:22:52.755020918 +0100 +++ /var/tmp/diff_new_pack.A7RbV5/_new 2026-01-30 18:22:52.759021086 +0100 @@ -17,7 +17,7 @@ Name: rqlite -Version: 9.3.15 +Version: 9.3.18 Release: 0 Summary: Distributed relational database built on SQLite License: MIT ++++++ _service ++++++ --- /var/tmp/diff_new_pack.A7RbV5/_old 2026-01-30 18:22:52.799022765 +0100 +++ /var/tmp/diff_new_pack.A7RbV5/_new 2026-01-30 18:22:52.803022933 +0100 @@ -3,7 +3,7 @@ <param name="url">https://github.com/rqlite/rqlite.git</param> <param name="scm">git</param> <param name="exclude">.git</param> - <param name="revision">v9.3.15</param> + <param name="revision">v9.3.18</param> <param name="versionformat">@PARENT_TAG@</param> <param name="changesgenerate">enable</param> <param name="versionrewrite-pattern">v(.*)</param> ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.A7RbV5/_old 2026-01-30 18:22:52.827023940 +0100 +++ /var/tmp/diff_new_pack.A7RbV5/_new 2026-01-30 18:22:52.831024108 +0100 @@ -1,7 +1,7 @@ <servicedata> <service name="tar_scm"> <param name="url">https://github.com/rqlite/rqlite.git</param> - <param name="changesrevision">a86a145ca340376b32eb3a9a9c557dce38e7151f</param> + <param name="changesrevision">d3ad631f99cca1e572411ce6ba736f6fc53eea13</param> </service> </servicedata> (No newline at EOF) ++++++ rqlite-9.3.15.tar.xz -> rqlite-9.3.18.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rqlite-9.3.15/CHANGELOG.md new/rqlite-9.3.18/CHANGELOG.md --- old/rqlite-9.3.15/CHANGELOG.md 2026-01-17 01:01:32.000000000 +0100 +++ new/rqlite-9.3.18/CHANGELOG.md 2026-01-29 05:01:00.000000000 +0100 @@ -1,3 +1,13 @@ +## v9.3.18 (January 28th 2026) +There are no changes in this release relative to v9.3.17. This release simply removes support for building `linux/386` Docker images. + +## v9.3.17 (January 28th 2026) +There are no changes in this release relative to v9.3.16. This release simply fixes a `linux/386` Docker packaging issue. + +## v9.3.16 (January 28th 2026) +### Implementation changes and bug fixes +- [PR #2450](https://github.com/rqlite/rqlite/pull/2450): Upgrade SQL parser. + ## v9.3.15 (January 16th 2026) ### Implementation changes and bug fixes - [PR #2447](https://github.com/rqlite/rqlite/pull/2447): Upgrade SQL parser. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rqlite-9.3.15/Dockerfile new/rqlite-9.3.18/Dockerfile --- old/rqlite-9.3.15/Dockerfile 2026-01-17 01:01:32.000000000 +0100 +++ new/rqlite-9.3.18/Dockerfile 2026-01-29 05:01:00.000000000 +0100 @@ -52,11 +52,16 @@ cd asg017* && sh scripts/vendor.sh && echo "#include <sys/types.h>" | cat - sqlite-vec.c > temp && mv temp sqlite-vec.c && make loadable && zip -j /extensions/sqlite-vec.zip dist/vec0.so RUN set -e; \ - sqliteai_vector=$(curl -s https://api.github.com/repos/sqliteai/sqlite-vector/releases/latest | jq -r .tarball_url); \ - echo "Downloading sqliteai-vector from: $sqliteai_vector"; \ - curl -L "$sqliteai_vector" -o sqliteai-vector.tar.gz -RUN tar xvfz sqliteai-vector.tar.gz && rm sqliteai-vector.tar.gz && \ - cd sqliteai* && make && zip -j /extensions/sqliteai-vector.zip dist/vector.so + if [ "$TARGETOS" = "linux" ] && [ "$TARGETARCH" = "386" ]; then \ + echo "Skipping sqliteai-vector entirely on $TARGETOS/$TARGETARCH"; \ + else \ + sqliteai_vector=$(curl -s https://api.github.com/repos/sqliteai/sqlite-vector/releases/latest | jq -r .tarball_url); \ + echo "Downloading sqliteai-vector from: $sqliteai_vector"; \ + curl -L "$sqliteai_vector" -o sqliteai-vector.tar.gz; \ + tar xvfz sqliteai-vector.tar.gz; \ + rm sqliteai-vector.tar.gz; \ + cd sqliteai* && make && zip -j /extensions/sqliteai-vector.zip dist/vector.so; \ + fi RUN git clone https://github.com/rqlite/rqlite-sqlite-ext.git RUN cd rqlite-sqlite-ext/misc && make && zip /extensions/misc.zip *.so diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rqlite-9.3.15/go.mod new/rqlite-9.3.18/go.mod --- old/rqlite-9.3.15/go.mod 2026-01-17 01:01:32.000000000 +0100 +++ new/rqlite-9.3.18/go.mod 2026-01-29 05:01:00.000000000 +0100 @@ -16,7 +16,7 @@ github.com/peterh/liner v1.2.2 github.com/rqlite/raft-boltdb/v2 v2.0.0-20230523104317-c08e70f4de48 github.com/rqlite/rqlite-disco-clients v0.0.0-20250205044118-8ada2b350099 - github.com/rqlite/sql v0.0.0-20260116021722-655729ca2eff + github.com/rqlite/sql v0.0.0-20260129012909-a110ae1f061e go.etcd.io/bbolt v1.4.3 golang.org/x/net v0.48.0 google.golang.org/protobuf v1.36.11 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/rqlite-9.3.15/go.sum new/rqlite-9.3.18/go.sum --- old/rqlite-9.3.15/go.sum 2026-01-17 01:01:32.000000000 +0100 +++ new/rqlite-9.3.18/go.sum 2026-01-29 05:01:00.000000000 +0100 @@ -243,8 +243,8 @@ github.com/rqlite/raft-boltdb/v2 v2.0.0-20230523104317-c08e70f4de48/go.mod h1:CRnsxgy5G8fAf5J+AM0yrsSdxXHKkIYOaq2sm+Q4DYc= github.com/rqlite/rqlite-disco-clients v0.0.0-20250205044118-8ada2b350099 h1:5cqkVLdl6sGJSY3kiF2dqaA3bD+8OS5FUdZqO0BxXLU= github.com/rqlite/rqlite-disco-clients v0.0.0-20250205044118-8ada2b350099/go.mod h1:6SVI8KegsW9Fyu2UQ+uvw0JI5CAILRYRyiQ/OFSJPrs= -github.com/rqlite/sql v0.0.0-20260116021722-655729ca2eff h1:LUxzsaiuU1BzXdlYdgUP2LCin9HGHxaTxJaqB0C80pg= -github.com/rqlite/sql v0.0.0-20260116021722-655729ca2eff/go.mod h1:ib9zVtNgRKiGuoMyUqqL5aNpk+r+++YlyiVIkclVqPg= +github.com/rqlite/sql v0.0.0-20260129012909-a110ae1f061e h1:nfXRWwbMe7+Lbac7OJlmheAP9vHnXvRJS+yomo0UhDI= +github.com/rqlite/sql v0.0.0-20260129012909-a110ae1f061e/go.mod h1:ib9zVtNgRKiGuoMyUqqL5aNpk+r+++YlyiVIkclVqPg= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529 h1:nn5Wsu0esKSJiIVhscUtVbo7ada43DJhG55ua/hjS5I= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= ++++++ vendor.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/github.com/rqlite/sql/ast.go new/vendor/github.com/rqlite/sql/ast.go --- old/vendor/github.com/rqlite/sql/ast.go 2026-01-17 01:01:32.000000000 +0100 +++ new/vendor/github.com/rqlite/sql/ast.go 2026-01-29 05:01:00.000000000 +0100 @@ -2721,9 +2721,11 @@ InsertOrIgnore Pos // position of IGNORE keyword after INSERT OR Into Pos // position of INTO keyword - Table *Ident // table name - As Pos // position of AS keyword - Alias *Ident // optional alias + Schema *Ident // optional schema name + Dot Pos // position of DOT between schema and table name + Table *Ident // table name + As Pos // position of AS keyword + Alias *Ident // optional alias ColumnsLparen Pos // position of column list left paren Columns []*Ident // optional column list @@ -2748,6 +2750,7 @@ } other := *s other.WithClause = s.WithClause.Clone() + other.Schema = s.Schema.Clone() other.Table = s.Table.Clone() other.Alias = s.Alias.Clone() other.Columns = cloneIdents(s.Columns) @@ -2783,7 +2786,12 @@ } } - fmt.Fprintf(&buf, " INTO %s", s.Table.String()) + buf.WriteString(" INTO ") + if s.Schema != nil { + buf.WriteString(s.Schema.String()) + buf.WriteString(".") + } + buf.WriteString(s.Table.String()) if s.Alias != nil { fmt.Fprintf(&buf, " AS %s", s.Alias.String()) } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/github.com/rqlite/sql/parser.go new/vendor/github.com/rqlite/sql/parser.go --- old/vendor/github.com/rqlite/sql/parser.go 2026-01-17 01:01:32.000000000 +0100 +++ new/vendor/github.com/rqlite/sql/parser.go 2026-01-29 05:01:00.000000000 +0100 @@ -1382,8 +1382,8 @@ func (p *Parser) parseIdent(desc string) (*Ident, error) { pos, tok, lit := p.scan() switch tok { - case IDENT, QIDENT: - return &Ident{Name: lit, NamePos: pos, Quoted: tok == QIDENT}, nil + case IDENT, QIDENT, BIDENT: + return &Ident{Name: lit, NamePos: pos, Quoted: tok == QIDENT || tok == BIDENT}, nil case NULL: return &Ident{Name: lit, NamePos: pos}, nil default: @@ -1475,10 +1475,18 @@ } stmt.Into, _, _ = p.scan() - // Parse table name & optional alias. + // Parse table name & optional schema & alias. if stmt.Table, err = p.parseIdent("table name"); err != nil { return &stmt, err } + // Check for schema.table syntax + if p.peek() == DOT { + stmt.Schema = stmt.Table + stmt.Dot, _, _ = p.scan() + if stmt.Table, err = p.parseIdent("table name"); err != nil { + return &stmt, err + } + } if p.peek() == AS { stmt.As, _, _ = p.scan() if stmt.Alias, err = p.parseIdent("alias"); err != nil { @@ -1731,7 +1739,7 @@ return nil, p.errorExpected(p.pos, p.tok, "table name") } ident, _ := p.parseIdent("table name") - if stmt.Table, err = p.parseQualifiedTableName(ident, false, false, false); err != nil { + if stmt.Table, err = p.parseQualifiedTableName(ident, true, false, false); err != nil { return &stmt, err } @@ -2201,7 +2209,7 @@ switch p.peek() { case LP: return p.parseParenSource() - case IDENT, QIDENT: + case IDENT, QIDENT, BIDENT: return p.parseQualifiedTable(true, true, true) case VALUES: return p.parseSelectStatement(false, nil) @@ -2538,7 +2546,7 @@ pos, tok, lit := p.scan() switch { case isExprIdentToken(tok): - ident := &Ident{Name: lit, NamePos: pos, Quoted: tok == QIDENT} + ident := &Ident{Name: lit, NamePos: pos, Quoted: tok == QIDENT || tok == BIDENT} if p.peek() == DOT { return p.parseQualifiedRef(ident) } else if p.peek() == LP { @@ -2688,7 +2696,7 @@ expr.Star, _, _ = p.scan() } else if isIdentToken(p.peek()) { pos, tok, lit := p.scan() - expr.Column = &Ident{Name: lit, NamePos: pos, Quoted: tok == QIDENT} + expr.Column = &Ident{Name: lit, NamePos: pos, Quoted: tok == QIDENT || tok == BIDENT} } else { return &expr, p.errorExpected(p.pos, p.tok, "column name") } @@ -2785,7 +2793,7 @@ // If specifying a window name, read it and exit. if isIdentToken(p.peek()) { pos, tok, lit := p.scan() - clause.Name = &Ident{Name: lit, NamePos: pos, Quoted: tok == QIDENT} + clause.Name = &Ident{Name: lit, NamePos: pos, Quoted: tok == QIDENT || tok == BIDENT} return &clause, nil } @@ -2807,7 +2815,7 @@ // Read base window name. if isIdentToken(p.peek()) { pos, tok, lit := p.scan() - def.Base = &Ident{Name: lit, NamePos: pos, Quoted: tok == QIDENT} + def.Base = &Ident{Name: lit, NamePos: pos, Quoted: tok == QIDENT || tok == BIDENT} } // Parse "PARTITION BY expr, expr..." diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/github.com/rqlite/sql/scanner.go new/vendor/github.com/rqlite/sql/scanner.go --- old/vendor/github.com/rqlite/sql/scanner.go 2026-01-17 01:01:32.000000000 +0100 +++ new/vendor/github.com/rqlite/sql/scanner.go 2026-01-29 05:01:00.000000000 +0100 @@ -35,7 +35,7 @@ return s.scanBlob() } else if isAlpha(ch) || ch == '_' { return s.scanUnquotedIdent(s.pos, "") - } else if ch == '"' { + } else if ch == '"' || ch == '`' { return s.scanQuotedIdent() } else if ch == '\'' { return s.scanString() @@ -143,7 +143,7 @@ func (s *Scanner) scanQuotedIdent() (Pos, Token, string) { ch, pos := s.read() - assert(ch == '"') + assert(ch == '"' || ch == '`') s.buf.Reset() for { @@ -157,6 +157,13 @@ continue } return pos, QIDENT, s.buf.String() + } else if ch == '`' { + if s.peek() == '`' { // escaped quote + s.read() + s.buf.WriteRune('`') + continue + } + return pos, BIDENT, s.buf.String() } s.buf.WriteRune(ch) } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/github.com/rqlite/sql/token.go new/vendor/github.com/rqlite/sql/token.go --- old/vendor/github.com/rqlite/sql/token.go 2026-01-17 01:01:32.000000000 +0100 +++ new/vendor/github.com/rqlite/sql/token.go 2026-01-29 05:01:00.000000000 +0100 @@ -38,6 +38,7 @@ literal_beg IDENT // IDENT QIDENT // "IDENT" + BIDENT // `IDENT` STRING // 'string' BLOB // ??? FLOAT // 123.45 @@ -257,6 +258,7 @@ IDENT: "IDENT", QIDENT: "QIDENT", + BIDENT: "BIDENT", STRING: "STRING", BLOB: "BLOB", FLOAT: "FLOAT", @@ -512,17 +514,17 @@ } func isIdentToken(tok Token) bool { - return tok == IDENT || tok == QIDENT + return tok == IDENT || tok == QIDENT || tok == BIDENT } // isExprIdentToken returns true if tok can be used as an identifier in an expression. -// It includes IDENT, QIDENT, bare tokens (keywords that can be used as identifiers), +// It includes IDENT, QIDENT, BIDENT, bare tokens (keywords that can be used as identifiers), // and certain other keywords like ROWID. // Note: Some bare tokens have special expression handling (CAST, CASE, RAISE, etc.) // and should not be treated as identifiers in parseOperand. func isExprIdentToken(tok Token) bool { switch tok { - case IDENT, QIDENT: + case IDENT, QIDENT, BIDENT: return true // ROWID is a special keyword that can be used as an identifier but is not a bare token case ROWID: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/modules.txt new/vendor/modules.txt --- old/vendor/modules.txt 2026-01-17 01:01:32.000000000 +0100 +++ new/vendor/modules.txt 2026-01-29 05:01:00.000000000 +0100 @@ -250,7 +250,7 @@ github.com/rqlite/rqlite-disco-clients/dnssrv github.com/rqlite/rqlite-disco-clients/etcd github.com/rqlite/rqlite-disco-clients/expand -# github.com/rqlite/sql v0.0.0-20260116021722-655729ca2eff +# github.com/rqlite/sql v0.0.0-20260129012909-a110ae1f061e ## explicit; go 1.17 github.com/rqlite/sql # go.etcd.io/bbolt v1.4.3
