Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/rupurt/zodbc

A blazing fast ODBC Zig client
https://github.com/rupurt/zodbc

apache-arrow odbc performance zig

Last synced: 2 months ago
JSON representation

A blazing fast ODBC Zig client

Awesome Lists containing this project

README

        

# zodbc

A blazing fast ODBC Zig client

```console
> zodbc -h
zodbc

USAGE:
zodbc [OPTIONS]

COMMANDS:
sql
dump
load
tables
table-privileges
columns
column-privileges
special-columns
primary-keys
foreign-keys
statistics
data-sources
functions
procedures
procedure-columns
info
attrs
benchmark

OPTIONS:
-h, --help Prints help information
```

## Goals

- [ ] Fastest ODBC C ABI client library for bulk load/unload
- [x] Kernel thread worker pool concurrency per ODBC connection
- [x] High level Zig bindings
- [x] ODBC row & column bindings
- [x] ODBC Zig bindings
- [ ] ODBC to Arrow record batch reader/writer
- [ ] ODBC zero copy C ABI
- [ ] High level C ABI
- [ ] Expose all ODBC API's
- [ ] Database benchmarks
- [ ] Python bindings
- [ ] Elixir bindings
- [ ] Java bindings
- [ ] .NET bindings

## Getting Started

- [Usage](#usage)
- [Commands](./docs/commands)
- [sql](./docs/commands/sql)
- [dump](./docs/commands/dump)
- [load](./docs/commands/load)
- [tables](./docs/commands/tables)
- [table-privileges](./docs/commands/table_privileges)
- [columns](./docs/commands/columns)
- [column-privileges](./docs/commands/column_privileges)
- [special-columns](./docs/commands/special_columns)
- [primary-keys](./docs/commands/primary_keys)
- [foreign-keys](./docs/commands/foreign_keys)
- [statistics](./docs/commands/statistics)
- [data-sources](./docs/commands/data_sources)
- [functions](./docs/commands/functions)
- [procedures](./docs/commands/procedures)
- [procedure-columns](./docs/commands/procedure-columns)
- [info](./docs/commands/info)
- [attrs](./docs/commands/attrs)
- [env](./docs/commands/attrs#env)
- [con](./docs/commands/attrs#con)
- [benchmark](./docs/commands/benchmark)
- [Library](./docs/LIBRARY.md)
- [Nix](./docs/NIX.md)
- [Development](./docs/DEVELOPMENT.md)

## Usage

1. Add `zodbc` as a dependency in your `build.zig.zon`
```zig
.{
.name = "",
.version = "",
.dependencies = .{
.zodbc = .{
.url = "https://github.com/rupurt/zodbc/archive/.tar.gz",
.hash = "",
},
},
}
```

Set `` to `12200000000000000000000000000000000000000000000000000000000000000000`, and Zig will provide the correct found value in an error message.

2. Add `zodbc` as a dependency module in your `build.zig`
```zig
// ...
const zodbc_dep = b.dependency("zodbc", .{ .target = target, .optimize = optimize });
exe.root_module.addImport("zodbc", zodbc_dep.module("zodbc"));
```

## Development

```console
> nix develop -c $SHELL
```

```console
> make
```

```console
> make test
```

```console
> make run
```

```console
> make clean
```

```console
> make build
```

```console
> make run -- -h
> make run -- sql -h
...
```

```console
> make exec -- -h
> make exec -- sql -h
```

```console
> make compose.up
> make compose.down
```

# License

`zodbc` is released under the [MIT license](./LICENSE)