[CalendarServer-changes] [15335] twext/trunk/twext/enterprise/dal
source_changes at macosforge.org
source_changes at macosforge.org
Wed Nov 18 18:32:37 PST 2015
Revision: 15335
http://trac.calendarserver.org//changeset/15335
Author: cdaboo at apple.com
Date: 2015-11-18 18:32:37 -0800 (Wed, 18 Nov 2015)
Log Message:
-----------
Parse Oracle schema with / characters between functions.
Modified Paths:
--------------
twext/trunk/twext/enterprise/dal/parseschema.py
twext/trunk/twext/enterprise/dal/test/test_parseschema.py
Modified: twext/trunk/twext/enterprise/dal/parseschema.py
===================================================================
--- twext/trunk/twext/enterprise/dal/parseschema.py 2015-11-19 00:29:04 UTC (rev 15334)
+++ twext/trunk/twext/enterprise/dal/parseschema.py 2015-11-19 02:32:37 UTC (rev 15335)
@@ -134,6 +134,9 @@
@return: the C{schema} argument
"""
+
+ # Filter out lines with just a / in them
+ schemaData = "\n".join(filter(lambda x: not x == "/", schemaData.splitlines()))
parsed = parse(schemaData)
for stmt in parsed:
@@ -253,7 +256,7 @@
if createType == u"FUNCTION":
parseFunction(schema, stmt)
- else:
+ elif stmt.get_type() != "UNKNOWN":
print("unknown type:", stmt.get_type())
return schema
Modified: twext/trunk/twext/enterprise/dal/test/test_parseschema.py
===================================================================
--- twext/trunk/twext/enterprise/dal/test/test_parseschema.py 2015-11-19 00:29:04 UTC (rev 15334)
+++ twext/trunk/twext/enterprise/dal/test/test_parseschema.py 2015-11-19 02:32:37 UTC (rev 15335)
@@ -467,6 +467,34 @@
self.assertRaises(KeyError, s.functionNamed, "merge")
+ def test_oracle_functions(self):
+ """
+ A 'create (or replace) function' statement will add an L{Function} object to a L{Schema}'s
+ C{functions} list.
+ """
+ s = self.schemaFromString(
+ """
+CREATE OR REPLACE FUNCTION function1(now timestamp)
+ RETURN INTEGER is
+ result INTEGER;
+BEGIN
+ RETURN result;
+END;
+/
+
+CREATE OR REPLACE FUNCTION function2(now timestamp)
+ RETURN INTEGER is
+ result INTEGER;
+BEGIN
+ RETURN result;
+END;
+/
+ """
+ )
+ self.assertTrue(s.functionNamed("function1") is not None)
+ self.assertTrue(s.functionNamed("function2") is not None)
+
+
def test_insert(self):
"""
An 'insert' statement will add an L{schemaRows} to an L{Table}.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20151118/641f16b7/attachment-0001.html>
More information about the calendarserver-changes
mailing list