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 := functions._alt(new."0", new."1", new."2", new."3", new."4",
40
        new."5", new."6", new."7", new."8", new."9");
41
    RETURN new;
42
END;
43
$$;
44

    
45

    
46
--
47
-- Name: _alt(text, text, text, text, text, text, text, text, text, text); Type: FUNCTION; Schema: functions; Owner: -
48
--
49

    
50
CREATE FUNCTION _alt("0" text DEFAULT NULL::text, "1" text DEFAULT NULL::text, "2" text DEFAULT NULL::text, "3" text DEFAULT NULL::text, "4" text DEFAULT NULL::text, "5" text DEFAULT NULL::text, "6" text DEFAULT NULL::text, "7" text DEFAULT NULL::text, "8" text DEFAULT NULL::text, "9" text DEFAULT NULL::text) RETURNS text
51
    LANGUAGE sql IMMUTABLE
52
    AS $_$
53
SELECT coalesce($1, $2, $3, $4, $5, $6, $7, $8, $9, $10)
54
$_$;
55

    
56

    
57
--
58
-- Name: _label(); Type: FUNCTION; Schema: functions; Owner: -
59
--
60

    
61
CREATE FUNCTION _label() RETURNS trigger
62
    LANGUAGE plpgsql IMMUTABLE
63
    AS $$
64
BEGIN
65
    new.result := functions._label(new.label, new.value);
66
    RETURN new;
67
END;
68
$$;
69

    
70

    
71
--
72
-- Name: _label(text, text); Type: FUNCTION; Schema: functions; Owner: -
73
--
74

    
75
CREATE FUNCTION _label(label text, value text) RETURNS text
76
    LANGUAGE sql IMMUTABLE
77
    AS $_$
78
SELECT $1||': '||$2
79
$_$;
80

    
81

    
82
--
83
-- Name: _merge(); Type: FUNCTION; Schema: functions; Owner: -
84
--
85

    
86
CREATE FUNCTION _merge() RETURNS trigger
87
    LANGUAGE plpgsql IMMUTABLE
88
    AS $$
89
BEGIN
90
    new.result := functions._merge(new."0", new."1", new."2", new."3", new."4",
91
        new."5", new."6", new."7", new."8", new."9");
92
    RETURN new;
93
END;
94
$$;
95

    
96

    
97
--
98
-- Name: _merge(text, text, text, text, text, text, text, text, text, text); Type: FUNCTION; Schema: functions; Owner: -
99
--
100

    
101
CREATE FUNCTION _merge("0" text DEFAULT NULL::text, "1" text DEFAULT NULL::text, "2" text DEFAULT NULL::text, "3" text DEFAULT NULL::text, "4" text DEFAULT NULL::text, "5" text DEFAULT NULL::text, "6" text DEFAULT NULL::text, "7" text DEFAULT NULL::text, "8" text DEFAULT NULL::text, "9" text DEFAULT NULL::text) RETURNS text
102
    LANGUAGE sql IMMUTABLE
103
    AS $_$
104
SELECT functions.join_strs('; ', value)
105
FROM
106
(
107
    SELECT *
108
    FROM
109
    (
110
        SELECT
111
        DISTINCT ON (value)
112
        *
113
        FROM
114
        (VALUES
115
              (0, $1)
116
            , (1, $2)
117
            , (2, $3)
118
            , (3, $4)
119
            , (4, $5)
120
            , (5, $6)
121
            , (6, $7)
122
            , (7, $8)
123
            , (8, $9)
124
            , (9, $10)
125
        )
126
        AS v (sort_order, value)
127
    )
128
    AS v
129
    ORDER BY sort_order
130
)
131
AS v
132
$_$;
133

    
134

    
135
--
136
-- Name: _nullIf(); Type: FUNCTION; Schema: functions; Owner: -
137
--
138

    
139
CREATE FUNCTION "_nullIf"() RETURNS trigger
140
    LANGUAGE plpgsql IMMUTABLE
141
    AS $$
142
BEGIN
143
    IF new.type = 'str' THEN -- no cast needed
144
        new.result := (SELECT nullif(new.value, new."null"));
145
    -- Invalid value is ignored, but invalid null value generates error
146
    ELSIF new.type = 'float' THEN
147
        DECLARE
148
            -- Outside the try block so that invalid null value generates error
149
            "null" double precision := new."null"::double precision;
150
        BEGIN
151
            new.result := (SELECT nullif(new.value::double precision, "null"));
152
        EXCEPTION
153
            WHEN data_exception THEN NULL; -- ignore invalid value
154
        END;
155
    END IF;
156
    
157
    RETURN new;
158
END;
159
$$;
160

    
161

    
162
--
163
-- Name: join_strs_(text, text, text); Type: FUNCTION; Schema: functions; Owner: -
164
--
165

    
166
CREATE FUNCTION join_strs_(state text, delim text, value text) RETURNS text
167
    LANGUAGE sql IMMUTABLE
168
    AS $_$
169
SELECT $1 || (CASE
170
WHEN $1 = '' OR $3 IS NULL OR $3 = ''
171
THEN ''
172
ELSE $2
173
END) || coalesce($3, '');
174
$_$;
175

    
176

    
177
--
178
-- Name: join_strs(text, text); Type: AGGREGATE; Schema: functions; Owner: -
179
--
180

    
181
CREATE AGGREGATE join_strs(text, text) (
182
    SFUNC = join_strs_,
183
    STYPE = text,
184
    INITCOND = ''
185
);
186

    
187

    
188
SET default_tablespace = '';
189

    
190
SET default_with_oids = false;
191

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

    
196
CREATE TABLE _alt (
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: _label; Type: TABLE; Schema: functions; Owner: -; Tablespace: 
214
--
215

    
216
CREATE TABLE _label (
217
    result text,
218
    not_null_col boolean DEFAULT true NOT NULL,
219
    label text NOT NULL,
220
    value text
221
);
222

    
223

    
224
--
225
-- Name: _merge; Type: TABLE; Schema: functions; Owner: -; Tablespace: 
226
--
227

    
228
CREATE TABLE _merge (
229
    result text,
230
    not_null_col boolean DEFAULT true NOT NULL,
231
    "0" text,
232
    "1" text,
233
    "2" text,
234
    "3" text,
235
    "4" text,
236
    "5" text,
237
    "6" text,
238
    "7" text,
239
    "8" text,
240
    "9" text
241
);
242

    
243

    
244
--
245
-- Name: _nullIf; Type: TABLE; Schema: functions; Owner: -; Tablespace: 
246
--
247

    
248
CREATE TABLE "_nullIf" (
249
    result text,
250
    not_null_col boolean DEFAULT true NOT NULL,
251
    "null" text NOT NULL,
252
    type datatype DEFAULT 'str'::datatype NOT NULL,
253
    value text
254
);
255

    
256

    
257
--
258
-- Name: _alt_0; Type: INDEX; Schema: functions; Owner: -; Tablespace: 
259
--
260

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

    
263

    
264
--
265
-- Name: _alt_1; Type: INDEX; Schema: functions; Owner: -; Tablespace: 
266
--
267

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

    
270

    
271
--
272
-- Name: _alt_2; Type: INDEX; Schema: functions; Owner: -; Tablespace: 
273
--
274

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

    
277

    
278
--
279
-- Name: _alt_3; Type: INDEX; Schema: functions; Owner: -; Tablespace: 
280
--
281

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

    
284

    
285
--
286
-- Name: _alt_4; Type: INDEX; Schema: functions; Owner: -; Tablespace: 
287
--
288

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

    
291

    
292
--
293
-- Name: _alt_5; Type: INDEX; Schema: functions; Owner: -; Tablespace: 
294
--
295

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

    
298

    
299
--
300
-- Name: _alt_6; Type: INDEX; Schema: functions; Owner: -; Tablespace: 
301
--
302

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

    
305

    
306
--
307
-- Name: _alt_7; Type: INDEX; Schema: functions; Owner: -; Tablespace: 
308
--
309

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

    
312

    
313
--
314
-- Name: _alt_8; Type: INDEX; Schema: functions; Owner: -; Tablespace: 
315
--
316

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

    
319

    
320
--
321
-- Name: _alt_9; Type: INDEX; Schema: functions; Owner: -; Tablespace: 
322
--
323

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

    
326

    
327
--
328
-- Name: _alt_unique; Type: INDEX; Schema: functions; Owner: -; Tablespace: 
329
--
330

    
331
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)));
332

    
333

    
334
--
335
-- Name: _label_label; Type: INDEX; Schema: functions; Owner: -; Tablespace: 
336
--
337

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

    
340

    
341
--
342
-- Name: _label_unique; Type: INDEX; Schema: functions; Owner: -; Tablespace: 
343
--
344

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

    
347

    
348
--
349
-- Name: _label_value; Type: INDEX; Schema: functions; Owner: -; Tablespace: 
350
--
351

    
352
CREATE INDEX _label_value ON _label USING btree (value);
353

    
354

    
355
--
356
-- Name: _merge_0; Type: INDEX; Schema: functions; Owner: -; Tablespace: 
357
--
358

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

    
361

    
362
--
363
-- Name: _merge_1; Type: INDEX; Schema: functions; Owner: -; Tablespace: 
364
--
365

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

    
368

    
369
--
370
-- Name: _merge_2; Type: INDEX; Schema: functions; Owner: -; Tablespace: 
371
--
372

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

    
375

    
376
--
377
-- Name: _merge_3; Type: INDEX; Schema: functions; Owner: -; Tablespace: 
378
--
379

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

    
382

    
383
--
384
-- Name: _merge_4; Type: INDEX; Schema: functions; Owner: -; Tablespace: 
385
--
386

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

    
389

    
390
--
391
-- Name: _merge_5; Type: INDEX; Schema: functions; Owner: -; Tablespace: 
392
--
393

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

    
396

    
397
--
398
-- Name: _merge_6; Type: INDEX; Schema: functions; Owner: -; Tablespace: 
399
--
400

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

    
403

    
404
--
405
-- Name: _merge_7; Type: INDEX; Schema: functions; Owner: -; Tablespace: 
406
--
407

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

    
410

    
411
--
412
-- Name: _merge_8; Type: INDEX; Schema: functions; Owner: -; Tablespace: 
413
--
414

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

    
417

    
418
--
419
-- Name: _merge_9; Type: INDEX; Schema: functions; Owner: -; Tablespace: 
420
--
421

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

    
424

    
425
--
426
-- Name: _merge_unique; Type: INDEX; Schema: functions; Owner: -; Tablespace: 
427
--
428

    
429
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)));
430

    
431

    
432
--
433
-- Name: _nullIf_null; Type: INDEX; Schema: functions; Owner: -; Tablespace: 
434
--
435

    
436
CREATE INDEX "_nullIf_null" ON "_nullIf" USING btree ("null");
437

    
438

    
439
--
440
-- Name: _nullIf_type; Type: INDEX; Schema: functions; Owner: -; Tablespace: 
441
--
442

    
443
CREATE INDEX "_nullIf_type" ON "_nullIf" USING btree (type);
444

    
445

    
446
--
447
-- Name: _nullIf_unique; Type: INDEX; Schema: functions; Owner: -; Tablespace: 
448
--
449

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

    
452

    
453
--
454
-- Name: _nullIf_value; Type: INDEX; Schema: functions; Owner: -; Tablespace: 
455
--
456

    
457
CREATE INDEX "_nullIf_value" ON "_nullIf" USING btree (value);
458

    
459

    
460
--
461
-- Name: _alt; Type: TRIGGER; Schema: functions; Owner: -
462
--
463

    
464
CREATE TRIGGER _alt BEFORE INSERT OR UPDATE ON _alt FOR EACH ROW EXECUTE PROCEDURE functions._alt();
465

    
466

    
467
--
468
-- Name: _label; Type: TRIGGER; Schema: functions; Owner: -
469
--
470

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

    
473

    
474
--
475
-- Name: _merge; Type: TRIGGER; Schema: functions; Owner: -
476
--
477

    
478
CREATE TRIGGER _merge BEFORE INSERT OR UPDATE ON _merge FOR EACH ROW EXECUTE PROCEDURE functions._merge();
479

    
480

    
481
--
482
-- Name: _nullIf; Type: TRIGGER; Schema: functions; Owner: -
483
--
484

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

    
487

    
488
--
489
-- PostgreSQL database dump complete
490
--
491

    
(4-4/22)