Mercurial > hg > monetdb-ruby
annotate lib/MonetDBData.rb @ 18:8bf57d01c887
Further improvement, parse header strings between double quotes and with spaces
author | Pedro Ferreira <pedro.ferreira@monetdbsolutions.com> |
---|---|
date | Tue, 03 Dec 2019 17:06:45 +0100 (2019-12-03) |
parents | 6abcfcdb4924 |
children | 139897304835 |
rev | line source |
---|---|
0
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
1 # This Source Code Form is subject to the terms of the Mozilla Public |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
2 # License, v. 2.0. If a copy of the MPL was not distributed with this |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
3 # file, You can obtain one at http://mozilla.org/MPL/2.0/. |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
4 # |
17
6abcfcdb4924
Updated version number and copyright year.
Sjoerd Mullender <sjoerd@acm.org>
parents:
16
diff
changeset
|
5 # Copyright 1997 - July 2008 CWI, August 2008 - 2019 MonetDB B.V. |
0
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
6 |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
7 # Models a MonetDB RecordSet |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
8 require 'time' |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
9 require 'date' |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
10 require 'ostruct' |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
11 |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
12 require "bigdecimal" |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
13 |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
14 require_relative 'MonetDBConnection' |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
15 |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
16 require 'logger' |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
17 |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
18 class MonetDBData |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
19 @@DEBUG = false |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
20 |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
21 def initialize(connection) |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
22 @connection = connection |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
23 @lang = @connection.lang |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
24 |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
25 # Structure containing the header+results set for a fired Q_TABLE query |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
26 @header = [] |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
27 @query = {} |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
28 |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
29 @record_set = [] |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
30 @index = 0 # Position of the last returned record |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
31 |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
32 |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
33 @row_count = 0 |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
34 @row_offset = 10 |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
35 @row_index = Integer(MonetDBConnection::REPLY_SIZE) |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
36 end |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
37 |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
38 # Fire a query and return the server response |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
39 def execute(q) |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
40 # fire a query and get ready to receive the data |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
41 @connection.send(format_query(q)) |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
42 data = @connection.receive |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
43 |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
44 return if data == nil |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
45 |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
46 record_set = "" # temporarly store retrieved rows |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
47 record_set = receive_record_set(data) |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
48 |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
49 if (@lang == MonetDBConnection::LANG_SQL) |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
50 rows = receive_record_set(data) |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
51 # the fired query is a SELECT; store and return the whole record set |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
52 if @action == MonetDBConnection::Q_TABLE |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
53 @header = parse_header_table(@header) |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
54 @header.freeze |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
55 |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
56 if @row_index.to_i < @row_count.to_i |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
57 block_rows = "" |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
58 while next_block |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
59 data = @connection.receive |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
60 block_rows += receive_record_set(data) |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
61 end |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
62 record_set += block_rows |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
63 end |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
64 end |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
65 |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
66 # ruby string management seems to not properly understand the MSG_PROMPT escape character. |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
67 # In order to avoid data loss the @record_set array is built once that all tuples have been retrieved |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
68 @record_set = record_set.split("\t]\n") |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
69 |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
70 if @record_set.length != @query['rows'].to_i |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
71 raise MonetDBQueryError, "Warning: Query #{@query['id']} declared to result in #{@query['rows']} but #{@record_set.length} returned instead" |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
72 end |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
73 end |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
74 @record_set.freeze |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
75 end |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
76 |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
77 # Returns the record set entries hashed by column name orderd by column position |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
78 def fetch_all_as_column_hash |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
79 columns = {} |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
80 @header["columns_name"].each do |col_name| |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
81 columns[col_name] = fetch_by_column_name(col_name) |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
82 end |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
83 |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
84 return columns |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
85 end |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
86 |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
87 # returns a record hash (i.e: { id: 1, name: "John Doe", age: 42 } ) |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
88 def fetch_hash |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
89 return false if @index >= @query['rows'].to_i |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
90 |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
91 record_hash = record_hash(parse_tuple(@record_set[@index])) |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
92 @index += 1 |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
93 return record_hash |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
94 end |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
95 |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
96 # loops through all the hashes of the records and yields them to a given block |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
97 def each_record_as_hash |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
98 @record_set.each do |record| |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
99 parsed_record = parse_tuple(record) |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
100 yield(record_hash(parsed_record)) |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
101 end |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
102 end |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
103 |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
104 # Returns the values for the column 'field' |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
105 def fetch_by_column_name(column_name="") |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
106 position = @header["columns_order"].fetch(column_name) |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
107 |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
108 column_values = [] |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
109 @record_set.each do |row| |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
110 column_values << parse_tuple(row)[position] |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
111 end |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
112 |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
113 return column_values |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
114 end |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
115 |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
116 # fetches a single record, updates the iterator index |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
117 def fetch |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
118 return false if @index >= @query['rows'].to_i |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
119 |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
120 result = parse_tuple(@record_set[@index]) |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
121 @index += 1 |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
122 |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
123 return result |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
124 end |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
125 |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
126 # resets the internal iterator index used by fetch and fetch_hash |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
127 def reset_index |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
128 @index = 0 |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
129 end |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
130 |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
131 # loops through all records and yields to a given block paramter |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
132 def each_record |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
133 raise MonetDBDataError, "There is no record set currently available" unless @query['type'] == MonetDBConnection::Q_TABLE |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
134 @record_set.each { |record| yield(parse_tuple(record)) } |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
135 end |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
136 |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
137 # Cursor method that returns all the records |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
138 def fetch_all |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
139 result = [] |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
140 each_record do |record| |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
141 result.push(record) |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
142 end |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
143 return result |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
144 end |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
145 |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
146 # Returns the number of rows in the record set |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
147 def num_rows |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
148 return @query['rows'].to_i |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
149 end |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
150 |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
151 # Returns the number of fields in the record set |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
152 def num_fields |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
153 return @query['columns'].to_i |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
154 end |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
155 |
16
83db5acbd01a
Look for column names starting with '%' symbol at parse_header_table
Pedro Ferreira <pedro.ferreira@monetdbsolutions.com>
parents:
10
diff
changeset
|
156 # Returns the (ordered) name of the columns' tables in the record set |
83db5acbd01a
Look for column names starting with '%' symbol at parse_header_table
Pedro Ferreira <pedro.ferreira@monetdbsolutions.com>
parents:
10
diff
changeset
|
157 def table_name_fields |
83db5acbd01a
Look for column names starting with '%' symbol at parse_header_table
Pedro Ferreira <pedro.ferreira@monetdbsolutions.com>
parents:
10
diff
changeset
|
158 return @header['table_name'] |
83db5acbd01a
Look for column names starting with '%' symbol at parse_header_table
Pedro Ferreira <pedro.ferreira@monetdbsolutions.com>
parents:
10
diff
changeset
|
159 end |
83db5acbd01a
Look for column names starting with '%' symbol at parse_header_table
Pedro Ferreira <pedro.ferreira@monetdbsolutions.com>
parents:
10
diff
changeset
|
160 |
0
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
161 # Returns the (ordered) name of the columns in the record set |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
162 def name_fields |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
163 return @header['columns_name'] |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
164 end |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
165 |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
166 # Returns the (ordered) name of the columns in the record set |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
167 def type_fields |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
168 return @header['columns_type'] |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
169 end |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
170 |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
171 # =================== |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
172 private |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
173 # =================== |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
174 |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
175 # store block of data, parse it and store it. |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
176 def receive_record_set(response) |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
177 rows = "" |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
178 response.each_line do |row| |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
179 case row[0] |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
180 when MonetDBConnection::MSG_QUERY then parse_query(row) |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
181 when MonetDBConnection::MSG_INFO then raise MonetDBQueryError, row |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
182 when MonetDBConnection::MSG_SCHEMA_HEADER then @header << row |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
183 when MonetDBConnection::MSG_TUPLE then rows += row |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
184 when MonetDBConnection::MSG_PROMPT then return rows |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
185 end |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
186 end |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
187 return rows # return an array of unparsed tuples |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
188 end |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
189 |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
190 def parse_query(row) |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
191 case row[1] |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
192 when MonetDBConnection::Q_TABLE |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
193 @action = MonetDBConnection::Q_TABLE |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
194 @query = parse_header_query(row) |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
195 @query.freeze |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
196 @row_count = @query['rows'].to_i #total number of rows in table |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
197 when MonetDBConnection::Q_BLOCK |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
198 @action = MonetDBConnection::Q_BLOCK # strip the block header from data |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
199 @block = parse_header_query(row) |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
200 when MonetDBConnection::Q_TRANSACTION |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
201 @action = MonetDBConnection::Q_TRANSACTION |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
202 when MonetDBConnection::Q_CREATE |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
203 @action = MonetDBConnection::Q_CREATE |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
204 end |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
205 end |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
206 |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
207 def record_hash(record) |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
208 result = {} |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
209 |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
210 @header["columns_name"].each do |column_name| |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
211 position = @header["columns_order"].fetch(column_name) |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
212 result[column_name] = record[position] |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
213 end |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
214 |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
215 return result |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
216 end |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
217 |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
218 def next_block |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
219 if @row_index == @row_count |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
220 return false |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
221 else |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
222 # The increment step is small to better deal with ruby socket's performance. |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
223 # For larger values of the step performance drop; |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
224 # |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
225 @row_offset = [@row_offset, (@row_count - @row_index)].min |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
226 |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
227 # export offset amount |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
228 @connection.set_export(@query['id'], @row_index.to_s, @row_offset.to_s) |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
229 @row_index += @row_offset |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
230 @row_offset += 1 |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
231 end |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
232 return true |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
233 |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
234 end |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
235 |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
236 # Formats a query <i>string</i> so that it can be parsed by the server |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
237 def format_query(q) |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
238 if @lang == MonetDBConnection::LANG_SQL |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
239 return "s" + q + "\n;" |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
240 else |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
241 raise LanguageNotSupported, @lang |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
242 end |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
243 end |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
244 |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
245 # parse one tuple as returned from the server |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
246 def parse_tuple(tuple) |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
247 fields = [] |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
248 # remove trailing "[" |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
249 tuple = tuple.gsub(/^\[\s+/,'') |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
250 tuple.split(/,\t/).each_with_index do |field, index| |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
251 field_value = convert_type(field, index) |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
252 fields << field_value |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
253 end |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
254 |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
255 return fields.freeze |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
256 end |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
257 |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
258 # converts the given value the correct type |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
259 def convert_type(value, index) |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
260 return nil if "NULL" == value.upcase |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
261 return case type_fields.values[index] |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
262 when "int", "tinyint", "smallint", "bigint", "hugeint" then value.to_i |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
263 when "double", "real", "decimal" then value.to_f |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
264 when "boolean" then value.downcase == true |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
265 when "date" then Date.parse(value) |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
266 when "time" then Time.parse(value, Time.new("2000-01-01")) |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
267 when "timestamp" then DateTime.parse(value) |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
268 when "timestamptz" then DateTime.parse(value) |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
269 else value.gsub(/\\/, '').gsub(/^"/,'').gsub(/"$/,'').gsub(/\"/, '') |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
270 end |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
271 end |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
272 |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
273 # Parses a query header and returns information about the query. |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
274 def parse_header_query(row) |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
275 type = row[1].chr |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
276 if type == MonetDBConnection::Q_TABLE |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
277 # Performing a SELECT: store informations about the table size, query id, total number of records and returned. |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
278 id = row.split(' ')[1] |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
279 rows = row.split(' ')[2] |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
280 columns = row.split(' ')[3] |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
281 returned = row.split(' ')[4] |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
282 |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
283 header = { "id" => id, "type" => type, "rows" => rows, "columns" => columns, "returned" => returned } |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
284 elsif type == MonetDBConnection::Q_BLOCK |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
285 # processing block header |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
286 |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
287 id = row.split(' ')[1] |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
288 columns = row.split(' ')[2] |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
289 remains = row.split(' ')[3] |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
290 offset = row.split(' ')[4] |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
291 |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
292 header = { "id" => id, "type" => type, "remains" => remains, "columns" => columns, "offset" => offset } |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
293 else |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
294 header = {"type" => type} |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
295 end |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
296 |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
297 return header.freeze |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
298 end |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
299 |
18
8bf57d01c887
Further improvement, parse header strings between double quotes and with spaces
Pedro Ferreira <pedro.ferreira@monetdbsolutions.com>
parents:
17
diff
changeset
|
300 # Parse escaped strings between double quotes |
8bf57d01c887
Further improvement, parse header strings between double quotes and with spaces
Pedro Ferreira <pedro.ferreira@monetdbsolutions.com>
parents:
17
diff
changeset
|
301 def parse_header_table_values(line, start, stop, results) |
8bf57d01c887
Further improvement, parse header strings between double quotes and with spaces
Pedro Ferreira <pedro.ferreira@monetdbsolutions.com>
parents:
17
diff
changeset
|
302 i = start |
8bf57d01c887
Further improvement, parse header strings between double quotes and with spaces
Pedro Ferreira <pedro.ferreira@monetdbsolutions.com>
parents:
17
diff
changeset
|
303 inString = false |
8bf57d01c887
Further improvement, parse header strings between double quotes and with spaces
Pedro Ferreira <pedro.ferreira@monetdbsolutions.com>
parents:
17
diff
changeset
|
304 escaped = false |
8bf57d01c887
Further improvement, parse header strings between double quotes and with spaces
Pedro Ferreira <pedro.ferreira@monetdbsolutions.com>
parents:
17
diff
changeset
|
305 |
8bf57d01c887
Further improvement, parse header strings between double quotes and with spaces
Pedro Ferreira <pedro.ferreira@monetdbsolutions.com>
parents:
17
diff
changeset
|
306 until i == stop do |
8bf57d01c887
Further improvement, parse header strings between double quotes and with spaces
Pedro Ferreira <pedro.ferreira@monetdbsolutions.com>
parents:
17
diff
changeset
|
307 case line[i] |
8bf57d01c887
Further improvement, parse header strings between double quotes and with spaces
Pedro Ferreira <pedro.ferreira@monetdbsolutions.com>
parents:
17
diff
changeset
|
308 when '\\' |
8bf57d01c887
Further improvement, parse header strings between double quotes and with spaces
Pedro Ferreira <pedro.ferreira@monetdbsolutions.com>
parents:
17
diff
changeset
|
309 escaped = !escaped |
8bf57d01c887
Further improvement, parse header strings between double quotes and with spaces
Pedro Ferreira <pedro.ferreira@monetdbsolutions.com>
parents:
17
diff
changeset
|
310 when '"' |
8bf57d01c887
Further improvement, parse header strings between double quotes and with spaces
Pedro Ferreira <pedro.ferreira@monetdbsolutions.com>
parents:
17
diff
changeset
|
311 if !inString |
8bf57d01c887
Further improvement, parse header strings between double quotes and with spaces
Pedro Ferreira <pedro.ferreira@monetdbsolutions.com>
parents:
17
diff
changeset
|
312 inString = true |
8bf57d01c887
Further improvement, parse header strings between double quotes and with spaces
Pedro Ferreira <pedro.ferreira@monetdbsolutions.com>
parents:
17
diff
changeset
|
313 else |
8bf57d01c887
Further improvement, parse header strings between double quotes and with spaces
Pedro Ferreira <pedro.ferreira@monetdbsolutions.com>
parents:
17
diff
changeset
|
314 inString = false |
8bf57d01c887
Further improvement, parse header strings between double quotes and with spaces
Pedro Ferreira <pedro.ferreira@monetdbsolutions.com>
parents:
17
diff
changeset
|
315 end |
8bf57d01c887
Further improvement, parse header strings between double quotes and with spaces
Pedro Ferreira <pedro.ferreira@monetdbsolutions.com>
parents:
17
diff
changeset
|
316 escaped = false |
8bf57d01c887
Further improvement, parse header strings between double quotes and with spaces
Pedro Ferreira <pedro.ferreira@monetdbsolutions.com>
parents:
17
diff
changeset
|
317 when ',' |
8bf57d01c887
Further improvement, parse header strings between double quotes and with spaces
Pedro Ferreira <pedro.ferreira@monetdbsolutions.com>
parents:
17
diff
changeset
|
318 if !inString # && line[i + 1] == '\t' |
8bf57d01c887
Further improvement, parse header strings between double quotes and with spaces
Pedro Ferreira <pedro.ferreira@monetdbsolutions.com>
parents:
17
diff
changeset
|
319 if line[start] == '"' # Don't include the leading " in the column atribute |
8bf57d01c887
Further improvement, parse header strings between double quotes and with spaces
Pedro Ferreira <pedro.ferreira@monetdbsolutions.com>
parents:
17
diff
changeset
|
320 start += 1 |
8bf57d01c887
Further improvement, parse header strings between double quotes and with spaces
Pedro Ferreira <pedro.ferreira@monetdbsolutions.com>
parents:
17
diff
changeset
|
321 end |
8bf57d01c887
Further improvement, parse header strings between double quotes and with spaces
Pedro Ferreira <pedro.ferreira@monetdbsolutions.com>
parents:
17
diff
changeset
|
322 if line[i - 1] == '"' |
8bf57d01c887
Further improvement, parse header strings between double quotes and with spaces
Pedro Ferreira <pedro.ferreira@monetdbsolutions.com>
parents:
17
diff
changeset
|
323 next_end = 2 |
8bf57d01c887
Further improvement, parse header strings between double quotes and with spaces
Pedro Ferreira <pedro.ferreira@monetdbsolutions.com>
parents:
17
diff
changeset
|
324 else |
8bf57d01c887
Further improvement, parse header strings between double quotes and with spaces
Pedro Ferreira <pedro.ferreira@monetdbsolutions.com>
parents:
17
diff
changeset
|
325 next_end = 1 |
8bf57d01c887
Further improvement, parse header strings between double quotes and with spaces
Pedro Ferreira <pedro.ferreira@monetdbsolutions.com>
parents:
17
diff
changeset
|
326 end |
8bf57d01c887
Further improvement, parse header strings between double quotes and with spaces
Pedro Ferreira <pedro.ferreira@monetdbsolutions.com>
parents:
17
diff
changeset
|
327 results.push(line[start..i - next_end]) |
8bf57d01c887
Further improvement, parse header strings between double quotes and with spaces
Pedro Ferreira <pedro.ferreira@monetdbsolutions.com>
parents:
17
diff
changeset
|
328 i += 1 |
8bf57d01c887
Further improvement, parse header strings between double quotes and with spaces
Pedro Ferreira <pedro.ferreira@monetdbsolutions.com>
parents:
17
diff
changeset
|
329 start = i + 1 |
8bf57d01c887
Further improvement, parse header strings between double quotes and with spaces
Pedro Ferreira <pedro.ferreira@monetdbsolutions.com>
parents:
17
diff
changeset
|
330 end |
8bf57d01c887
Further improvement, parse header strings between double quotes and with spaces
Pedro Ferreira <pedro.ferreira@monetdbsolutions.com>
parents:
17
diff
changeset
|
331 escaped = false |
8bf57d01c887
Further improvement, parse header strings between double quotes and with spaces
Pedro Ferreira <pedro.ferreira@monetdbsolutions.com>
parents:
17
diff
changeset
|
332 else |
8bf57d01c887
Further improvement, parse header strings between double quotes and with spaces
Pedro Ferreira <pedro.ferreira@monetdbsolutions.com>
parents:
17
diff
changeset
|
333 escaped = false |
8bf57d01c887
Further improvement, parse header strings between double quotes and with spaces
Pedro Ferreira <pedro.ferreira@monetdbsolutions.com>
parents:
17
diff
changeset
|
334 end |
8bf57d01c887
Further improvement, parse header strings between double quotes and with spaces
Pedro Ferreira <pedro.ferreira@monetdbsolutions.com>
parents:
17
diff
changeset
|
335 i += 1 |
8bf57d01c887
Further improvement, parse header strings between double quotes and with spaces
Pedro Ferreira <pedro.ferreira@monetdbsolutions.com>
parents:
17
diff
changeset
|
336 end |
8bf57d01c887
Further improvement, parse header strings between double quotes and with spaces
Pedro Ferreira <pedro.ferreira@monetdbsolutions.com>
parents:
17
diff
changeset
|
337 if line[start] == '"' # Don't include the leading " in the column atribute |
8bf57d01c887
Further improvement, parse header strings between double quotes and with spaces
Pedro Ferreira <pedro.ferreira@monetdbsolutions.com>
parents:
17
diff
changeset
|
338 start += 1 |
8bf57d01c887
Further improvement, parse header strings between double quotes and with spaces
Pedro Ferreira <pedro.ferreira@monetdbsolutions.com>
parents:
17
diff
changeset
|
339 end |
8bf57d01c887
Further improvement, parse header strings between double quotes and with spaces
Pedro Ferreira <pedro.ferreira@monetdbsolutions.com>
parents:
17
diff
changeset
|
340 if line[stop] == '"' |
8bf57d01c887
Further improvement, parse header strings between double quotes and with spaces
Pedro Ferreira <pedro.ferreira@monetdbsolutions.com>
parents:
17
diff
changeset
|
341 next_end = 1 |
8bf57d01c887
Further improvement, parse header strings between double quotes and with spaces
Pedro Ferreira <pedro.ferreira@monetdbsolutions.com>
parents:
17
diff
changeset
|
342 else |
8bf57d01c887
Further improvement, parse header strings between double quotes and with spaces
Pedro Ferreira <pedro.ferreira@monetdbsolutions.com>
parents:
17
diff
changeset
|
343 next_end = 0 |
8bf57d01c887
Further improvement, parse header strings between double quotes and with spaces
Pedro Ferreira <pedro.ferreira@monetdbsolutions.com>
parents:
17
diff
changeset
|
344 end |
8bf57d01c887
Further improvement, parse header strings between double quotes and with spaces
Pedro Ferreira <pedro.ferreira@monetdbsolutions.com>
parents:
17
diff
changeset
|
345 results.push(line[start..stop - next_end]) |
8bf57d01c887
Further improvement, parse header strings between double quotes and with spaces
Pedro Ferreira <pedro.ferreira@monetdbsolutions.com>
parents:
17
diff
changeset
|
346 end |
8bf57d01c887
Further improvement, parse header strings between double quotes and with spaces
Pedro Ferreira <pedro.ferreira@monetdbsolutions.com>
parents:
17
diff
changeset
|
347 |
0
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
348 # Parses a Q_TABLE header and returns information about the schema. |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
349 def parse_header_table(header_t) |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
350 if @query["type"] == MonetDBConnection::Q_TABLE |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
351 if header_t != nil |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
352 |
18
8bf57d01c887
Further improvement, parse header strings between double quotes and with spaces
Pedro Ferreira <pedro.ferreira@monetdbsolutions.com>
parents:
17
diff
changeset
|
353 name_t = Array.new |
8bf57d01c887
Further improvement, parse header strings between double quotes and with spaces
Pedro Ferreira <pedro.ferreira@monetdbsolutions.com>
parents:
17
diff
changeset
|
354 parse_header_table_values(header_t[0], 2, header_t[0].length - 15, name_t) |
16
83db5acbd01a
Look for column names starting with '%' symbol at parse_header_table
Pedro Ferreira <pedro.ferreira@monetdbsolutions.com>
parents:
10
diff
changeset
|
355 |
18
8bf57d01c887
Further improvement, parse header strings between double quotes and with spaces
Pedro Ferreira <pedro.ferreira@monetdbsolutions.com>
parents:
17
diff
changeset
|
356 name_cols = Array.new |
8bf57d01c887
Further improvement, parse header strings between double quotes and with spaces
Pedro Ferreira <pedro.ferreira@monetdbsolutions.com>
parents:
17
diff
changeset
|
357 parse_header_table_values(header_t[1], 2, header_t[1].length - 9, name_cols) |
0
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
358 |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
359 type_cols = { } |
18
8bf57d01c887
Further improvement, parse header strings between double quotes and with spaces
Pedro Ferreira <pedro.ferreira@monetdbsolutions.com>
parents:
17
diff
changeset
|
360 type_cols_array = Array.new |
8bf57d01c887
Further improvement, parse header strings between double quotes and with spaces
Pedro Ferreira <pedro.ferreira@monetdbsolutions.com>
parents:
17
diff
changeset
|
361 parse_header_table_values(header_t[2], 2, header_t[2].length - 9, type_cols_array) |
16
83db5acbd01a
Look for column names starting with '%' symbol at parse_header_table
Pedro Ferreira <pedro.ferreira@monetdbsolutions.com>
parents:
10
diff
changeset
|
362 type_cols_array.each_with_index do |col, i| |
83db5acbd01a
Look for column names starting with '%' symbol at parse_header_table
Pedro Ferreira <pedro.ferreira@monetdbsolutions.com>
parents:
10
diff
changeset
|
363 type_cols[name_cols[i]] = col |
0
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
364 end |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
365 |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
366 length_cols = { } |
18
8bf57d01c887
Further improvement, parse header strings between double quotes and with spaces
Pedro Ferreira <pedro.ferreira@monetdbsolutions.com>
parents:
17
diff
changeset
|
367 length_cols_array = Array.new |
8bf57d01c887
Further improvement, parse header strings between double quotes and with spaces
Pedro Ferreira <pedro.ferreira@monetdbsolutions.com>
parents:
17
diff
changeset
|
368 parse_header_table_values(header_t[3], 2, header_t[3].length - 11, length_cols_array) |
16
83db5acbd01a
Look for column names starting with '%' symbol at parse_header_table
Pedro Ferreira <pedro.ferreira@monetdbsolutions.com>
parents:
10
diff
changeset
|
369 length_cols_array.each_with_index do |col, i| |
83db5acbd01a
Look for column names starting with '%' symbol at parse_header_table
Pedro Ferreira <pedro.ferreira@monetdbsolutions.com>
parents:
10
diff
changeset
|
370 length_cols[name_cols[i]] = col |
0
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
371 end |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
372 |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
373 columns_order = {} |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
374 name_cols.each_with_index do |col, i| |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
375 columns_order[col] = i |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
376 end |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
377 |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
378 return {"table_name" => name_t, "columns_name" => name_cols, "columns_type" => type_cols, |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
379 "columns_length" => length_cols, "columns_order" => columns_order}.freeze |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
380 end |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
381 end |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
382 end |
aab36be83762
Created a new repository for the Ruby driver for MonetDB.
Sjoerd Mullender <sjoerd@acm.org>
parents:
diff
changeset
|
383 end |