Repository: kayak/pypika (python)

Issue:
Add ability to use DB specific objects and reserved words
Add the ability to use objects such ROWNUM, SYSDATE and other reserved words. As of now all fields are enclosed by quotes not being able to execute queries.

Pull request description:
Fixes #130 Added Pseudocolumns and SysDate

Patch:
diff --git a/pypika/pseudocolumns.py b/pypika/pseudocolumns.py
new file mode 100644
index 0000000..a762e5c
--- /dev/null
+++ b/pypika/pseudocolumns.py
@@ -0,0 +1,8 @@
+from .terms import Psuedocolumn
+
+ColumnValue = Psuedocolumn('COLUMN_VALUE')
+ObjectID = Psuedocolumn('OBJECT_ID')
+ObjectValue = Psuedocolumn('OBJECT_VALUE')
+RowNum = Psuedocolumn('ROWNUM')
+RowID = Psuedocolumn('ROWID')
+SysDate = Psuedocolumn('SYSDATE')
diff --git a/pypika/terms.py b/pypika/terms.py
index d97651d..a9b08dd 100644
--- a/pypika/terms.py
+++ b/pypika/terms.py
@@ -959,3 +959,15 @@ class Mod(Function):
 class Rollup(Function):
     def __init__(self, *terms):
         super(Rollup, self).__init__('ROLLUP', *terms)
+
+
+class Psuedocolumn(Term):
+    """
+    Represents a pseudocolumn
+    """
+
+    def __init__(self, name):
+        self.name = name
+
+    def to_sql(self, **kwargs):
+        return self.name
\ No newline at end of file


Test patch:
diff --git a/pypika/tests/test_psuedocolumns.py b/pypika/tests/test_psuedocolumns.py
new file mode 100644
index 0000000..0e9e092
--- /dev/null
+++ b/pypika/tests/test_psuedocolumns.py
@@ -0,0 +1,30 @@
+import unittest
+
+from pypika.pseudocolumns import (
+    ColumnValue,
+    ObjectID,
+    ObjectValue,
+    RowID,
+    RowNum,
+    SysDate,
+)
+
+
+class PseudocolumnsTest(unittest.TestCase):
+    def test_column_value(self):
+        self.assertEqual('COLUMN_VALUE', ColumnValue)
+
+    def test_object_id(self):
+        self.assertEqual('OBJECT_ID', ObjectID)
+
+    def test_object_value(self):
+        self.assertEqual('OBJECT_VALUE', ObjectValue)
+
+    def test_row_id(self):
+        self.assertEqual('ROWID', RowID)
+
+    def test_row_num(self):
+        self.assertEqual('ROWNUM', RowNum)
+
+    def test_sys_date(self):
+        self.assertEqual('SYSDATE', SysDate)