crystal-monetdb-libmapi
Version, currently master branch1 version
- master branchlatestNov 4, 2017
github.com/puppetpies/crystal-monetdb-libmapi
Crystal bindings for MonetDB
Installation
# Add this to your shard.yml
dependencies:
crystal-monetdb-libmapi:
github: puppetpies/crystal-monetdb-libmapi
branch: mastermaster is a branch, not a release, so this tracks it rather than pinning a version.
Then run:
shards installshard.yml
- Crystal
- no constraint declared
- License
- MIT
- Author
- Brian Hood
Dependencies
Development Dependencies
README
crystal-monetdb-libmapi
Crystal binding for the MonetDB MAPI client interface
Tested on
Crystal 0.22
Work around added for Crystal 0.23 on CentOS see https://github.com/crystal-lang/crystal/issues/4719
You will need the MonetDB client package installed for this to work and also an instance of MServer5 running
We can now perform a query that emits JSON useful for SELECT statements
For more details look at monetdb.org
Shards
Add this to your shard.yml and run shards install or crystal dep
crystal-monetdb-libmapi:
github: puppetpies/crystal-monetdb-libmapi
version: ">= 0.1.1"
Examples schemas provided under examples/
# Example code from shard crystal-monetdb-examples
require "crystal-monetdb-libmapi"
require "crystal-monetdb-libmapi/monetdb_data"
require "colorize"
class ConnectionError < Exception; end
class QueryError < Exception; end
class InternalError < Exception; end
class TimeoutError < Exception; end
host = "127.0.0.1"
port = 50000
username = "monetdb"
password = "monetdb"
db = "threatmonitor"
mero = MonetDB::ClientJSON.new
mero.host = host
mero.port = port
mero.username = username
mero.password = password
mero.db = db
myschema = "\"threatmonitor\""
query = "SELECT * FROM #{myschema}.fruits;"
mero.connect
# Alternative connect overload method to allow easy connect
# conn = MonetDB::Client.new
# conn.connect("localhost", "username", "password", "testschema")
result_json = mero.query_json(query)
result = mero.json_to_hash(result_json)
puts "Hash Created:".colorize(:red)
p result
puts "Display specific fields".colorize(:red)
result.each {|k,v|
puts "Hash Key: #{k} Name: #{v["name"]} Price: #{v["price"]}"
}
NOTE: I recently added a workaround for compiling under Centos 7 / RHEL
We also provide an easyconnect script which allows you to provide all the host, login parameters as seen above.
There are a few benchmark tools ( Feel free to add more )
insperf - Insert performance included my stopwatch
insperf_fiber
randomize - Random columns / table width and data
I do hope with this project people get involved feel free to fork the project as always, raise issues where needed i just want everyone to have a good time !
Have fun!
Brian Hood
Documentation
Built from the current release. The first visit to a release nobody has asked for starts its build.
Links
This branch
- Branch
master- Seen
- Nov 4, 2017
- Indexed
- yes
Dependents
Repository
github.com/puppetpies/crystal-monetdb-libmapi
Metadata
- Created
- Aug 18, 2026
- Updated
- Sep 26, 2026
- Synced
- Sep 26, 2026
- Versions
- 1