Author: Brian Kearns <bdkea...@gmail.com>
Branch: 
Changeset: r62272:3dbab3e443a7
Date: 2013-03-09 15:03 -0500
http://bitbucket.org/pypy/pypy/changeset/3dbab3e443a7/

Log:    reorder these functions

diff --git a/lib_pypy/_sqlite3.py b/lib_pypy/_sqlite3.py
--- a/lib_pypy/_sqlite3.py
+++ b/lib_pypy/_sqlite3.py
@@ -1077,37 +1077,6 @@
             self._in_use = False
         self._exhausted = False
 
-    def _build_row_cast_map(self):
-        if not self.__con._detect_types:
-            return
-        self.__row_cast_map = []
-        for i in xrange(_lib.sqlite3_column_count(self._statement)):
-            converter = None
-
-            if self.__con._detect_types & PARSE_COLNAMES:
-                colname = _lib.sqlite3_column_name(self._statement, i)
-                if colname is not None:
-                    colname = colname.decode('utf-8')
-                    type_start = -1
-                    key = None
-                    for pos in range(len(colname)):
-                        if colname[pos] == '[':
-                            type_start = pos + 1
-                        elif colname[pos] == ']' and type_start != -1:
-                            key = colname[type_start:pos]
-                            converter = converters[key.upper()]
-
-            if converter is None and self.__con._detect_types & 
PARSE_DECLTYPES:
-                decltype = _lib.sqlite3_column_decltype(self._statement, i)
-                if decltype is not None:
-                    decltype = decltype.decode('utf-8')
-                    decltype = decltype.split()[0]      # if multiple words, 
use first, eg. "INTEGER NOT NULL" => "INTEGER"
-                    if '(' in decltype:
-                        decltype = decltype[:decltype.index('(')]
-                    converter = converters.get(decltype.upper(), None)
-
-            self.__row_cast_map.append(converter)
-
     if sys.version_info[0] < 3:
         def __check_decodable(self, param):
             if self.__con.text_factory in (unicode, OptimizedUnicode,
@@ -1192,22 +1161,36 @@
         else:
             raise ValueError("parameters are of unsupported type")
 
-    def _next(self, cursor):
-        if self._exhausted:
-            raise StopIteration
-        item = self._item
+    def _build_row_cast_map(self):
+        if not self.__con._detect_types:
+            return
+        self.__row_cast_map = []
+        for i in xrange(_lib.sqlite3_column_count(self._statement)):
+            converter = None
 
-        ret = _lib.sqlite3_step(self._statement)
-        if ret == _lib.SQLITE_DONE:
-            self._exhausted = True
-            self._item = None
-        elif ret != _lib.SQLITE_ROW:
-            exc = self.__con._get_exception(ret)
-            _lib.sqlite3_reset(self._statement)
-            raise exc
+            if self.__con._detect_types & PARSE_COLNAMES:
+                colname = _lib.sqlite3_column_name(self._statement, i)
+                if colname is not None:
+                    colname = colname.decode('utf-8')
+                    type_start = -1
+                    key = None
+                    for pos in range(len(colname)):
+                        if colname[pos] == '[':
+                            type_start = pos + 1
+                        elif colname[pos] == ']' and type_start != -1:
+                            key = colname[type_start:pos]
+                            converter = converters[key.upper()]
 
-        self._readahead(cursor)
-        return item
+            if converter is None and self.__con._detect_types & 
PARSE_DECLTYPES:
+                decltype = _lib.sqlite3_column_decltype(self._statement, i)
+                if decltype is not None:
+                    decltype = decltype.decode('utf-8')
+                    decltype = decltype.split()[0]      # if multiple words, 
use first, eg. "INTEGER NOT NULL" => "INTEGER"
+                    if '(' in decltype:
+                        decltype = decltype[:decltype.index('(')]
+                    converter = converters.get(decltype.upper(), None)
+
+            self.__row_cast_map.append(converter)
 
     def _readahead(self, cursor):
         self.column_count = _lib.sqlite3_column_count(self._statement)
@@ -1218,7 +1201,15 @@
             else:
                 converter = None
 
-            if converter is None:
+            if converter is not None:
+                blob = _lib.sqlite3_column_blob(self._statement, i)
+                if not blob:
+                    val = None
+                else:
+                    blob_len = _lib.sqlite3_column_bytes(self._statement, i)
+                    val = bytes(string_at(blob, blob_len))
+                    val = converter(val)
+            else:
                 typ = _lib.sqlite3_column_type(self._statement, i)
                 if typ == _lib.SQLITE_NULL:
                     val = None
@@ -1236,14 +1227,6 @@
                     blob = _lib.sqlite3_column_blob(self._statement, i)
                     blob_len = _lib.sqlite3_column_bytes(self._statement, i)
                     val = _BLOB_TYPE(string_at(blob, blob_len))
-            else:
-                blob = _lib.sqlite3_column_blob(self._statement, i)
-                if not blob:
-                    val = None
-                else:
-                    blob_len = _lib.sqlite3_column_bytes(self._statement, i)
-                    val = bytes(string_at(blob, blob_len))
-                    val = converter(val)
             row.append(val)
 
         row = tuple(row)
@@ -1251,6 +1234,23 @@
             row = self._row_factory(cursor, row)
         self._item = row
 
+    def _next(self, cursor):
+        if self._exhausted:
+            raise StopIteration
+        item = self._item
+
+        ret = _lib.sqlite3_step(self._statement)
+        if ret == _lib.SQLITE_DONE:
+            self._exhausted = True
+            self._item = None
+        elif ret != _lib.SQLITE_ROW:
+            exc = self.__con._get_exception(ret)
+            _lib.sqlite3_reset(self._statement)
+            raise exc
+
+        self._readahead(cursor)
+        return item
+
     def _get_description(self):
         if self._kind == Statement._DML:
             return None
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
http://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to