Created
October 27, 2008 16:58
-
-
Save makoto/20134 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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