source: OpenRLabs-Git/deploy/rlabs-docker/web2py-rlabs/gluon/packages/dal/pydal/dialects/teradata.py

main
Last change on this file was 42bd667, checked in by David Fuertes <dfuertes@…>, 4 years ago

Historial Limpio

  • Property mode set to 100755
File size: 3.1 KB
Line 
1from .._compat import basestring
2from ..adapters.teradata import Teradata
3from .base import SQLDialect
4from . import dialects, sqltype_for
5
6
7@dialects.register_for(Teradata)
8class TeradataDialect(SQLDialect):
9    @sqltype_for("integer")
10    def type_integer(self):
11        return "INT"
12
13    @sqltype_for("text")
14    def type_text(self):
15        return "VARCHAR(2000)"
16
17    @sqltype_for("json")
18    def type_json(self):
19        return "VARCHAR(4000)"
20
21    @sqltype_for("float")
22    def type_float(self):
23        return "REAL"
24
25    @sqltype_for("list:integer")
26    def type_list_integer(self):
27        return self.types["json"]
28
29    @sqltype_for("list:string")
30    def type_list_string(self):
31        return self.types["json"]
32
33    @sqltype_for("list:reference")
34    def type_list_reference(self):
35        return self.types["json"]
36
37    @sqltype_for("bigint")
38    def type_bigint(self):
39        return "BIGINT"
40
41    @sqltype_for("id")
42    def type_id(self):
43        return "INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY NOT NULL"
44
45    @sqltype_for("big-id")
46    def type_big_id(self):
47        return "BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY NOT NULL"
48
49    @sqltype_for("reference")
50    def type_reference(self):
51        return "INT"
52
53    @sqltype_for("big-reference")
54    def type_big_reference(self):
55        return "BIGINT"
56
57    @sqltype_for("geometry")
58    def type_geometry(self):
59        return "ST_GEOMETRY"
60
61    @sqltype_for("reference FK")
62    def type_reference_fk(self):
63        return " REFERENCES %(foreign_key)s "
64
65    @sqltype_for("reference TFK")
66    def type_reference_tfk(self):
67        return (
68            " FOREIGN KEY (%(field_name)s) REFERENCES %(foreign_table)s"
69            + " (%(foreign_key)s)"
70        )
71
72    def left_join(self, val, query_env={}):
73        # Left join must always have an ON clause
74        if not isinstance(val, basestring):
75            val = self.expand(val, query_env=query_env)
76        return "LEFT OUTER JOIN %s" % val
77
78    def select(
79        self,
80        fields,
81        tables,
82        where=None,
83        groupby=None,
84        having=None,
85        orderby=None,
86        limitby=None,
87        distinct=False,
88        for_update=False,
89    ):
90        dst, whr, grp, order, limit, offset, upd = "", "", "", "", "", "", ""
91        if distinct is True:
92            dst = " DISTINCT"
93        elif distinct:
94            dst = " DISTINCT ON (%s)" % distinct
95        if where:
96            whr = " %s" % self.where(where)
97        if groupby:
98            grp = " GROUP BY %s" % groupby
99            if having:
100                grp += " HAVING %s" % having
101        if orderby:
102            order = " ORDER BY %s" % orderby
103        if limitby:
104            (lmin, lmax) = limitby
105            limit = " TOP %i" % lmax
106        if for_update:
107            upd = " FOR UPDATE"
108        return "SELECT%s%s %s FROM %s%s%s%s%s%s;" % (
109            dst,
110            limit,
111            fields,
112            tables,
113            whr,
114            grp,
115            order,
116            offset,
117            upd,
118        )
119
120    def truncate(self, table, mode=""):
121        return ["DELETE FROM %s ALL;" % table._rname]
Note: See TracBrowser for help on using the repository browser.