Project

General

Profile

1
--
2
-- PostgreSQL database dump
3
--
4

    
5
SET statement_timeout = 0;
6
SET client_encoding = 'UTF8';
7
SET standard_conforming_strings = off;
8
SET check_function_bodies = false;
9
SET client_min_messages = warning;
10
SET escape_string_warning = off;
11

    
12
--
13
-- Name: functions; Type: SCHEMA; Schema: -; Owner: -
14
--
15

    
16
CREATE SCHEMA functions;
17

    
18

    
19
SET search_path = functions, pg_catalog;
20

    
21
--
22
-- Name: datatype; Type: TYPE; Schema: functions; Owner: -
23
--
24

    
25
CREATE TYPE datatype AS ENUM (
26
    'str',
27
    'float'
28
);
29

    
30

    
31
--
32
-- Name: _alt(); Type: FUNCTION; Schema: functions; Owner: -
33
--
34

    
35
CREATE FUNCTION _alt() RETURNS trigger
36
    LANGUAGE plpgsql IMMUTABLE
37
    AS $$
38
BEGIN
39
    new.result := coalesce(new."0", new."1", new."2", new."3", new."4", new."5",
40
        new."6", new."7", new."8", new."9");
41
    RETURN new;
42
END;
43
$$;
44

    
45

    
46
--
47
-- Name: _label(); Type: FUNCTION; Schema: functions; Owner: -
48
--
49

    
50
CREATE FUNCTION _label() RETURNS trigger
51
    LANGUAGE plpgsql IMMUTABLE
52
    AS $$
53
BEGIN
54
    new.result := (SELECT new.label||': '||new.value);
55
    RETURN new;
56
END;
57
$$;
58

    
59

    
60
--
61
-- Name: _merge(); Type: FUNCTION; Schema: functions; Owner: -
62
--
63

    
64
CREATE FUNCTION _merge() RETURNS trigger
65
    LANGUAGE plpgsql IMMUTABLE
66
    AS $$
67
BEGIN
68
    new.result := (
69
        SELECT functions.join_strs('; ', value)
70
        FROM
71
        (
72
            SELECT *
73
            FROM
74
            (
75
                SELECT
76
                DISTINCT ON (value)
77
                *
78
                FROM
79
                (VALUES
80
                      (0, new."0")
81
                    , (1, new."1")
82
                    , (2, new."2")
83
                    , (3, new."3")
84
                    , (4, new."4")
85
                    , (5, new."5")
86
                    , (6, new."6")
87
                    , (7, new."7")
88
                    , (8, new."8")
89
                    , (9, new."9")
90
                )
91
                AS v (sort_order, value)
92
            )
93
            AS v
94
            ORDER BY sort_order
95
        )
96
        AS v
97
    );
98
    RETURN new;
99
END;
100
$$;
101

    
102

    
103
--
104
-- Name: _nullIf(); Type: FUNCTION; Schema: functions; Owner: -
105
--
106

    
107
CREATE FUNCTION "_nullIf"() RETURNS trigger
108
    LANGUAGE plpgsql IMMUTABLE
109
    AS $$
110
BEGIN
111
    IF new.type = 'str' THEN -- no cast needed
112
        new.result := (SELECT nullif(new.value, new."null"));
113
    -- Invalid value is ignored, but invalid null value generates error
114
    ELSIF new.type = 'float' THEN
115
        DECLARE
116
            -- Outside the try block so that invalid null value generates error
117
            "null" double precision := new."null"::double precision;
118
        BEGIN
119
            new.result := (SELECT nullif(new.value::double precision, "null"));
120
        EXCEPTION
121
            WHEN data_exception THEN NULL; -- ignore invalid value
122
        END;
123
    END IF;
124
    
125
    RETURN new;
126
END;
127
$$;
128

    
129

    
130
--
131
-- Name: join_strs_(text, text, text); Type: FUNCTION; Schema: functions; Owner: -
132
--
133

    
134
CREATE FUNCTION join_strs_(state text, delim text, value text) RETURNS text
135
    LANGUAGE sql IMMUTABLE
136
    AS $_$
137
SELECT $1 || (CASE
138
WHEN $1 = '' OR $3 IS NULL OR $3 = ''
139
THEN ''
140
ELSE $2
141
END) || coalesce($3, '');
142
$_$;
143

    
144

    
145
--
146
-- Name: join_strs(text, text); Type: AGGREGATE; Schema: functions; Owner: -
147
--
148

    
149
CREATE AGGREGATE join_strs(text, text) (
150
    SFUNC = join_strs_,
151
    STYPE = text,
152
    INITCOND = ''
153
);
154

    
155

    
156
SET default_tablespace = '';
157

    
158
SET default_with_oids = false;
159

    
160
--
161
-- Name: _alt; Type: TABLE; Schema: functions; Owner: -; Tablespace: 
162
--
163

    
164
CREATE TABLE _alt (
165
    result text,
166
    not_null_col boolean DEFAULT true NOT NULL,
167
    "0" text,
168
    "1" text,
169
    "2" text,
170
    "3" text,
171
    "4" text,
172
    "5" text,
173
    "6" text,
174
    "7" text,
175
    "8" text,
176
    "9" text
177
);
178

    
179

    
180
--
181
-- Name: _label; Type: TABLE; Schema: functions; Owner: -; Tablespace: 
182
--
183

    
184
CREATE TABLE _label (
185
    result text,
186
    not_null_col boolean DEFAULT true NOT NULL,
187
    label text NOT NULL,
188
    value text
189
);
190

    
191

    
192
--
193
-- Name: _merge; Type: TABLE; Schema: functions; Owner: -; Tablespace: 
194
--
195

    
196
CREATE TABLE _merge (
197
    result text,
198
    not_null_col boolean DEFAULT true NOT NULL,
199
    "0" text,
200
    "1" text,
201
    "2" text,
202
    "3" text,
203
    "4" text,
204
    "5" text,
205
    "6" text,
206
    "7" text,
207
    "8" text,
208
    "9" text
209
);
210

    
211

    
212
--
213
-- Name: _nullIf; Type: TABLE; Schema: functions; Owner: -; Tablespace: 
214
--
215

    
216
CREATE TABLE "_nullIf" (
217
    result text,
218
    not_null_col boolean DEFAULT true NOT NULL,
219
    "null" text NOT NULL,
220
    type datatype DEFAULT 'str'::datatype NOT NULL,
221
    value text
222
);
223

    
224

    
225
--
226
-- Name: _alt_0; Type: INDEX; Schema: functions; Owner: -; Tablespace: 
227
--
228

    
229
CREATE INDEX _alt_0 ON _alt USING btree ((COALESCE("0", '\\N'::text)));
230

    
231

    
232
--
233
-- Name: _alt_1; Type: INDEX; Schema: functions; Owner: -; Tablespace: 
234
--
235

    
236
CREATE INDEX _alt_1 ON _alt USING btree ((COALESCE("1", '\\N'::text)));
237

    
238

    
239
--
240
-- Name: _alt_2; Type: INDEX; Schema: functions; Owner: -; Tablespace: 
241
--
242

    
243
CREATE INDEX _alt_2 ON _alt USING btree ((COALESCE("2", '\\N'::text)));
244

    
245

    
246
--
247
-- Name: _alt_3; Type: INDEX; Schema: functions; Owner: -; Tablespace: 
248
--
249

    
250
CREATE INDEX _alt_3 ON _alt USING btree ((COALESCE("3", '\\N'::text)));
251

    
252

    
253
--
254
-- Name: _alt_4; Type: INDEX; Schema: functions; Owner: -; Tablespace: 
255
--
256

    
257
CREATE INDEX _alt_4 ON _alt USING btree ((COALESCE("4", '\\N'::text)));
258

    
259

    
260
--
261
-- Name: _alt_5; Type: INDEX; Schema: functions; Owner: -; Tablespace: 
262
--
263

    
264
CREATE INDEX _alt_5 ON _alt USING btree ((COALESCE("5", '\\N'::text)));
265

    
266

    
267
--
268
-- Name: _alt_6; Type: INDEX; Schema: functions; Owner: -; Tablespace: 
269
--
270

    
271
CREATE INDEX _alt_6 ON _alt USING btree ((COALESCE("6", '\\N'::text)));
272

    
273

    
274
--
275
-- Name: _alt_7; Type: INDEX; Schema: functions; Owner: -; Tablespace: 
276
--
277

    
278
CREATE INDEX _alt_7 ON _alt USING btree ((COALESCE("7", '\\N'::text)));
279

    
280

    
281
--
282
-- Name: _alt_8; Type: INDEX; Schema: functions; Owner: -; Tablespace: 
283
--
284

    
285
CREATE INDEX _alt_8 ON _alt USING btree ((COALESCE("8", '\\N'::text)));
286

    
287

    
288
--
289
-- Name: _alt_9; Type: INDEX; Schema: functions; Owner: -; Tablespace: 
290
--
291

    
292
CREATE INDEX _alt_9 ON _alt USING btree ((COALESCE("9", '\\N'::text)));
293

    
294

    
295
--
296
-- Name: _alt_unique; Type: INDEX; Schema: functions; Owner: -; Tablespace: 
297
--
298

    
299
CREATE UNIQUE INDEX _alt_unique ON _alt USING btree ((COALESCE("0", '\\N'::text)), (COALESCE("1", '\\N'::text)), (COALESCE("2", '\\N'::text)), (COALESCE("3", '\\N'::text)), (COALESCE("4", '\\N'::text)), (COALESCE("5", '\\N'::text)), (COALESCE("6", '\\N'::text)), (COALESCE("7", '\\N'::text)), (COALESCE("8", '\\N'::text)), (COALESCE("9", '\\N'::text)));
300

    
301

    
302
--
303
-- Name: _label_label; Type: INDEX; Schema: functions; Owner: -; Tablespace: 
304
--
305

    
306
CREATE INDEX _label_label ON _label USING btree ((COALESCE(label, '\\N'::text)));
307

    
308

    
309
--
310
-- Name: _label_unique; Type: INDEX; Schema: functions; Owner: -; Tablespace: 
311
--
312

    
313
CREATE UNIQUE INDEX _label_unique ON _label USING btree ((COALESCE(label, '\\N'::text)), (COALESCE(value, '\\N'::text)));
314

    
315

    
316
--
317
-- Name: _label_value; Type: INDEX; Schema: functions; Owner: -; Tablespace: 
318
--
319

    
320
CREATE INDEX _label_value ON _label USING btree (value);
321

    
322

    
323
--
324
-- Name: _merge_0; Type: INDEX; Schema: functions; Owner: -; Tablespace: 
325
--
326

    
327
CREATE INDEX _merge_0 ON _merge USING btree ((COALESCE("0", '\\N'::text)));
328

    
329

    
330
--
331
-- Name: _merge_1; Type: INDEX; Schema: functions; Owner: -; Tablespace: 
332
--
333

    
334
CREATE INDEX _merge_1 ON _merge USING btree ((COALESCE("1", '\\N'::text)));
335

    
336

    
337
--
338
-- Name: _merge_2; Type: INDEX; Schema: functions; Owner: -; Tablespace: 
339
--
340

    
341
CREATE INDEX _merge_2 ON _merge USING btree ((COALESCE("2", '\\N'::text)));
342

    
343

    
344
--
345
-- Name: _merge_3; Type: INDEX; Schema: functions; Owner: -; Tablespace: 
346
--
347

    
348
CREATE INDEX _merge_3 ON _merge USING btree ((COALESCE("3", '\\N'::text)));
349

    
350

    
351
--
352
-- Name: _merge_4; Type: INDEX; Schema: functions; Owner: -; Tablespace: 
353
--
354

    
355
CREATE INDEX _merge_4 ON _merge USING btree ((COALESCE("4", '\\N'::text)));
356

    
357

    
358
--
359
-- Name: _merge_5; Type: INDEX; Schema: functions; Owner: -; Tablespace: 
360
--
361

    
362
CREATE INDEX _merge_5 ON _merge USING btree ((COALESCE("5", '\\N'::text)));
363

    
364

    
365
--
366
-- Name: _merge_6; Type: INDEX; Schema: functions; Owner: -; Tablespace: 
367
--
368

    
369
CREATE INDEX _merge_6 ON _merge USING btree ((COALESCE("6", '\\N'::text)));
370

    
371

    
372
--
373
-- Name: _merge_7; Type: INDEX; Schema: functions; Owner: -; Tablespace: 
374
--
375

    
376
CREATE INDEX _merge_7 ON _merge USING btree ((COALESCE("7", '\\N'::text)));
377

    
378

    
379
--
380
-- Name: _merge_8; Type: INDEX; Schema: functions; Owner: -; Tablespace: 
381
--
382

    
383
CREATE INDEX _merge_8 ON _merge USING btree ((COALESCE("8", '\\N'::text)));
384

    
385

    
386
--
387
-- Name: _merge_9; Type: INDEX; Schema: functions; Owner: -; Tablespace: 
388
--
389

    
390
CREATE INDEX _merge_9 ON _merge USING btree ((COALESCE("9", '\\N'::text)));
391

    
392

    
393
--
394
-- Name: _merge_unique; Type: INDEX; Schema: functions; Owner: -; Tablespace: 
395
--
396

    
397
CREATE UNIQUE INDEX _merge_unique ON _merge USING btree ((COALESCE("0", '\\N'::text)), (COALESCE("1", '\\N'::text)), (COALESCE("2", '\\N'::text)), (COALESCE("3", '\\N'::text)), (COALESCE("4", '\\N'::text)), (COALESCE("5", '\\N'::text)), (COALESCE("6", '\\N'::text)), (COALESCE("7", '\\N'::text)), (COALESCE("8", '\\N'::text)), (COALESCE("9", '\\N'::text)));
398

    
399

    
400
--
401
-- Name: _nullIf_null; Type: INDEX; Schema: functions; Owner: -; Tablespace: 
402
--
403

    
404
CREATE INDEX "_nullIf_null" ON "_nullIf" USING btree ("null");
405

    
406

    
407
--
408
-- Name: _nullIf_type; Type: INDEX; Schema: functions; Owner: -; Tablespace: 
409
--
410

    
411
CREATE INDEX "_nullIf_type" ON "_nullIf" USING btree (type);
412

    
413

    
414
--
415
-- Name: _nullIf_unique; Type: INDEX; Schema: functions; Owner: -; Tablespace: 
416
--
417

    
418
CREATE UNIQUE INDEX "_nullIf_unique" ON "_nullIf" USING btree ("null", type, (COALESCE(value, '\\N'::text)));
419

    
420

    
421
--
422
-- Name: _nullIf_value; Type: INDEX; Schema: functions; Owner: -; Tablespace: 
423
--
424

    
425
CREATE INDEX "_nullIf_value" ON "_nullIf" USING btree (value);
426

    
427

    
428
--
429
-- Name: _alt; Type: TRIGGER; Schema: functions; Owner: -
430
--
431

    
432
CREATE TRIGGER _alt BEFORE INSERT OR UPDATE ON _alt FOR EACH ROW EXECUTE PROCEDURE _alt();
433

    
434

    
435
--
436
-- Name: _label; Type: TRIGGER; Schema: functions; Owner: -
437
--
438

    
439
CREATE TRIGGER _label BEFORE INSERT OR UPDATE ON _label FOR EACH ROW EXECUTE PROCEDURE _label();
440

    
441

    
442
--
443
-- Name: _merge; Type: TRIGGER; Schema: functions; Owner: -
444
--
445

    
446
CREATE TRIGGER _merge BEFORE INSERT OR UPDATE ON _merge FOR EACH ROW EXECUTE PROCEDURE _merge();
447

    
448

    
449
--
450
-- Name: _nullIf; Type: TRIGGER; Schema: functions; Owner: -
451
--
452

    
453
CREATE TRIGGER "_nullIf" BEFORE INSERT OR UPDATE ON "_nullIf" FOR EACH ROW EXECUTE PROCEDURE "_nullIf"();
454

    
455

    
456
--
457
-- PostgreSQL database dump complete
458
--
459

    
(4-4/22)