Documentation
¶
Overview ¶
Package xxldb provides a lightweight SQL database for Go applications
XxLdb is a lightweight, embedded SQL database written in pure Go. It supports common SQL operations without external dependencies.
Features:
- Pure Go implementation, no CGO dependencies
- Support for common SQL statements: SELECT, INSERT, UPDATE, DELETE, CREATE, DROP
- Support for JOIN and UNION operations
- Built-in functions for string, numeric, date/time operations
- Support for persistent storage
- User authentication
- Configurable logging
- Standard Go SQL driver interface
- Support for BLOB and FILE storage
- SSH/SFTP remote database access
Basic Usage:
// Open a database
engine, err := xxldb.Open("/path/to/db")
if err != nil {
log.Fatal(err)
}
defer engine.Close()
// Execute SQL
result, err := engine.Exec("CREATE TABLE users (id SEQ, name VARCHAR(100), age INT)")
if err != nil {
log.Fatal(err)
}
// Query data
rows, err := engine.Query("SELECT * FROM users WHERE age > ?", 18)
if err != nil {
log.Fatal(err)
}
defer rows.Close()
Using with database/sql:
import (
"database/sql"
_ "github.com/topxeq/xxldb/driver"
)
db, err := sql.Open("xxldb", "/path/to/database")
SSH Remote Database:
// Using DSN
db, err := sql.Open("xxldb", "ssh://user:password@host:22/path/to/db")
// Using OpenSSH function
engine, err := xxldb.OpenSSH(xxldb.SSHConfig{
Host: "server.com",
Port: 22,
Username: "admin",
Password: "secret",
DBPath: "/data/mydb",
})
Index ¶
Constants ¶
const ( Version = executor.Version BuildDate = executor.BuildDate )
Version information
const ( TypeUnknown = types.TypeUnknown TypeNull = types.TypeNull TypeSeq = types.TypeSeq TypeInt = types.TypeInt TypeFloat = types.TypeFloat TypeChar = types.TypeChar TypeVarchar = types.TypeVarchar TypeText = types.TypeText TypeDate = types.TypeDate TypeTime = types.TypeTime TypeDatetime = types.TypeDatetime TypeBlob = types.TypeBlob TypeFile = types.TypeFile )
DataType constants
Variables ¶
This section is empty.
Functions ¶
func OpenDSN ¶
OpenDSN opens a database using a DSN string Supported DSN formats:
- :memory: - in-memory database
- /path/to/db - local file database
- ssh://user:pass@host:port/path/to/db - SSH with password
- ssh://user@host:port/path/to/db?private_key=/path/to/key - SSH with key
Note: This function uses database/sql internally. For direct Engine access, use Open, OpenSSH, or OpenWithFS instead.
Example:
db, err := xxldb.OpenDSN("ssh://admin:secret@server.com:22/data/mydb")
Types ¶
type Engine ¶
Re-export types from executor package
func OpenSSH ¶
OpenSSH opens a remote database via SSH/SFTP
Example:
engine, err := xxldb.OpenSSH(xxldb.SSHConfig{
Host: "server.com",
Port: 22,
Username: "admin",
Password: "secret",
DBPath: "/data/mydb",
})
func OpenWithConfig ¶
OpenWithConfig opens a database with the specified configuration
func OpenWithFS ¶
func OpenWithFS(path string, fs FileSystem) (*Engine, error)
OpenWithFS opens a database with a custom filesystem This allows using custom storage backends like SFTP, memory, etc.
Example:
// Using local filesystem
fs := storage.NewLocalFS("/path/to/db")
engine, err := xxldb.OpenWithFS("/path/to/db", fs)
// Using SFTP filesystem
sftpFS, _ := storage.NewSFTPFS("/remote/db", sftpConfig)
engine, err := xxldb.OpenWithFS("/remote/db", sftpFS)
type FileSystem ¶
type FileSystem = storage.FileSystem
FileSystem is an interface for file system operations Can be used to provide custom storage backends (e.g., SFTP, memory, etc.)
type SSHConfig ¶
type SSHConfig struct {
Host string // SSH server hostname or IP
Port int // SSH server port (default: 22)
Username string // SSH username
Password string // SSH password (optional if using key)
PrivateKey string // Path to SSH private key file (optional if using password)
Passphrase string // Passphrase for encrypted private key (optional)
Timeout time.Duration // Connection timeout (default: 30s)
DBPath string // Database path on remote server
}
SSHConfig holds SSH connection parameters for remote database access
Directories
¶
| Path | Synopsis |
|---|---|
|
Package auth provides authentication for xxldb
|
Package auth provides authentication for xxldb |
|
cmd
|
|
|
xxldb
command
Package main provides the xxldb command-line client
|
Package main provides the xxldb command-line client |
|
Package driver provides a Go SQL driver for xxldb
|
Package driver provides a Go SQL driver for xxldb |
|
Package executor provides SQL execution for xxldb
|
Package executor provides SQL execution for xxldb |
|
Package fts provides full-text search functionality for xxldb
|
Package fts provides full-text search functionality for xxldb |
|
Package function provides built-in functions for xxldb
|
Package function provides built-in functions for xxldb |
|
Package import provides database import functionality for xxldb
|
Package import provides database import functionality for xxldb |
|
Package logger provides logging functionality for xxldb
|
Package logger provides logging functionality for xxldb |
|
Package mysql provides MySQL protocol server for xxldb
|
Package mysql provides MySQL protocol server for xxldb |
|
Package parser provides AST definitions for xxldb SQL
|
Package parser provides AST definitions for xxldb SQL |
|
Package script provides script function support for xxldb Script functions are user-defined functions stored in the xxscript table
|
Package script provides script function support for xxldb Script functions are user-defined functions stored in the xxscript table |
|
Package storage provides DeleteRowsWithCallback for FTS support
|
Package storage provides DeleteRowsWithCallback for FTS support |
|
crypto
Package crypto provides TXDEF encryption for xxldb
|
Package crypto provides TXDEF encryption for xxldb |
|
Package types provides error definitions for xxldb
|
Package types provides error definitions for xxldb |