Skip to content

Instantly share code, notes, and snippets.

@makoto
Created October 27, 2008 16:58
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save makoto/20134 to your computer and use it in GitHub Desktop.
Save makoto/20134 to your computer and use it in GitHub Desktop.
diff -ru /Users/makoto/src/simplerdb-0.2/lib/simplerdb/query_language.rb /Library/Ruby/Gems/1.8/gems/simplerdb-0.2/lib/simplerdb/query_language.rb
--- /Users/makoto/src/simplerdb-0.2/lib/simplerdb/query_language.rb 2008-03-15 04:26:01.000000000 +0000
+++ /Library/Ruby/Gems/1.8/gems/simplerdb-0.2/lib/simplerdb/query_language.rb 2008-10-20 12:05:15.000000000 +0100
@@ -14,17 +14,23 @@
# Execute the query
def do_query(query, domain, max = 100, token = 0)
- parse_result = @parser.parse(@lexer.lex(query))
token = 0 if token.nil?
- case parse_result
- when Dhaka::TokenizerErrorResult
- raise tokenize_error_message(parse_result.unexpected_char_index, query)
- when Dhaka::ParseErrorResult
- raise parse_error_message(parse_result.unexpected_token, query)
- end
+ if query.nil? || query.empty?
+ items = QueryEvaluator.new(domain).all_items
+ else
+ parse_result = @parser.parse(@lexer.lex(query))
+ case parse_result
+ when Dhaka::TokenizerErrorResult
+ raise tokenize_error_message(parse_result.unexpected_char_index, query)
+ when Dhaka::ParseErrorResult
+ raise parse_error_message(parse_result.unexpected_token, query)
+ end
- items = QueryEvaluator.new(domain).evaluate(parse_result)
+ items = QueryEvaluator.new(domain).evaluate(parse_result)
+ items
+ end
+
results = []
count = 0
items.each do |item|
@@ -32,7 +38,6 @@
results << item if count >= token
count += 1
end
-
if (count == items.size)
return results,nil
else
@@ -236,7 +241,9 @@
def all_items
unless @all_items
- @all_items = @domain.items.collect { |k,v| k }.to_set
+ # all_items requires result sets as object sets,
+ # rather than keys in string
+ @all_items = @domain.items.collect { |k,v| v }.to_set
end
return @all_items
Only in /Users/makoto/src/simplerdb-0.2/lib/simplerdb: query_language.rb.diff
diff -ru /Users/makoto/src/simplerdb-0.2/test/functional_test.rb /Library/Ruby/Gems/1.8/gems/simplerdb-0.2/test/functional_test.rb
--- /Users/makoto/src/simplerdb-0.2/test/functional_test.rb 2008-03-15 23:20:49.000000000 +0000
+++ /Library/Ruby/Gems/1.8/gems/simplerdb-0.2/test/functional_test.rb 2008-10-20 12:03:58.000000000 +0100
@@ -68,6 +68,10 @@
results = @sdb.query("bands", "['albums' starts-with 'OK' or 'albums' = 'The Soft Bulletin']")
assert results[:items].sort == ["Radiohead", "The Flaming Lips"]
+
+ # Query with no attribute argument should return all items
+ results = @sdb.query("bands")
+ assert(results, ["Radiohead", "Wilco", "The Flaming Lips"])
# Modify and re-read attributes
@sdb.put_attributes("bands", "The Flaming Lips", {:albums => "Yoshimi Battles the Pink Robots"})
diff -ru /Users/makoto/src/simplerdb-0.2/test/simplerdb_test.rb /Library/Ruby/Gems/1.8/gems/simplerdb-0.2/test/simplerdb_test.rb
--- /Users/makoto/src/simplerdb-0.2/test/simplerdb_test.rb 2008-03-15 17:58:16.000000000 +0000
+++ /Library/Ruby/Gems/1.8/gems/simplerdb-0.2/test/simplerdb_test.rb 2008-10-20 10:33:57.000000000 +0100
@@ -77,4 +77,13 @@
assert @db.get_attributes("test", "item1").size == 2
end
+ def test_delete_all_attributes_of_an_item_if_attribute_name_is_not_given
+ @db.create_domain("test")
+
+ attrs = [AttributeParam.new("a1", "v1"), AttributeParam.new("a1", "v2"), AttributeParam.new("a2", "v1")]
+ @db.put_attributes("test", "item1", attrs)
+ @db.delete_attributes("test", "item1")
+ assert @db.get_attributes("test", "item1").size == 0
+ end
+
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment