source: OpenRLabs-Git/deploy/rlabs-docker/web2py-rlabs/gluon/packages/dal/pydal/dialects/db2.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.0 KB
Line 
1from .._compat import basestring
2from ..adapters.db2 import DB2
3from .base import SQLDialect
4from . import dialects, sqltype_for
5
6
7@dialects.register_for(DB2)
8class DB2Dialect(SQLDialect):
9    @sqltype_for("text")
10    def type_text(self):
11        return "CLOB"
12
13    @sqltype_for("integer")
14    def type_integer(self):
15        return "INT"
16
17    @sqltype_for("bigint")
18    def type_bigint(self):
19        return "BIGINT"
20
21    @sqltype_for("float")
22    def type_float(self):
23        return "REAL"
24
25    @sqltype_for("id")
26    def type_id(self):
27        return "INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY NOT NULL"
28
29    @sqltype_for("big-id")
30    def type_big_id(self):
31        return "BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY NOT NULL"
32
33    @sqltype_for("reference")
34    def type_reference(self):
35        return (
36            "INT, FOREIGN KEY (%(field_name)s) REFERENCES "
37            + "%(foreign_key)s ON DELETE %(on_delete_action)s"
38        )
39
40    @sqltype_for("big-reference")
41    def type_big_reference(self):
42        return (
43            "BIGINT, FOREIGN KEY (%(field_name)s) REFERENCES "
44            + "%(foreign_key)s ON DELETE %(on_delete_action)s"
45        )
46
47    @sqltype_for("reference FK")
48    def type_reference_fk(self):
49        return (
50            ", CONSTRAINT FK_%(constraint_name)s FOREIGN KEY "
51            + "(%(field_name)s) REFERENCES %(foreign_key)s "
52            + "ON DELETE %(on_delete_action)s"
53        )
54
55    @sqltype_for("reference TFK")
56    def type_reference_tfk(self):
57        return (
58            " CONSTRAINT FK_%(constraint_name)s_PK FOREIGN KEY "
59            + "(%(field_name)s) REFERENCES %(foreign_table)s"
60            + "(%(foreign_key)s) ON DELETE %(on_delete_action)s"
61        )
62
63    def left_join(self, val, query_env={}):
64        # Left join must always have an ON clause
65        if not isinstance(val, basestring):
66            val = self.expand(val, query_env=query_env)
67        return "LEFT OUTER JOIN %s" % val
68
69    @property
70    def random(self):
71        return "RAND()"
72
73    def select(
74        self,
75        fields,
76        tables,
77        where=None,
78        groupby=None,
79        having=None,
80        orderby=None,
81        limitby=None,
82        distinct=False,
83        for_update=False,
84    ):
85        dst, whr, grp, order, limit, offset, upd = "", "", "", "", "", "", ""
86        if distinct is True:
87            dst = " DISTINCT"
88        elif distinct:
89            dst = " DISTINCT ON (%s)" % distinct
90        if where:
91            whr = " %s" % self.where(where)
92        if groupby:
93            grp = " GROUP BY %s" % groupby
94            if having:
95                grp += " HAVING %s" % having
96        if orderby:
97            order = " ORDER BY %s" % orderby
98        if limitby:
99            (lmin, lmax) = limitby
100            limit = " FETCH FIRST %i ROWS ONLY" % lmax
101        if for_update:
102            upd = " FOR UPDATE"
103        return "SELECT%s %s FROM %s%s%s%s%s%s%s;" % (
104            dst,
105            fields,
106            tables,
107            whr,
108            grp,
109            order,
110            limit,
111            offset,
112            upd,
113        )
Note: See TracBrowser for help on using the repository browser.