# HG changeset patch
# User Goffi <goffi@goffi.org>
# Date 1490808472 -7200
# Node ID ea41cf1e6d29b84169976010cfe059a11e68f81b
# Parent  c316c6f6a73795df6af52ede069e85352c71fc42
memory (persistent, sqlite): fixed getPrivates bug with keys arguments and its use in LazyPersistentBinaryDict

diff -r c316c6f6a737 -r ea41cf1e6d29 src/memory/persistent.py
--- a/src/memory/persistent.py	Sun Mar 26 21:23:03 2017 +0200
+++ b/src/memory/persistent.py	Wed Mar 29 19:27:52 2017 +0200
@@ -201,7 +201,9 @@
 
     def __getitem__(self, key):
         """get the value as a Deferred"""
-        return self.storage.getPrivates(self.namespace, keys=[key], binary=self.binary, profile=self.profile)
+        d = self.storage.getPrivates(self.namespace, keys=[key], binary=self.binary, profile=self.profile)
+        d.addCallback(lambda data: data[key])
+        return d
 
     def __setitem__(self, key, value):
         self.storage.setPrivateValue(self.namespace, key, value, self.binary, self.profile)
diff -r c316c6f6a737 -r ea41cf1e6d29 src/memory/sqlite.py
--- a/src/memory/sqlite.py	Sun Mar 26 21:23:03 2017 +0200
+++ b/src/memory/sqlite.py	Wed Mar 29 19:27:52 2017 +0200
@@ -571,8 +571,9 @@
         args = [namespace]
 
         if keys is not None:
-            query_parts.append(u'AND key IN ?')
-            args.append(keys)
+            placeholders = u','.join(len(keys) * u'?')
+            query_parts.append(u'AND key IN (' + placeholders + u')')
+            args.extend(keys)
 
         if profile is not None:
             query_parts.append(u'AND profile_id=?')