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 = on;
8
SET check_function_bodies = false;
9
SET client_min_messages = warning;
10

    
11
--
12
-- Name: TNRS; Type: SCHEMA; Schema: -; Owner: -
13
--
14

    
15
--CREATE SCHEMA "TNRS";
16

    
17

    
18
SET search_path = "TNRS", pg_catalog;
19

    
20
--
21
-- Name: batch__fill(); Type: FUNCTION; Schema: TNRS; Owner: -
22
--
23

    
24
CREATE FUNCTION batch__fill() RETURNS trigger
25
    LANGUAGE plpgsql
26
    AS $$
27
BEGIN
28
	new.id_by_time = new.time_submitted;
29
	new.id = COALESCE(new.id, new.id_by_time);
30
	RETURN new;
31
END;
32
$$;
33

    
34

    
35
--
36
-- Name: family_is_homonym(text); Type: FUNCTION; Schema: TNRS; Owner: -
37
--
38

    
39
CREATE FUNCTION family_is_homonym(family text) RETURNS boolean
40
    LANGUAGE sql STABLE STRICT
41
    AS $_$
42
SELECT EXISTS(SELECT * FROM "IRMNG".family_homonym_epithet WHERE "taxonNameOrEpithet" = $1)
43
$_$;
44

    
45

    
46
--
47
-- Name: genus_is_homonym(text); Type: FUNCTION; Schema: TNRS; Owner: -
48
--
49

    
50
CREATE FUNCTION genus_is_homonym(genus text) RETURNS boolean
51
    LANGUAGE sql STABLE STRICT
52
    AS $_$
53
SELECT EXISTS(SELECT * FROM "IRMNG".genus_homonym_epithet WHERE "taxonNameOrEpithet" = $1)
54
$_$;
55

    
56

    
57
--
58
-- Name: score_ok(double precision); Type: FUNCTION; Schema: TNRS; Owner: -
59
--
60

    
61
CREATE FUNCTION score_ok(score double precision) RETURNS boolean
62
    LANGUAGE sql IMMUTABLE STRICT
63
    AS $_$
64
SELECT $1 >= 0.8
65
$_$;
66

    
67

    
68
--
69
-- Name: tnrs_populate_fields(); Type: FUNCTION; Schema: TNRS; Owner: -
70
--
71

    
72
CREATE FUNCTION tnrs_populate_fields() RETURNS trigger
73
    LANGUAGE plpgsql
74
    AS $$
75
DECLARE
76
    "Specific_epithet_is_plant" boolean :=
77
        (CASE
78
        WHEN   new."Infraspecific_epithet_matched"   IS NOT NULL
79
            OR new."Infraspecific_epithet_2_matched" IS NOT NULL
80
            OR new."Specific_epithet_score" >= 0.9 -- fuzzy match
81
            THEN true
82
        ELSE NULL -- ambiguous
83
        END);
84
    never_homonym boolean = COALESCE(new."Author_score" >= 0.6, false); -- author disambiguates
85
    family_is_homonym boolean = NOT never_homonym AND "TNRS".family_is_homonym(new."Family_matched");
86
    genus_is_homonym  boolean = NOT never_homonym AND "TNRS".genus_is_homonym( new."Genus_matched" );
87
BEGIN
88
    new."Accepted_scientific_name" = NULLIF(concat_ws(' '
89
        , NULLIF(NULLIF(new."Accepted_name_family", 'Unknown'), new."Accepted_name")
90
        , new."Accepted_name"
91
        , new."Accepted_name_author"
92
    ), '');
93
    new."Max_score" = GREATEST(
94
          new."Overall_score"
95
        , new."Family_score"
96
        , new."Genus_score"
97
        , new."Specific_epithet_score"
98
    );
99
    new."Is_homonym" = COALESCE(genus_is_homonym, family_is_homonym);
100
    new."Is_plant" = (CASE
101
        WHEN new."Family_score" = 1 AND NOT family_is_homonym -- exact match
102
            THEN true
103
        ELSE -- consider genus
104
            (CASE
105
            WHEN new."Genus_score" =  1    -- exact match
106
                THEN
107
                (CASE
108
                WHEN NOT genus_is_homonym THEN true
109
                ELSE "Specific_epithet_is_plant"
110
                END)
111
            WHEN new."Genus_score" >= 0.85 -- fuzzy match
112
                THEN "Specific_epithet_is_plant"
113
            ELSE NULL -- ambiguous
114
            END)
115
        END);
116
    
117
    RETURN new;
118
END;
119
$$;
120

    
121

    
122
--
123
-- Name: FUNCTION tnrs_populate_fields(); Type: COMMENT; Schema: TNRS; Owner: -
124
--
125

    
126
COMMENT ON FUNCTION tnrs_populate_fields() IS 'IMPORTANT: when changing this function, you must regenerate the derived cols:
127
UPDATE "TNRS".tnrs SET "Name_submitted" = "Name_submitted"
128
runtime: 25 min ("5221748 rows affected, 1524228 ms execution time")
129
VACUUM ANALYZE "TNRS".tnrs -- to remove previous rows
130
runtime: 1 min ("62350 ms")';
131

    
132

    
133
SET default_tablespace = '';
134

    
135
SET default_with_oids = false;
136

    
137
--
138
-- Name: tnrs; Type: TABLE; Schema: TNRS; Owner: -; Tablespace: 
139
--
140

    
141
CREATE TABLE tnrs (
142
    batch text DEFAULT now() NOT NULL,
143
    "Name_number" integer NOT NULL,
144
    "Name_submitted" text NOT NULL,
145
    "Overall_score" double precision,
146
    "Name_matched" text,
147
    "Name_matched_rank" text,
148
    "Name_score" double precision,
149
    "Name_matched_author" text,
150
    "Name_matched_url" text,
151
    "Author_matched" text,
152
    "Author_score" double precision,
153
    "Family_matched" text,
154
    "Family_score" double precision,
155
    "Name_matched_accepted_family" text,
156
    "Genus_matched" text,
157
    "Genus_score" double precision,
158
    "Specific_epithet_matched" text,
159
    "Specific_epithet_score" double precision,
160
    "Infraspecific_rank" text,
161
    "Infraspecific_epithet_matched" text,
162
    "Infraspecific_epithet_score" double precision,
163
    "Infraspecific_rank_2" text,
164
    "Infraspecific_epithet_2_matched" text,
165
    "Infraspecific_epithet_2_score" double precision,
166
    "Annotations" text,
167
    "Unmatched_terms" text,
168
    "Taxonomic_status" text,
169
    "Accepted_name" text,
170
    "Accepted_name_author" text,
171
    "Accepted_name_rank" text,
172
    "Accepted_name_url" text,
173
    "Accepted_name_species" text,
174
    "Accepted_name_family" text,
175
    "Selected" text,
176
    "Source" text,
177
    "Warnings" text,
178
    "Accepted_name_lsid" text,
179
    "Accepted_scientific_name" text,
180
    "Max_score" double precision,
181
    "Is_homonym" boolean,
182
    "Is_plant" boolean
183
);
184

    
185

    
186
--
187
-- Name: TABLE tnrs; Type: COMMENT; Schema: TNRS; Owner: -
188
--
189

    
190
COMMENT ON TABLE tnrs IS 'IMPORTANT: when changing this table''s schema, you may need to re-run TNRS:
191
$ inputs/test_taxonomic_names/test_scrub
192
$ rm=1 inputs/.TNRS/data.sql.run export_
193
you must also make the same changes on vegbiendev: e.g.
194
$ make backups/TNRS.backup-remake # runtime: 3 min ("real 2m44.277s")
195
SELECT util.set_col_types(''"TNRS".tnrs'', ARRAY[
196
  (''col'', ''new_type'')
197
]::util.col_cast[]);
198
runtime: 9 min ("531282 ms")';
199

    
200

    
201
--
202
-- Name: AcceptedTaxon; Type: VIEW; Schema: TNRS; Owner: -
203
--
204

    
205
CREATE VIEW "AcceptedTaxon" AS
206
    SELECT tnrs.batch AS "*Accepted_name.batch", tnrs."Name_submitted" AS "acceptedScientificName", tnrs."Genus_matched" AS "acceptedGenus", tnrs."Specific_epithet_matched" AS "acceptedSpecificEpithet", tnrs."Infraspecific_epithet_matched" AS "acceptedInfraspecificEpithet", tnrs."Taxonomic_status" AS "acceptedTaxonomicStatus", tnrs."Selected" AS "*Accepted_name.Selected", tnrs."Source" AS "*Accepted_name.Source", tnrs."Warnings" AS "*Accepted_name.Warnings", tnrs."Accepted_name_lsid" AS "*Accepted_name.Accepted_name_lsid" FROM tnrs;
207

    
208

    
209
--
210
-- Name: MatchedTaxon; Type: VIEW; Schema: TNRS; Owner: -
211
--
212

    
213
CREATE VIEW "MatchedTaxon" AS
214
    SELECT tnrs.batch AS "*Name_matched.batch", tnrs."Name_submitted" AS "concatenatedScientificName", tnrs."Name_matched" AS "matchedTaxonName", tnrs."Name_matched_rank" AS "matchedTaxonRank", tnrs."Name_score" AS "*Name_matched.Name_score", tnrs."Name_matched_author" AS "matchedScientificNameAuthorship", tnrs."Name_matched_url" AS "matchedScientificNameID", tnrs."Author_score" AS "*Name_matched.Author_score", tnrs."Family_score" AS "matchedFamilyConfidence_fraction", COALESCE(tnrs."Name_matched_accepted_family", tnrs."Accepted_name_family") AS "matchedFamily", tnrs."Genus_matched" AS "matchedGenus", tnrs."Genus_score" AS "matchedGenusConfidence_fraction", tnrs."Specific_epithet_matched" AS "matchedSpecificEpithet", tnrs."Specific_epithet_score" AS "matchedSpeciesConfidence_fraction", tnrs."Infraspecific_epithet_matched" AS "matchedInfraspecificEpithet", tnrs."Infraspecific_epithet_score" AS "*Name_matched.Infraspecific_epithet_score", tnrs."Annotations" AS "identificationQualifier", tnrs."Unmatched_terms" AS "morphospeciesSuffix", tnrs."Taxonomic_status" AS "taxonomicStatus", tnrs."Accepted_name" AS "acceptedTaxonName", tnrs."Accepted_name_author" AS "acceptedScientificNameAuthorship", tnrs."Accepted_name_rank" AS "acceptedTaxonRank", tnrs."Accepted_name_url" AS "acceptedScientificNameID", tnrs."Accepted_name_species" AS "*Name_matched.Accepted_name_species", tnrs."Accepted_name_family" AS "acceptedFamily", tnrs."Selected" AS "*Name_matched.Selected", tnrs."Source" AS "*Name_matched.Source", tnrs."Warnings" AS "*Name_matched.Warnings", tnrs."Accepted_name_lsid" AS "*Name_matched.Accepted_name_lsid", tnrs."Accepted_scientific_name" AS "acceptedScientificName", tnrs."Max_score" AS "matchedTaxonConfidence_fraction" FROM tnrs;
215

    
216

    
217
--
218
-- Name: ValidMatchedTaxon; Type: VIEW; Schema: TNRS; Owner: -
219
--
220

    
221
CREATE VIEW "ValidMatchedTaxon" AS
222
    SELECT "MatchedTaxon"."*Name_matched.batch", "MatchedTaxon"."concatenatedScientificName", "MatchedTaxon"."matchedTaxonName", "MatchedTaxon"."matchedTaxonRank", "MatchedTaxon"."*Name_matched.Name_score", "MatchedTaxon"."matchedScientificNameAuthorship", "MatchedTaxon"."matchedScientificNameID", "MatchedTaxon"."*Name_matched.Author_score", "MatchedTaxon"."matchedFamilyConfidence_fraction", "MatchedTaxon"."matchedFamily", "MatchedTaxon"."matchedGenus", "MatchedTaxon"."matchedGenusConfidence_fraction", "MatchedTaxon"."matchedSpecificEpithet", "MatchedTaxon"."matchedSpeciesConfidence_fraction", "MatchedTaxon"."matchedInfraspecificEpithet", "MatchedTaxon"."*Name_matched.Infraspecific_epithet_score", "MatchedTaxon"."identificationQualifier", "MatchedTaxon"."morphospeciesSuffix", "MatchedTaxon"."taxonomicStatus", "MatchedTaxon"."acceptedTaxonName", "MatchedTaxon"."acceptedScientificNameAuthorship", "MatchedTaxon"."acceptedTaxonRank", "MatchedTaxon"."acceptedScientificNameID", "MatchedTaxon"."*Name_matched.Accepted_name_species", "MatchedTaxon"."acceptedFamily", "MatchedTaxon"."*Name_matched.Selected", "MatchedTaxon"."*Name_matched.Source", "MatchedTaxon"."*Name_matched.Warnings", "MatchedTaxon"."*Name_matched.Accepted_name_lsid", "MatchedTaxon"."acceptedScientificName", "MatchedTaxon"."matchedTaxonConfidence_fraction" FROM "MatchedTaxon" WHERE score_ok("MatchedTaxon"."matchedTaxonConfidence_fraction");
223

    
224

    
225
--
226
-- Name: VIEW "ValidMatchedTaxon"; Type: COMMENT; Schema: TNRS; Owner: -
227
--
228

    
229
COMMENT ON VIEW "ValidMatchedTaxon" IS 'to update, use * as the column list';
230

    
231

    
232
--
233
-- Name: ScrubbedTaxon; Type: VIEW; Schema: TNRS; Owner: -
234
--
235

    
236
CREATE VIEW "ScrubbedTaxon" AS
237
    SELECT "ValidMatchedTaxon"."acceptedScientificName", "ValidMatchedTaxon"."*Name_matched.batch", "ValidMatchedTaxon"."concatenatedScientificName", "ValidMatchedTaxon"."matchedTaxonName", "ValidMatchedTaxon"."matchedTaxonRank", "ValidMatchedTaxon"."*Name_matched.Name_score", "ValidMatchedTaxon"."matchedScientificNameAuthorship", "ValidMatchedTaxon"."matchedScientificNameID", "ValidMatchedTaxon"."*Name_matched.Author_score", "ValidMatchedTaxon"."matchedFamilyConfidence_fraction", "ValidMatchedTaxon"."matchedFamily", "ValidMatchedTaxon"."matchedGenus", "ValidMatchedTaxon"."matchedGenusConfidence_fraction", "ValidMatchedTaxon"."matchedSpecificEpithet", "ValidMatchedTaxon"."matchedSpeciesConfidence_fraction", "ValidMatchedTaxon"."matchedInfraspecificEpithet", "ValidMatchedTaxon"."*Name_matched.Infraspecific_epithet_score", "ValidMatchedTaxon"."identificationQualifier", "ValidMatchedTaxon"."morphospeciesSuffix", "ValidMatchedTaxon"."taxonomicStatus", "ValidMatchedTaxon"."acceptedTaxonName", "ValidMatchedTaxon"."acceptedScientificNameAuthorship", "ValidMatchedTaxon"."acceptedTaxonRank", "ValidMatchedTaxon"."acceptedScientificNameID", "ValidMatchedTaxon"."*Name_matched.Accepted_name_species", "ValidMatchedTaxon"."acceptedFamily", "ValidMatchedTaxon"."*Name_matched.Selected", "ValidMatchedTaxon"."*Name_matched.Source", "ValidMatchedTaxon"."*Name_matched.Warnings", "ValidMatchedTaxon"."*Name_matched.Accepted_name_lsid", "ValidMatchedTaxon"."matchedTaxonConfidence_fraction", "AcceptedTaxon"."*Accepted_name.batch", "AcceptedTaxon"."acceptedGenus", "AcceptedTaxon"."acceptedSpecificEpithet", "AcceptedTaxon"."acceptedInfraspecificEpithet", "AcceptedTaxon"."acceptedTaxonomicStatus", "AcceptedTaxon"."*Accepted_name.Selected", "AcceptedTaxon"."*Accepted_name.Source", "AcceptedTaxon"."*Accepted_name.Warnings", "AcceptedTaxon"."*Accepted_name.Accepted_name_lsid" FROM ("ValidMatchedTaxon" NATURAL LEFT JOIN "AcceptedTaxon");
238

    
239

    
240
--
241
-- Name: VIEW "ScrubbedTaxon"; Type: COMMENT; Schema: TNRS; Owner: -
242
--
243

    
244
COMMENT ON VIEW "ScrubbedTaxon" IS 'to update, use * as the column list';
245

    
246

    
247
--
248
-- Name: Source; Type: TABLE; Schema: TNRS; Owner: -; Tablespace: 
249
--
250

    
251
CREATE TABLE "Source" (
252
    "*row_num" integer NOT NULL,
253
    "sourceType" text DEFAULT 'aggregator'::text NOT NULL,
254
    "datasetURL" text DEFAULT 'http://tnrs.iplantcollaborative.org/TNRSapp.html'::text NOT NULL
255
);
256

    
257

    
258
--
259
-- Name: COLUMN "Source"."sourceType"; Type: COMMENT; Schema: TNRS; Owner: -
260
--
261

    
262
COMMENT ON COLUMN "Source"."sourceType" IS 'constant';
263

    
264

    
265
--
266
-- Name: COLUMN "Source"."datasetURL"; Type: COMMENT; Schema: TNRS; Owner: -
267
--
268

    
269
COMMENT ON COLUMN "Source"."datasetURL" IS 'constant';
270

    
271

    
272
--
273
-- Name: batch; Type: TABLE; Schema: TNRS; Owner: -; Tablespace: 
274
--
275

    
276
CREATE TABLE batch (
277
    id text NOT NULL,
278
    id_by_time text,
279
    time_submitted timestamp with time zone DEFAULT now(),
280
    client_version text
281
);
282

    
283

    
284
--
285
-- Name: batch_download_settings; Type: TABLE; Schema: TNRS; Owner: -; Tablespace: 
286
--
287

    
288
CREATE TABLE batch_download_settings (
289
    id text NOT NULL,
290
    "E-mail" text,
291
    "Id" text,
292
    "Job type" text,
293
    "Contains Id" boolean,
294
    "Start time" text,
295
    "Finish time" text,
296
    "TNRS version" text,
297
    "Sources selected" text,
298
    "Match threshold" double precision,
299
    "Classification" text,
300
    "Allow partial matches?" boolean,
301
    "Sort by source" boolean,
302
    "Constrain by higher taxonomy" boolean
303
);
304

    
305

    
306
--
307
-- Name: TABLE batch_download_settings; Type: COMMENT; Schema: TNRS; Owner: -
308
--
309

    
310
COMMENT ON TABLE batch_download_settings IS 'stores data from http://tnrs.iplantcollaborative.org/TNRSapp.html > Submit List > results section > Download settings > settings.txt';
311

    
312

    
313
--
314
-- Name: client_version; Type: TABLE; Schema: TNRS; Owner: -; Tablespace: 
315
--
316

    
317
CREATE TABLE client_version (
318
    id text NOT NULL,
319
    global_rev integer NOT NULL,
320
    "/lib/tnrs.py rev" integer,
321
    "/bin/tnrs_db rev" integer
322
);
323

    
324

    
325
--
326
-- Name: TABLE client_version; Type: COMMENT; Schema: TNRS; Owner: -
327
--
328

    
329
COMMENT ON TABLE client_version IS 'contains svn revisions';
330

    
331

    
332
--
333
-- Name: COLUMN client_version.global_rev; Type: COMMENT; Schema: TNRS; Owner: -
334
--
335

    
336
COMMENT ON COLUMN client_version.global_rev IS 'from `svn info .` > Last Changed Rev';
337

    
338

    
339
--
340
-- Name: COLUMN client_version."/lib/tnrs.py rev"; Type: COMMENT; Schema: TNRS; Owner: -
341
--
342

    
343
COMMENT ON COLUMN client_version."/lib/tnrs.py rev" IS 'from `svn info lib/tnrs.py` > Last Changed Rev';
344

    
345

    
346
--
347
-- Name: COLUMN client_version."/bin/tnrs_db rev"; Type: COMMENT; Schema: TNRS; Owner: -
348
--
349

    
350
COMMENT ON COLUMN client_version."/bin/tnrs_db rev" IS 'from `svn info bin/tnrs_db` > Last Changed Rev';
351

    
352

    
353
--
354
-- Name: ~Source.map; Type: TABLE; Schema: TNRS; Owner: -; Tablespace: 
355
--
356

    
357
CREATE TABLE "~Source.map" (
358
    "from" text NOT NULL,
359
    "to" text,
360
    filter text,
361
    notes text
362
);
363

    
364

    
365
--
366
-- Name: Source_pkey; Type: CONSTRAINT; Schema: TNRS; Owner: -; Tablespace: 
367
--
368

    
369
ALTER TABLE ONLY "Source"
370
    ADD CONSTRAINT "Source_pkey" PRIMARY KEY ("*row_num");
371

    
372

    
373
--
374
-- Name: batch_download_settings_pkey; Type: CONSTRAINT; Schema: TNRS; Owner: -; Tablespace: 
375
--
376

    
377
ALTER TABLE ONLY batch_download_settings
378
    ADD CONSTRAINT batch_download_settings_pkey PRIMARY KEY (id);
379

    
380

    
381
--
382
-- Name: batch_id_by_time_key; Type: CONSTRAINT; Schema: TNRS; Owner: -; Tablespace: 
383
--
384

    
385
ALTER TABLE ONLY batch
386
    ADD CONSTRAINT batch_id_by_time_key UNIQUE (id_by_time);
387

    
388

    
389
--
390
-- Name: batch_pkey; Type: CONSTRAINT; Schema: TNRS; Owner: -; Tablespace: 
391
--
392

    
393
ALTER TABLE ONLY batch
394
    ADD CONSTRAINT batch_pkey PRIMARY KEY (id);
395

    
396

    
397
--
398
-- Name: client_version_pkey; Type: CONSTRAINT; Schema: TNRS; Owner: -; Tablespace: 
399
--
400

    
401
ALTER TABLE ONLY client_version
402
    ADD CONSTRAINT client_version_pkey PRIMARY KEY (id);
403

    
404

    
405
--
406
-- Name: tnrs_Name_submitted_key; Type: CONSTRAINT; Schema: TNRS; Owner: -; Tablespace: 
407
--
408

    
409
ALTER TABLE ONLY tnrs
410
    ADD CONSTRAINT "tnrs_Name_submitted_key" UNIQUE ("Name_submitted");
411

    
412

    
413
--
414
-- Name: tnrs_pkey; Type: CONSTRAINT; Schema: TNRS; Owner: -; Tablespace: 
415
--
416

    
417
ALTER TABLE ONLY tnrs
418
    ADD CONSTRAINT tnrs_pkey PRIMARY KEY (batch, "Name_number");
419

    
420

    
421
--
422
-- Name: ~Source.map_from_key; Type: CONSTRAINT; Schema: TNRS; Owner: -; Tablespace: 
423
--
424

    
425
ALTER TABLE ONLY "~Source.map"
426
    ADD CONSTRAINT "~Source.map_from_key" UNIQUE ("from");
427

    
428

    
429
--
430
-- Name: ~Source.map_to_key; Type: CONSTRAINT; Schema: TNRS; Owner: -; Tablespace: 
431
--
432

    
433
ALTER TABLE ONLY "~Source.map"
434
    ADD CONSTRAINT "~Source.map_to_key" UNIQUE ("to");
435

    
436

    
437
--
438
-- Name: tnrs_score_ok; Type: INDEX; Schema: TNRS; Owner: -; Tablespace: 
439
--
440

    
441
CREATE UNIQUE INDEX tnrs_score_ok ON tnrs USING btree ("Name_submitted") WHERE score_ok("Max_score");
442

    
443

    
444
--
445
-- Name: batch__fill; Type: TRIGGER; Schema: TNRS; Owner: -
446
--
447

    
448
CREATE TRIGGER batch__fill BEFORE INSERT OR UPDATE ON batch FOR EACH ROW EXECUTE PROCEDURE batch__fill();
449

    
450

    
451
--
452
-- Name: map_filter_insert; Type: TRIGGER; Schema: TNRS; Owner: -
453
--
454

    
455
CREATE TRIGGER map_filter_insert BEFORE INSERT ON "~Source.map" FOR EACH ROW EXECUTE PROCEDURE util.map_filter_insert();
456

    
457
ALTER TABLE "~Source.map" DISABLE TRIGGER map_filter_insert;
458

    
459

    
460
--
461
-- Name: tnrs_populate_fields; Type: TRIGGER; Schema: TNRS; Owner: -
462
--
463

    
464
CREATE TRIGGER tnrs_populate_fields BEFORE INSERT OR UPDATE ON tnrs FOR EACH ROW EXECUTE PROCEDURE tnrs_populate_fields();
465

    
466

    
467
--
468
-- Name: batch_client_version_fkey; Type: FK CONSTRAINT; Schema: TNRS; Owner: -
469
--
470

    
471
ALTER TABLE ONLY batch
472
    ADD CONSTRAINT batch_client_version_fkey FOREIGN KEY (client_version) REFERENCES client_version(id) ON UPDATE CASCADE ON DELETE CASCADE;
473

    
474

    
475
--
476
-- Name: batch_download_settings_id_fkey; Type: FK CONSTRAINT; Schema: TNRS; Owner: -
477
--
478

    
479
ALTER TABLE ONLY batch_download_settings
480
    ADD CONSTRAINT batch_download_settings_id_fkey FOREIGN KEY (id) REFERENCES batch(id) ON UPDATE CASCADE ON DELETE CASCADE;
481

    
482

    
483
--
484
-- Name: tnrs_batch_fkey; Type: FK CONSTRAINT; Schema: TNRS; Owner: -
485
--
486

    
487
ALTER TABLE ONLY tnrs
488
    ADD CONSTRAINT tnrs_batch_fkey FOREIGN KEY (batch) REFERENCES batch(id) ON UPDATE CASCADE ON DELETE CASCADE;
489

    
490

    
491
--
492
-- Name: TNRS; Type: ACL; Schema: -; Owner: -
493
--
494

    
495
REVOKE ALL ON SCHEMA "TNRS" FROM PUBLIC;
496
REVOKE ALL ON SCHEMA "TNRS" FROM bien;
497
GRANT ALL ON SCHEMA "TNRS" TO bien;
498
GRANT USAGE ON SCHEMA "TNRS" TO bien_read;
499

    
500

    
501
--
502
-- Name: tnrs; Type: ACL; Schema: TNRS; Owner: -
503
--
504

    
505
REVOKE ALL ON TABLE tnrs FROM PUBLIC;
506
REVOKE ALL ON TABLE tnrs FROM bien;
507
GRANT ALL ON TABLE tnrs TO bien;
508
GRANT SELECT ON TABLE tnrs TO bien_read;
509

    
510

    
511
--
512
-- PostgreSQL database dump complete
513
--
514

    
(8-8/10)