A crude set of changes to ruby-monetdb-sql to support xquery. Warning at the moment I haven't tested anything but basic xqueries and I haven't changed anything in the gemspec so stuff might break.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
adapter
examples
lib
COPYING
Changelog
Makefile
Makefile.am
Makefile.in
Makefile.msc
README
TODO
ruby-monetdb-mapi-0.1.gemspec

README

Warning: this version has crude support for xquery added and has not been properly tested or completed, use with caution.
== Standalone driver ==
This directory contains the a ruby interface to monetdb5 
written in pure ruby.

lib/MonetDB.rb
lib/MonetDBConnection.rb
lib/MonetDBStatements.rb
lib/MonetDBData.rb
lib/MonetDBExceptions.rb
lib/hasher.rb
lib/demo.rb: demo application how to interact with the database

ruby-monetdb-sql-0.1.gemspec: make file for rubygems

doc/: rubydoc in HTML format

== Installation ==

The standalone monetdb driver can be installed using the RubyGems Package Manager.

First build a gem file starting from the gemspec configuration:

$ gem build ruby-monetdb-sql-0.1.gemspec

Then install with the command:

$ gem install ruby-monetdb-sql-0.1.gem

== Usage ==
To use the standalone driver import the 'MonetDB' class and 'rubygems' (in case you installed it using gems).

A typical sequence of events is as follows:
Invoke query using the database handle to send the statement to the server and get back a result set object.

A result set object  has methods for fetching rows, moving around in the result set, obtaining column metadata, and releasing the result set.
Use a row fetching method such as fetch_row or an iterator such as each to access the rows of the result set.
If you want a count of the number of rows in the result set: invoke 'num_rows' method.
Invoke 'free' to release the result set. 

== Example ==

require 'MonetDB'

db = MonetDB.new
db.connect(user = "monetdb", passwd = "monetdb", lang = "sql", host="127.0.0.1", port = 50000, db_name = "demo", auth_type = "SHA1")

# set type_cast=true to enable MonetDB to Ruby type mapping
res = db.query("SELECT * from tables;", type_cast = false)

#puts res.debug_columns_type

puts "Number of rows returned: " + res.num_rows.to_s
puts "Number of fields: " + res.num_fields.to_s


# Get the columns' name
col_names = res.name_fields


# Iterate over the record set and retrieve on row at a time
puts res.fetch
while row = res.fetch do
  printf "%s \n", row
end

# Release the result set.
res.free

# Disconnect from server
db.close

See lib/demo.rb and the MonetDBDatar class documentation for more examples.



== ActiveRecord connector adapter ==
Active Record connects business objects and database tables to create a persistable domain model where logic and data are presented in one wrapping. It‘s an implementation of the object-relational mapping (ORM) pattern.

Required files:

adapter/lib/active_record/monetdb_adapter.rb

Usage example follows:
require 'active_record'

ActiveRecord::Base.logger = Logger.new(STDERR)
ActiveRecord::Base.colorize_logging = true

ActiveRecord::Base.establish_connection(
        :adapter => "monetdb",
        :host => "localhost",
        :database => "demo"
)

# Create a new table
class AddTests < ActiveRecord::Migration
  def self.up
    create_table :tests do |table|
        table.column :name, :string
        table.column :surname, :string
    end
  end

  def self.down
   drop_table :tests
  end

end

AddTests.up

# Migration: add a column name with a default value
class AddAge < ActiveRecord::Migration 
  def self.up
    add_column :tests, :age, :smallint, :default => 18
  end

  def self.down
    remove_column :tests, :age
  end

end

class Test < ActiveRecord::Base
end

# Insert an entry in the table
Test.create(:name => 'X', :surname => 'Y')

# add a column
AddAge.up

# return the first result of the query SELECT * from tables
row = Test.find(:first)
printf "SELECT * from tests LIMIT 1:\n"
printf "Name: %s, Surname: %s, Age: %s\n", row.name, row.surname, row.age

# Drop the table
AddTests.down

== Rubygem ==

The standalone ruby driver can be distributed as a ruby gem.
A gem file is already available; however, it can be generated 
starting from the ruby-monetdb-sql-0.1.gemspec file:

$ gem build ruby-monetdb-sql-0.1.gemspec

To install the file run the command:

$ gem install ruby-monetdb-sql-0.1.gem

Documentation in ri and html format will be generated and installed as well