Statistics
| Revision:

gvsig-projects-pool / org.gvsig.vcsgis / trunk / org.gvsig.vcsgis / org.gvsig.vcsgis.lib / org.gvsig.vcsgis.lib.impl / src / main / resources / org / gvsig / vcsgis / lib / Oracle.sql @ 6232

History | View | Annotate | Download (11.8 KB)

1
@begin createRepositoryIndex1
2
create index idx_data_1 on VCSGISREPO_DATA (COD_ENTITY ASC, DAT_REVNUMBER ASC)
3
@end createRepositoryIndex1
4

    
5
@begin createRepositoryIndex2
6
create index idx_data_2 on VCSGISREPO_DATA (DAT_FEATURERELATEDCODE ASC, DAT_REVNUMBER ASC, DAT_OPERATION ASC)
7
@end createRepositoryIndex2
8

    
9
@begin getDataOfEntityFromRevisionNumber
10
select * from "VCSGISREPO_DATA" where
11
        "VCSGISREPO_DATA"."COD_ENTITY" = '%2$s' AND
12
        "VCSGISREPO_DATA"."COD_DATA" in (
13
        select 
14
          MIN("VCSGISREPO_DATA1"."COD_DATA")
15
        from "VCSGISREPO_DATA" "VCSGISREPO_DATA1"
16
          left join "VCSGISREPO_DATA" "VCSGISREPO_DATA2" on
17
            "VCSGISREPO_DATA1"."DAT_FEATURERELATEDCODE" = "VCSGISREPO_DATA2"."DAT_FEATURERELATEDCODE"
18
            and "VCSGISREPO_DATA2"."DAT_REVNUMBER" > %1$d 
19
        where 
20
          "VCSGISREPO_DATA1"."COD_ENTITY" = '%2$s'
21
          and "VCSGISREPO_DATA1"."DAT_REVNUMBER" > %1$d   
22
        group by "VCSGISREPO_DATA1"."DAT_FEATURERELATEDCODE", "VCSGISREPO_DATA1"."DAT_REVNUMBER", "VCSGISREPO_DATA1"."DAT_OPERATION"
23
        having not (
24
          ("VCSGISREPO_DATA1"."DAT_OPERATION" = 0 and MAX("VCSGISREPO_DATA2"."DAT_OPERATION") = 2 )
25
          or  ("VCSGISREPO_DATA1"."DAT_OPERATION" = 1 and MIN("VCSGISREPO_DATA2"."DAT_OPERATION") = 0 )
26
          or  ("VCSGISREPO_DATA1"."DAT_OPERATION" = 2 and (MIN("VCSGISREPO_DATA2"."DAT_OPERATION") = 0  or max("VCSGISREPO_DATA2"."DAT_OPERATION") = 1 or min("VCSGISREPO_DATA2"."DAT_OPERATION") = 1 ))
27
          or  ("VCSGISREPO_DATA1"."DAT_OPERATION" = 0 and MIN("VCSGISREPO_DATA2"."DAT_OPERATION") <> 0  and "VCSGISREPO_DATA1"."DAT_REVNUMBER" < max("VCSGISREPO_DATA2"."DAT_REVNUMBER"))
28
          or  ("VCSGISREPO_DATA1"."DAT_OPERATION" = 1 and (max("VCSGISREPO_DATA2"."DAT_OPERATION") = 1 or min("VCSGISREPO_DATA2"."DAT_OPERATION") = 1) and "VCSGISREPO_DATA1"."DAT_REVNUMBER" < max("VCSGISREPO_DATA2"."DAT_REVNUMBER"))
29
          or  ("VCSGISREPO_DATA1"."DAT_OPERATION" = 2 and max("VCSGISREPO_DATA2"."DAT_OPERATION") = 2 and "VCSGISREPO_DATA1"."DAT_REVNUMBER" < max("VCSGISREPO_DATA2"."DAT_REVNUMBER"))  )
30
)
31
order by "VCSGISREPO_DATA"."DAT_OPERATION" desc
32
@end getDataOfEntityFromRevisionNumber
33

    
34
@begin getDataOfEntityToRevisionNumber
35
select * from "VCSGISREPO_DATA" where 
36
        "VCSGISREPO_DATA"."COD_ENTITY" = '%2$s' AND
37
        "VCSGISREPO_DATA"."COD_DATA" in (
38
        select 
39
          MIN("VCSGISREPO_DATA1"."COD_DATA")
40
        from "VCSGISREPO_DATA" "VCSGISREPO_DATA1"
41
          left join "VCSGISREPO_DATA" "VCSGISREPO_DATA2" on
42
            "VCSGISREPO_DATA1"."DAT_FEATURERELATEDCODE" = "VCSGISREPO_DATA2"."DAT_FEATURERELATEDCODE"
43
            and "VCSGISREPO_DATA2"."DAT_REVNUMBER" <= %1$d 
44
        where 
45
          "VCSGISREPO_DATA1"."COD_ENTITY" = '%2$s'
46
          and "VCSGISREPO_DATA1"."DAT_REVNUMBER" <= %1$d   
47
        group by "VCSGISREPO_DATA1"."DAT_FEATURERELATEDCODE", "VCSGISREPO_DATA1"."DAT_REVNUMBER", "VCSGISREPO_DATA1"."DAT_OPERATION"
48
        having not (
49
          ("VCSGISREPO_DATA1"."DAT_OPERATION" = 0 and MAX("VCSGISREPO_DATA2"."DAT_OPERATION") = 2 )
50
          or  ("VCSGISREPO_DATA1"."DAT_OPERATION" = 1 and MIN("VCSGISREPO_DATA2"."DAT_OPERATION") = 0 )
51
          or  ("VCSGISREPO_DATA1"."DAT_OPERATION" = 2 and (MIN("VCSGISREPO_DATA2"."DAT_OPERATION") = 0  or max("VCSGISREPO_DATA2"."DAT_OPERATION") = 1 or min("VCSGISREPO_DATA2"."DAT_OPERATION") = 1 ))
52
          or  ("VCSGISREPO_DATA1"."DAT_OPERATION" = 0 and MIN("VCSGISREPO_DATA2"."DAT_OPERATION") <> 0  and "VCSGISREPO_DATA1"."DAT_REVNUMBER" < max("VCSGISREPO_DATA2"."DAT_REVNUMBER"))
53
          or  ("VCSGISREPO_DATA1"."DAT_OPERATION" = 1 and (max("VCSGISREPO_DATA2"."DAT_OPERATION") = 1 or min("VCSGISREPO_DATA2"."DAT_OPERATION") = 1) and "VCSGISREPO_DATA1"."DAT_REVNUMBER" < max("VCSGISREPO_DATA2"."DAT_REVNUMBER"))
54
          or  ("VCSGISREPO_DATA1"."DAT_OPERATION" = 2 and max("VCSGISREPO_DATA2"."DAT_OPERATION") = 2 and "VCSGISREPO_DATA1"."DAT_REVNUMBER" < max("VCSGISREPO_DATA2"."DAT_REVNUMBER"))  )
55
)
56
order by "VCSGISREPO_DATA"."DAT_OPERATION" desc
57
@end getDataOfEntityToRevisionNumber
58

    
59
@begin getDataOfEntityFromEfectiveDate
60
select * from "VCSGISREPO_DATA" where 
61
        "VCSGISREPO_DATA"."COD_ENTITY" = '%1$s' AND
62
        "VCSGISREPO_DATA"."COD_DATA" in (
63
        select 
64
          MIN("VCSGISREPO_DATA1"."COD_DATA")
65
        from "VCSGISREPO_DATA" "VCSGISREPO_DATA1"
66
          left join "VCSGISREPO_DATA" "VCSGISREPO_DATA2" on
67
            "VCSGISREPO_DATA1"."DAT_FEATURERELATEDCODE" = "VCSGISREPO_DATA2"."DAT_FEATURERELATEDCODE"
68
            and "VCSGISREPO_DATA2"."DAT_EFECTIVEDATE" <= to_date('%2$s', 'YYYY-MM-DD HH24:MI:SS') 
69
        where 
70
          "VCSGISREPO_DATA1"."COD_ENTITY" = '%1$s'
71
          and "VCSGISREPO_DATA1"."DAT_EFECTIVEDATE" <= to_date('%2$s', 'YYYY-MM-DD HH24:MI:SS')   
72
        group by "VCSGISREPO_DATA1"."DAT_FEATURERELATEDCODE", "VCSGISREPO_DATA1"."DAT_EFECTIVEDATE", "VCSGISREPO_DATA1"."DAT_REVNUMBER", "VCSGISREPO_DATA1"."DAT_OPERATION"
73
        having not (
74
          ("VCSGISREPO_DATA1"."DAT_OPERATION" = 0 )
75
          or  ("VCSGISREPO_DATA1"."DAT_OPERATION" = 1 and MIN("VCSGISREPO_DATA2"."DAT_OPERATION") = 0 )
76
          or  ("VCSGISREPO_DATA1"."DAT_OPERATION" = 2 and (MIN("VCSGISREPO_DATA2"."DAT_OPERATION") = 0  or max("VCSGISREPO_DATA2"."DAT_OPERATION") = 1 or min("VCSGISREPO_DATA2"."DAT_OPERATION") = 1 ))
77
          or  ("VCSGISREPO_DATA1"."DAT_OPERATION" = 1 and (max("VCSGISREPO_DATA2"."DAT_OPERATION") = 1 or min("VCSGISREPO_DATA2"."DAT_OPERATION") = 1) and "VCSGISREPO_DATA1"."DAT_EFECTIVEDATE" <= max("VCSGISREPO_DATA2"."DAT_EFECTIVEDATE") and "VCSGISREPO_DATA1"."DAT_REVNUMBER" <> max("VCSGISREPO_DATA2"."DAT_REVNUMBER"))
78
          or  ("VCSGISREPO_DATA1"."DAT_OPERATION" = 2 and max("VCSGISREPO_DATA2"."DAT_OPERATION") = 2 and "VCSGISREPO_DATA1"."DAT_EFECTIVEDATE" <= max("VCSGISREPO_DATA2"."DAT_EFECTIVEDATE") and "VCSGISREPO_DATA1"."DAT_REVNUMBER" <> max("VCSGISREPO_DATA2"."DAT_REVNUMBER"))  )
79
)
80

    
81
@end getDataOfEntityFromEfectiveDate
82

    
83
@begin getDataOfEntityFromEfectiveDateAndRoi
84
select * from "VCSGISREPO_DATA" where 
85
        "VCSGISREPO_DATA"."COD_ENTITY" = '%1$s' AND
86
        "VCSGISREPO_DATA"."COD_DATA" in (
87
        select 
88
          MIN("VCSGISREPO_DATA1"."COD_DATA")
89
        from "VCSGISREPO_DATA" "VCSGISREPO_DATA1"
90
          left join "VCSGISREPO_DATA" "VCSGISREPO_DATA2" on
91
            "VCSGISREPO_DATA1"."DAT_FEATURERELATEDCODE" = "VCSGISREPO_DATA2"."DAT_FEATURERELATEDCODE"
92
            and "VCSGISREPO_DATA2"."DAT_EFECTIVEDATE" <= to_date('%2$s', 'YYYY-MM-DD HH24:MI:SS') 
93
        where 
94
          "VCSGISREPO_DATA1"."COD_ENTITY" = '%1$s'
95
          and "VCSGISREPO_DATA1"."DAT_EFECTIVEDATE" <= to_date('%2$s', 'YYYY-MM-DD HH24:MI:SS')   
96
          and ("VCSGISREPO_DATA1"."DAT_GEOM" is null or (ST_Intersects("VCSGISREPO_DATA1"."DAT_GEOM",SDO_GEOMETRY(HEXTORAW('%3$s'), %4$s) )) )
97
        group by "VCSGISREPO_DATA1"."DAT_FEATURERELATEDCODE", "VCSGISREPO_DATA1"."DAT_EFECTIVEDATE", "VCSGISREPO_DATA1"."DAT_REVNUMBER", "VCSGISREPO_DATA1"."DAT_OPERATION"
98
        having not (
99
          ("VCSGISREPO_DATA1"."DAT_OPERATION" = 0 )
100
          or  ("VCSGISREPO_DATA1"."DAT_OPERATION" = 1 and MIN("VCSGISREPO_DATA2"."DAT_OPERATION") = 0 )
101
          or  ("VCSGISREPO_DATA1"."DAT_OPERATION" = 2 and (MIN("VCSGISREPO_DATA2"."DAT_OPERATION") = 0  or max("VCSGISREPO_DATA2"."DAT_OPERATION") = 1 or min("VCSGISREPO_DATA2"."DAT_OPERATION") = 1 ))
102
          or  ("VCSGISREPO_DATA1"."DAT_OPERATION" = 1 and (max("VCSGISREPO_DATA2"."DAT_OPERATION") = 1 or min("VCSGISREPO_DATA2"."DAT_OPERATION") = 1) and "VCSGISREPO_DATA1"."DAT_EFECTIVEDATE" <= max("VCSGISREPO_DATA2"."DAT_EFECTIVEDATE") and "VCSGISREPO_DATA1"."DAT_REVNUMBER" <> max("VCSGISREPO_DATA2"."DAT_REVNUMBER"))
103
          or  ("VCSGISREPO_DATA1"."DAT_OPERATION" = 2 and max("VCSGISREPO_DATA2"."DAT_OPERATION") = 2 and "VCSGISREPO_DATA1"."DAT_EFECTIVEDATE" <= max("VCSGISREPO_DATA2"."DAT_EFECTIVEDATE") and "VCSGISREPO_DATA1"."DAT_REVNUMBER" <> max("VCSGISREPO_DATA2"."DAT_REVNUMBER"))  )
104
)
105
@end getDataOfEntityFromEfectiveDateAndRoi
106

    
107

    
108
@begin dateFormat
109
yyyy-MM-dd HH:mm:ss
110
@end dateFormat
111

    
112
@begin createWorkspaceIndex1
113
create index idx_wschanges_1 on VCSGIS_WSCHANGES (COD_ENTITY ASC, WSCH_OPERATION DESC, COD_WSCHANGE ASC)
114
@end createWorkspaceIndex1
115

    
116
@begin createWorkspaceIndex2
117
create index idx_wschanges_2 on VCSGIS_WSCHANGES (WSCH_SELECTED ASC, WSCH_OPERATION ASC)
118
@end createWorkspaceIndex2
119

    
120
@begin createWorkspaceIndex3
121
create index idx_remotechanges_3 on VCSGIS_REMOTECHANGES (COD_ENTITY ASC, RCH_SELECTED ASC)
122
@end createWorkspaceIndex3
123

    
124
@begin updateStateFromLocalChanges
125
-- status
126
update VCSGIS_REMOTECHANGES 
127
set RCH_STATUS = %1$d 
128
where exists (select 1 from VCSGIS_WSCHANGES where RCH_DATACODE = WSCH_FEATURECODE FETCH FIRST 1 ROWS ONLY;)
129
@end updateStateFromLocalChanges
130

    
131
@begin removeLocalChangesRelatedToSelectedRemoteChanges
132
-- entityCode
133
delete from VCSGIS_WSCHANGES 
134
where COD_ENTITY = '%1$s' and WSCH_FEATURECODE in (
135
    select RCH_DATACODE from VCSGIS_REMOTECHANGES where RCH_DATACODE = WSCH_FEATURECODE and CAST(RCH_SELECTED as INT)=1)
136
@end removeLocalChangesRelatedToSelectedRemoteChanges
137

    
138
@begin getChangesWidthUserData
139
-- EntityName
140
-- FeatureIdFieldName (VCSGISCODE)
141
-- RelatedFeatureCode
142
-- filter
143
SELECT * FROM VCSGIS_WSCHANGES left join "%1$s" on WSCH_FEATURECODE = "%2$s" WHERE "%2$s" <> '%3$s' AND (%4$s)
144
@end getChangesWidthUserData
145

    
146

    
147

    
148
@begin alterTableAddColumnVCSGISCODE
149
-- EntityName
150
ALTER TABLE "%1$s" ADD COLUMN "VCSGISCODE" VARCHAR(40)
151
@end alterTableAddColumnVCSGISCODE
152

    
153
@begin alterTableDropPrimaryKey
154
-- EntityName
155
ALTER TABLE "%1$s" DROP PRIMARY KEY
156
@end alterTableDropPrimaryKey
157

    
158
@begin alterTableAlterColumnVCSGISCODESetNotNull
159
-- EntityName
160
ALTER TABLE "%1$s" ALTER COLUMN "VCSGISCODE" SET NOT NULL
161
@end alterTableAlterColumnVCSGISCODESetNotNull
162

    
163
@begin alterTableAddPrimaryKeyVCSGISCODE
164
-- EntityName
165
ALTER TABLE "%1$s" ADD PRIMARY KEY ("VCSGISCODE")
166
@end alterTableAddPrimaryKeyVCSGISCODE
167

    
168
@begin createFunctionsPre1
169
create or replace PACKAGE VCSGISPKG AS
170
    TYPE VCSGISREPO_DATA_ROWTYPE IS RECORD (
171
          COD_DATA NVARCHAR2(60)
172
        , COD_REVISION NVARCHAR2(60)
173
        , COD_ENTITY NVARCHAR2(60)
174
        , DAT_OPERATION NUMBER(9, 0)
175
        , DAT_REVNUMBER NUMBER(18, 0)
176
        , DAT_EFECTIVEDATE TIMESTAMP(6)
177
        , DAT_FEATURERELATEDCODE NVARCHAR2(60)
178
        , DAT_GEOM SDO_GEOMETRY
179
        , DAT_DATA NCLOB
180
    );
181
    TYPE VCSGISREPO_DATA_TYPE IS TABLE OF VCSGISREPO_DATA_ROWTYPE;
182

    
183
    FUNCTION CHECKOUT(PCOD_ENTITY IN VARCHAR2, PDAT_REVNUMBER IN LONG) RETURN VCSGISREPO_DATA_TYPE PIPELINED;
184
END VCSGISPKG;
185
@end createFunctionsPre1
186

    
187
@begin createFunctionsPost1
188
create or replace PACKAGE BODY VCSGISPKG AS
189
    TYPE MAP_VARCHAR_NUMBER IS TABLE OF NUMBER  INDEX BY VARCHAR2(64);  
190

    
191
    FUNCTION CHECKOUT(PCOD_ENTITY IN VARCHAR2, PDAT_REVNUMBER IN LONG)
192
        RETURN VCSGISREPO_DATA_TYPE
193
        PIPELINED
194
    IS
195
        CURSOR C1 IS
196
            SELECT * 
197
            FROM VCSGISREPO_DATA
198
            WHERE COD_ENTITY = PCOD_ENTITY AND DAT_REVNUMBER <= PDAT_REVNUMBER
199
            ORDER BY DAT_REVNUMBER DESC
200
        ;
201

    
202
        DELETEDS MAP_VARCHAR_NUMBER;
203
        UPDATEDS_AND_INSERTEDS MAP_VARCHAR_NUMBER;
204
        VCOD_DATA VCSGISREPO_DATA.COD_DATA%TYPE;
205
        VDAT_FEATURERELATEDCODE VCSGISREPO_DATA.DAT_FEATURERELATEDCODE%TYPE;
206
        VDAT_OPERATION VCSGISREPO_DATA.DAT_OPERATION%TYPE;
207

    
208
    BEGIN
209
        FOR record IN C1
210
        LOOP
211
            -- VCOD_DATA := record.COD_DATA;
212
            VDAT_FEATURERELATEDCODE := record.DAT_FEATURERELATEDCODE;
213
            VDAT_OPERATION := record.DAT_OPERATION;
214

    
215
            IF DELETEDS.EXISTS(VDAT_FEATURERELATEDCODE) THEN
216
                CONTINUE;
217
            END IF;
218
            IF UPDATEDS_AND_INSERTEDS.EXISTS(VDAT_FEATURERELATEDCODE) THEN
219
                CONTINUE;
220
            END IF;  
221
            IF VDAT_OPERATION = 0 THEN -- DEL
222
                    DELETEDS(VDAT_FEATURERELATEDCODE) := 1;
223
                    CONTINUE;
224
            ELSIF VDAT_OPERATION = 1 THEN -- UPD
225
                    UPDATEDS_AND_INSERTEDS(VDAT_FEATURERELATEDCODE) := 1;
226
            ELSIF VDAT_OPERATION = 2 THEN -- INS
227
                    UPDATEDS_AND_INSERTEDS(VDAT_FEATURERELATEDCODE) := 1;
228
            END IF;
229

    
230
            PIPE ROW (record);
231
        END LOOP; 
232
    END;
233
END;
234
@end createFunctionsPost1
235

    
236
@begin getDataOfEntityToRevisionNumberUsingDatabaseFunction
237
SELECT * FROM TABLE (VCSGISPKG.CHECKOUT('%2$s', %1$s))
238
@end getDataOfEntityToRevisionNumberUsingDatabaseFunction
239

    
240
@begin defaultCheckoutMode
241
USEDBFUNCTION (posible values USEDBFUNCTION, USESELECT, USEAPPFILTER)
242
@end defaultCheckoutMode