Skip to content

Commit

Permalink
Introduce experimental SQLite CNID backend, GitHub #1177
Browse files Browse the repository at this point in the history
Based on the Netatalk MySQL CNID backend by Ralph Boehme.
Adapted for SQLite by Christopher Kobayashi.
Ported to Netatalk 3 by dgsga.
Touched up for Netatalk 4 by Daniel Markstedt.
  • Loading branch information
dgsga authored and rdmark committed Nov 12, 2024
1 parent 6b6fd1f commit 99b3751
Show file tree
Hide file tree
Showing 8 changed files with 1,008 additions and 2 deletions.
15 changes: 13 additions & 2 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@ jobs:
perl \
pkgconfig \
rpcsvc-proto-dev \
sqlite-dev \
talloc-dev \
tracker \
tracker-dev \
Expand Down Expand Up @@ -127,6 +128,7 @@ jobs:
perl \
pkgconfig \
rpcsvc-proto \
sqlite \
talloc \
tinysparql \
unicode-character-database
Expand Down Expand Up @@ -183,6 +185,7 @@ jobs:
libldap2-dev \
libmariadb-dev \
libpam0g-dev \
libsqlite3-dev \
libtalloc-dev \
libtirpc-dev \
libtracker-sparql-3.0-dev \
Expand Down Expand Up @@ -253,6 +256,7 @@ jobs:
perl \
perl-Net-DBus \
quota-devel \
sqlite-devel \
systemd \
systemtap-sdt-devel \
tracker \
Expand Down Expand Up @@ -314,6 +318,7 @@ jobs:
pam-devel \
perl \
pkg-config \
sqlite3-devel \
systemd \
systemtap-sdt-devel \
tcpd-devel \
Expand Down Expand Up @@ -424,7 +429,7 @@ jobs:
- uses: actions/checkout@v4
- name: Install dependencies
run: |
brew install berkeley-db cmark-gfm docbook-xsl libxslt meson mysql talloc
brew install berkeley-db cmark-gfm docbook-xsl libxslt meson mysql sqlite talloc
- name: Configure
run: |
meson setup build \
Expand Down Expand Up @@ -482,6 +487,7 @@ jobs:
py39-gdbm \
py39-sqlite3 \
py39-tkinter \
sqlite \
talloc \
tracker3
run: |
Expand Down Expand Up @@ -525,6 +531,7 @@ jobs:
p5-Net-DBus \
perl5 \
pkgconf \
sqlite3 \
talloc \
tracker3
run: |
Expand Down Expand Up @@ -580,6 +587,7 @@ jobs:
p5-Net-DBus \
perl \
pkg-config \
sqlite3 \
talloc \
tex-unicode-data
run: |
Expand Down Expand Up @@ -635,6 +643,7 @@ jobs:
openpam \
p5-Net-DBus \
pkgconf \
sqlite \
tracker3
run: |
set -e
Expand Down Expand Up @@ -682,6 +691,7 @@ jobs:
libxslt \
meson \
mysql-client \
sqlite3 \
talloc
run: |
set -e
Expand Down Expand Up @@ -728,7 +738,8 @@ jobs:
libgcrypt \
ninja \
pkg-config \
python/pip
python/pip \
sqlite-3
pip install meson
run: |
set -e
Expand Down
4 changes: 4 additions & 0 deletions etc/cnid_dbd/meson.build
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,10 @@ if use_dbd_backend
cnid_dbd_deps += mysqlclient
endif

if use_sqlite_backend
cnid_dbd_deps += sqlite_deps
endif

cnid_metad_sources = ['cnid_metad.c', 'usockfd.c', 'db_param.c']

dbd_sources = [
Expand Down
20 changes: 20 additions & 0 deletions include/atalk/cnid_sqlite_private.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
#ifndef _ATALK_CNID_SQLITE_PRIVATE_H
#define _ATALK_CNID_SQLITE_PRIVATE_H 1

#include <atalk/cnid_private.h>
#include <atalk/uuid.h>

#define CNID_SQLITE_FLAG_DEPLETED (1 << 0) /* CNID set overflowed */

typedef struct CNID_sqlite_private {
struct vol *vol;
uint32_t cnid_sqlite_flags;
sqlite3 *cnid_sqlite_con;
char *cnid_sqlite_voluuid_str;
cnid_t cnid_sqlite_hint;
sqlite3_stmt *cnid_lookup_stmt;
sqlite3_stmt *cnid_add_stmt;
sqlite3_stmt *cnid_put_stmt;
} CNID_sqlite_private;

#endif
6 changes: 6 additions & 0 deletions libatalk/cnid/meson.build
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,12 @@ if use_mysql_backend
libcnid_deps += mysql_deps
endif

if use_sqlite_backend
subdir('sqlite')
libcnid_libs += libcnid_sqlite
libcnid_deps += sqlite_deps
endif

cnid_sources = ['cnid_init.c', 'cnid.c']

libcnid = static_library(
Expand Down
Loading

0 comments on commit 99b3751

Please sign in to comment.