Browse Source

[notebook] Friendler error message when not jdbc session and using the autocomplete

Romain Rigaux 10 years ago
parent
commit
45210f9

+ 3 - 1
desktop/core/src/desktop/static/desktop/js/assistHelper.js

@@ -73,7 +73,9 @@ AssistHelper.prototype.load = function (snippet, callback) {
       callback();
     }
   }, function(message) {
-    if (message.statusText) {
+   if (message.status == 403) {
+      $(document).trigger("error", "Please login in the JDBC connection");
+    } else if (message.statusText) {
       $(document).trigger("error", "There was a problem loading the databases:" + message.statusText);
     } else if (message) {
       $(document).trigger("error", message);

+ 3 - 4
desktop/libs/librdbms/src/librdbms/jdbc.py

@@ -18,8 +18,6 @@
 import logging
 import sys
 
-from desktop.lib.i18n import smart_unicode
-
 
 LOG = logging.getLogger(__name__)
 
@@ -99,7 +97,7 @@ class Cursor():
   def fetchmany(self, n=None):
     res = []
 
-    while self.rs.next() and (n is not None and n > 0):
+    while self.rs.next() and (n is None or n > 0):
       row = []
       for c in xrange(self._meta.getColumnCount()):
         cell = self.rs.getObject(c + 1)
@@ -109,7 +107,8 @@ class Cursor():
         row.append(cell)
 
       res.append(row)
-      n -= 1
+      if n is not None:
+        n -= 1
 
     return res
 

+ 1 - 0
desktop/libs/notebook/src/notebook/api.py

@@ -279,6 +279,7 @@ def close_statement(request):
 
 @require_POST
 @check_document_access_permission()
+@api_error_handler
 def autocomplete(request, database=None, table=None, column=None, nested=None):
   response = {'status': -1}
 

+ 4 - 1
desktop/libs/notebook/src/notebook/connectors/jdbc.py

@@ -86,7 +86,7 @@ class JdbcApi(Api):
     if self.db is None:
       raise AuthenticationRequired()
 
-    data, description = query_and_fetch(self.db, snippet['statement'], 100)
+    data, description = query_and_fetch(self.db, snippet['statement'], 1000)
     has_result_set = data is not None
 
     return {
@@ -131,6 +131,9 @@ class JdbcApi(Api):
 
   @query_error_handler
   def autocomplete(self, snippet, database=None, table=None, column=None, nested=None):
+    if self.db is None:
+      raise AuthenticationRequired()
+        
     assist = Assist(self.db)
     response = {'error': 0}