From 4b1768498086cf888cc0116c0ecb2aba638426ff Mon Sep 17 00:00:00 2001 From: Massimo Date: Thu, 21 Mar 2013 11:29:31 -0500 Subject: [PATCH] fixed issue 1397, fixed CHAR_LENGTH in Firebird thanks Villas --- VERSION | 2 +- gluon/dal.py | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/VERSION b/VERSION index e0c78d1c..b1b82412 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -Version 2.4.5-stable+timestamp.2013.03.21.11.20.48 +Version 2.4.5-stable+timestamp.2013.03.21.11.29.00 diff --git a/gluon/dal.py b/gluon/dal.py index c284b055..2b3716b0 100644 --- a/gluon/dal.py +++ b/gluon/dal.py @@ -1126,6 +1126,9 @@ class BaseAdapter(ConnectionPool): def EPOCH(self, first): return self.EXTRACT(first, 'epoch') + def LENGTH(self, first): + return "LENGTH(%s)" % self.expand(first) + def AGGREGATE(self, first, what): return "%s(%s)" % (what, self.expand(first)) @@ -3448,6 +3451,9 @@ class FireBirdAdapter(BaseAdapter): def SUBSTRING(self,field,parameters): return 'SUBSTRING(%s from %s for %s)' % (self.expand(field), parameters[0], parameters[1]) + def LENGTH(self, first): + return "CHAR_LENGTH(%s)" % self.expand(first) + def CONTAINING(self,first,second): "case in-sensitive like operator" return '(%s CONTAINING %s)' % (self.expand(first), @@ -4422,6 +4428,7 @@ class NoSQLAdapter(BaseAdapter): def LOWER(self,first): raise SyntaxError("Not supported") def UPPER(self,first): raise SyntaxError("Not supported") def EXTRACT(self,first,what): raise SyntaxError("Not supported") + def LENGTH(self, first): raise SyntaxError("Not supported") def AGGREGATE(self,first,what): raise SyntaxError("Not supported") def LEFT_JOIN(self): raise SyntaxError("Not supported") def RANDOM(self): raise SyntaxError("Not supported") @@ -8746,7 +8753,7 @@ class Expression(object): def len(self): db = self.db - return Expression(db, db._adapter.AGGREGATE, self, 'LENGTH', 'integer') + return Expression(db, db._adapter.LENGTH, self, None, 'integer') def avg(self): db = self.db