Welcome to mirror list, hosted at ThFree Co, Russian Federation.

GHTDB.PostgreSQL.sql « System.Data.OleDb.jvm « ProviderTests « Test « System.Data « class « mcs - github.com/mono/mono.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 38e14e8c0174d41886e929fd9a24b098262e7d9f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
DROP FUNCTION GHSP_TYPES_SIMPLE_1(BOOL, INT2, INT4, INT8, NUMERIC, FLOAT4, FLOAT8, VARCHAR, CHAR, NCHAR);
DROP FUNCTION GHSP_TYPES_SIMPLE_4(VARCHAR);
DROP FUNCTION GHSP_TYPES_SIMPLE_5();
DROP FUNCTION GH_DUMMY(NUMERIC);
DROP FUNCTION GH_REFCURSOR1();
DROP FUNCTION GH_REFCURSOR2(integer);
DROP FUNCTION GH_REFCURSOR3(varchar);
DROP FUNCTION gh_createtable();
DROP FUNCTION GH_MULTIRECORDSETS();

DROP VIEW products_above_average_price;
DROP VIEW current_product_list;

DROP TABLE categories;
DROP TABLE customercustomerdemo;
DROP TABLE customerdemographics;
DROP TABLE customers;
DROP TABLE employees;
DROP TABLE employeeterritories;
DROP TABLE gh_emptytable;
DROP TABLE "Order Details";
DROP TABLE orders;
DROP TABLE products;
DROP TABLE region;
DROP TABLE Results;
DROP TABLE shippers;
DROP TABLE shoppingcart;
DROP TABLE suppliers;
DROP TABLE territories;
DROP TABLE TYPES_SIMPLE;
DROP TABLE TYPES_EXTENDED;
DROP TABLE TYPES_SPECIFIC;


-- Create tables
----------------------------------------------------------------
CREATE TABLE categories (
  categoryid   serial unique NOT NULL,
  categoryname VARCHAR(30) NOT NULL,
  description  VARCHAR(4000)         NULL
)
WITHOUT OIDS;


CREATE INDEX categoryname
  ON categories (
    categoryname
);

CREATE TABLE customercustomerdemo (
  customerid     CHAR(10) NOT NULL,
  customertypeid CHAR(20) NOT NULL
)
WITHOUT OIDS;


ALTER TABLE customercustomerdemo
  ADD CONSTRAINT pk_customercustomerdemo UNIQUE (
    customerid,
    customertypeid
);

CREATE TABLE customerdemographics (
  customertypeid CHAR(20) NOT NULL,
  customerdesc   VARCHAR(4000)     NULL
)
WITHOUT OIDS;


ALTER TABLE customerdemographics
  ADD CONSTRAINT pk_customerdemographics UNIQUE (
    customertypeid
);

CREATE TABLE customers (
  customerid   CHAR(10)      NOT NULL,
  companyname  VARCHAR(80)  NOT NULL,
  contactname  VARCHAR(60)  NULL,
  contacttitle VARCHAR(60)  NULL,
  address      VARCHAR(120) NULL,
  city         VARCHAR(30)  NULL,
  region       VARCHAR(30)  NULL,
  postalcode   VARCHAR(20)  NULL,
  country      VARCHAR(30)  NULL,
  phone        VARCHAR(48)  NULL,
  fax          VARCHAR(48)  NULL
)
WITHOUT OIDS;

CREATE INDEX city
  ON customers (
    city
);

CREATE INDEX companyname_1
  ON customers (
    companyname
);

CREATE INDEX postalcode_2
  ON customers (
    postalcode
);

CREATE INDEX ix_region
  ON customers (
    region
);

ALTER TABLE customers
  ADD CONSTRAINT uk_customers_customerid UNIQUE (
    customerid
);

CREATE TABLE employees (
  employeeid      numeric(10,0)  NOT NULL,
  lastname        VARCHAR(40)  NOT NULL,
  firstname       VARCHAR(20)  NOT NULL,
  title           VARCHAR(60)  NULL,
  titleofcourtesy VARCHAR(50)  NULL,
  birthdate       Timestamp    NULL,
  hiredate        Timestamp    NULL,
  address         VARCHAR(120) NULL,
  city            VARCHAR(30)  NULL,
  region          VARCHAR(30)  NULL,
  postalcode      VARCHAR(20)  NULL,
  country         VARCHAR(30)  NULL,
  homephone       VARCHAR(48)  NULL,
  extension       VARCHAR(8)   NULL,
  notes           VARCHAR(4000)          NULL,
  reportsto       numeric(10,0)  NULL,
  photopath       VARCHAR(510) NULL,
  mycolumn        numeric(10,0)  NULL
)
WITHOUT OIDS;


CREATE INDEX lastname
  ON employees (
    lastname
);

CREATE INDEX postalcode_1
  ON employees (
    postalcode
);

ALTER TABLE employees
  ADD CONSTRAINT pk_employees UNIQUE (
    employeeid
);


CREATE TABLE employeeterritories (
  employeeid  numeric(10,0) NOT NULL,
  territoryid VARCHAR(40) NOT NULL
)
WITHOUT OIDS;


CREATE TABLE gh_emptytable (
  col1 INTEGER      NULL,
  col2 VARCHAR(50) NULL
)
WITHOUT OIDS;


CREATE TABLE "Order Details" (
  orderid   numeric(10,0) NOT NULL,
  productid numeric(10,0) NOT NULL,
  unitprice numeric(19,4) NOT NULL,
  quantity  numeric(5,0)  NOT NULL,
  discount  FLOAT(53)   NOT NULL
)
WITHOUT OIDS;


CREATE TABLE orders (
  orderid        numeric(10,0)  NOT NULL,
  customerid     NCHAR(5)      NULL,
  employeeid     numeric(10,0)  NULL,
  orderdate      DATE          NULL,
  requireddate   DATE          NULL,
  shippeddate    DATE          NULL,
  shipvia        numeric(10,0)  NULL,
  freight        numeric(19,4)  NULL,
  shipname       VARCHAR(40) NULL,
  shipaddress    VARCHAR(60) NULL,
  shipcity       VARCHAR(15) NULL,
  shipregion     VARCHAR(15) NULL,
  shippostalcode VARCHAR(10) NULL,
  shipcountry    VARCHAR(15) NULL
)
WITHOUT OIDS;

ALTER TABLE orders
  ADD CONSTRAINT orders_uk11075049410018 UNIQUE (
    orderid
);


ALTER TABLE orders
  ADD CONSTRAINT orders_fk21075049699981 FOREIGN KEY (
    orderid
  ) REFERENCES orders (
    orderid
);


CREATE TABLE products (
  productid       serial unique NOT NULL,
  productname     VARCHAR(80) NOT NULL,
  supplierid      numeric(10,0) NULL,
  categoryid      numeric(10,0) NULL,
  quantityperunit VARCHAR(40) NULL,
  unitprice       numeric(19,4) DEFAULT (0) NULL,
  unitsinstock    numeric(5,0)  DEFAULT (0) NULL,
  unitsonorder    numeric(5,0)  DEFAULT (0) NULL,
  reorderlevel    numeric(5,0)  DEFAULT (0) NULL,
  discontinued    numeric(1,0)  DEFAULT (0) NOT NULL
)
WITHOUT OIDS;


ALTER TABLE products
  ADD CONSTRAINT ck_products_unitprice CHECK (
    UnitPrice >= 0
);


ALTER TABLE products
  ADD CONSTRAINT ck_reorderlevel CHECK (
    ReorderLevel >= 0
);


ALTER TABLE products
  ADD CONSTRAINT ck_unitsinstock CHECK (
    UnitsInStock >= 0
);


ALTER TABLE products
  ADD CONSTRAINT ck_unitsonorder CHECK (
    UnitsOnOrder >= 0
);


CREATE INDEX categoryid
  ON products (
    categoryid
);


CREATE INDEX productname
  ON products (
    productname
);


CREATE INDEX suppliersproducts
  ON products (
    supplierid
);


CREATE TABLE region (
  regionid          numeric(10,0) NOT NULL,
  regiondescription CHAR(100)    NOT NULL
)
WITHOUT OIDS;


CREATE TABLE Results (
  employeeid      numeric(10,0)  NOT NULL,
  lastname        VARCHAR(20)  NOT NULL,
  firstname       VARCHAR(10)  NOT NULL,
  title           VARCHAR(30)  NULL,
  titleofcourtesy VARCHAR(25)  NULL,
  birthdate       DATE          NULL,
  hiredate        DATE          NULL,
  address         VARCHAR(60)  NULL,
  city            VARCHAR(15)  NULL,
  region          VARCHAR(15)  NULL,
  postalcode      VARCHAR(10)  NULL,
  country         VARCHAR(15)  NULL,
  homephone       VARCHAR(24)  NULL,
  extension       VARCHAR(4)   NULL,
  notes           VARCHAR(4000)          NULL,
  reportsto       numeric(10,0)  NULL,
  photopath       VARCHAR(255) NULL,
  mycolumn        numeric(10,0)  NULL
)
WITHOUT OIDS;


CREATE TABLE shippers (
  shipperid   serial unique NOT NULL,
  companyname VARCHAR(80) NOT NULL,
  phone       VARCHAR(48) NULL
)
WITHOUT OIDS;


CREATE TABLE shoppingcart (
  recordid    serial unique  NOT NULL,
  cartid      VARCHAR(100) NULL,
  quantity    numeric(10,0)  DEFAULT (1) NOT NULL,
  productid   numeric(10,0)  NOT NULL,
  datecreated TIMESTAMP  DEFAULT (CURRENT_TIMESTAMP) NOT NULL
)
WITHOUT OIDS;


CREATE TABLE suppliers (
  supplierid   serial unique  NOT NULL,
  companyname  VARCHAR(80)  NOT NULL,
  contactname  VARCHAR(60)  NULL,
  contacttitle VARCHAR(60)  NULL,
  address      VARCHAR(120) NULL,
  city         VARCHAR(30)  NULL,
  region       VARCHAR(30)  NULL,
  postalcode   VARCHAR(20)  NULL,
  country      VARCHAR(30)  NULL,
  phone        VARCHAR(48)  NULL,
  fax          VARCHAR(48)  NULL,
  homepage     VARCHAR(4000)          NULL
)
WITHOUT OIDS;


CREATE INDEX companyname
  ON suppliers (
    companyname
);

CREATE INDEX postalcode
  ON suppliers (
    postalcode
);

CREATE TABLE territories (
  territoryid          VARCHAR(40) NOT NULL,
  territorydescription CHAR(100)    NOT NULL,
  regionid             numeric(10,0) NOT NULL
)
WITHOUT OIDS;

CREATE TABLE TYPES_SIMPLE (
  id char(10),
  t_bool bool,
  t_int2 int2,
  t_int4 int4,
  t_int8 int8,
  t_numeric numeric(10),
  t_float4 float4,
  t_float8 float8,
  t_varchar varchar(50),
  t_char char(10),
  t_nchar char(10)
)
WITHOUT OIDS;

CREATE TABLE TYPES_EXTENDED (
  id char(10),
  t_bytea bytea,
  t_date date,
  t_text text,
  t_time time,
  t_timestamp timestamp
)
WITHOUT OIDS;

CREATE TABLE TYPES_SPECIFIC (
  id char(10),
  t_bit bit(1),
  t_box box,
  t_cidr cidr,
  t_circle circle,
  t_inet inet,
  t_interval interval (6),  
  t_line line,
  t_lseg lseg,
  t_macaddr macaddr,
  t_money money,
  t_path path,
  t_point point,
  t_polygon polygon,
  t_serial serial,
  t_bigserial bigserial,
  t_timetz timetz,  
  t_timestamptz timestamptz
)
WITHOUT OIDS;

-- Create views
----------------------------------------------------------------
CREATE OR REPLACE VIEW products_above_average_price (
  productname,
  unitprice
) AS
SELECT  Products.ProductName, Products.UnitPrice
 FROM Products
	WHERE Products.UnitPrice > (
		SELECT  AVG(UnitPrice)
		 FROM Products  );


CREATE OR REPLACE VIEW current_product_list (
  productid,
  productname
) AS
SELECT  Product_List.ProductID, Product_List.ProductName
 FROM Products Product_List
	WHERE
	(
	(( Product_List.Discontinued ) = 0));


-- Create functions
----------------------------------------------------------------
CREATE FUNCTION GH_MULTIRECORDSETS() RETURNS SETOF refcursor AS $$
DECLARE 
	rct1 refcursor;
	rct2 refcursor;
	rct3 refcursor;
BEGIN
	OPEN rct1 FOR
	SELECT EmployeeId, LastName FROM Employees where EmployeeId in (1,2) ORDER BY EMPLOYEEID ASC;
	RETURN NEXT rct1;

	OPEN rct2 FOR
	SELECT CustomerId, CompanyName,ContactName FROM Customers  where CustomerId in ('MORGK','NORTS') ORDER BY CustomerId ASC;
	RETURN NEXT rct2;

	OPEN rct3 FOR
	SELECT OrderId, ShipAddress,ShipVia, ShipCity FROM Orders where OrderId=-1  ;
	RETURN NEXT rct3;
	RETURN;
END;
$$ LANGUAGE 'plpgsql';

CREATE FUNCTION gh_createtable() RETURNS void AS $$
BEGIN
  --craete a temporary table
  execute 'Create Table temp_tbl (Col1 int,Col2 int)';
  --insert values to the table
  execute 'insert into temp_tbl values (11,12)';
  execute 'insert into temp_tbl values (21,22)';
  execute 'insert into temp_tbl values (31,32)';
  --execute select on the created table
  execute 'select col1 as Value1, col2 as Value2 from temp_tbl';
  execute 'drop table temp_tbl';
  RETURN;
END;
$$ LANGUAGE 'plpgsql';

CREATE FUNCTION GH_REFCURSOR1() RETURNS refcursor AS $$
DECLARE 
	rct1 refcursor;
BEGIN
	OPEN rct1 FOR
	SELECT EmployeeId, LastName FROM Employees where EmployeeId = 1;
	RETURN rct1;
END;
$$ LANGUAGE 'plpgsql';


CREATE FUNCTION GH_REFCURSOR2(integer) RETURNS refcursor AS $$
DECLARE 
	rct1 refcursor;
BEGIN
	OPEN rct1 FOR
	SELECT EmployeeId, LastName FROM Employees where EmployeeId = $1;
	RETURN rct1;
END;
$$ LANGUAGE 'plpgsql';

CREATE FUNCTION GH_REFCURSOR3(varchar) RETURNS refcursor AS $$
DECLARE 
	rct1 refcursor;
BEGIN
	OPEN rct1 FOR
	SELECT EmployeeId, LastName FROM Employees where LastName = $1;
	RETURN rct1;
END;
$$ LANGUAGE 'plpgsql';

CREATE FUNCTION GHSP_TYPES_SIMPLE_1(BOOL, INT2, INT4, INT8, NUMERIC, FLOAT4, FLOAT8, VARCHAR, CHAR, NCHAR)  RETURNS refcursor AS $$
DECLARE 
	rct1 refcursor;
BEGIN
	OPEN rct1 FOR
	SELECT $1 as T_BOOL, $2 as T_INT2, $3 as T_INT4, $4 as T_INT8, $5 as T_NUMERIC, $6 as T_FLOAT4, $7 as T_FLOAT8, $8 as T_VARCHAR, $9 as T_CHAR, $10 as T_NCHAR;
	RETURN rct1;
END
$$  LANGUAGE 'plpgsql';

CREATE FUNCTION GHSP_TYPES_SIMPLE_4(VARCHAR) RETURNS SETOF refcursor AS $$
DECLARE
	rct1 refcursor;
	rct2 refcursor;
	rct3 refcursor;
BEGIN

	insert into TYPES_SIMPLE(ID,t_numeric) values ($1,50);
	
	OPEN rct1 FOR
	SELECT * FROM TYPES_SIMPLE where ID = $1;
	RETURN NEXT rct1;

	update TYPES_SIMPLE set t_numeric=60 where Id = $1;

	OPEN rct2 FOR
	SELECT * FROM TYPES_SIMPLE where ID = $1;
	RETURN NEXT rct2;

	delete from TYPES_SIMPLE where ID = $1;

	OPEN rct3 FOR
	SELECT * FROM TYPES_SIMPLE where ID = $1;
	RETURN NEXT rct3;

	RETURN;
END;
$$ LANGUAGE 'plpgsql';

CREATE FUNCTION GHSP_TYPES_SIMPLE_5() RETURNS refcursor AS $$
DECLARE 
   rct1 refcursor;
   T_BOOL    boolean        :=true;
   T_INT2      int2           := 21;
   T_INT4      int4           := 30000;
   T_INT8      int8           := 30001;
   T_NUMERIC	NUMERIC(10)    := 100000;
   T_FLOAT4    	FLOAT4      := 7.23157;
   T_FLOAT8		FLOAT8         := 7.123456;
   T_VARCHAR   	VARCHAR(10)    := 'qwertasdfg';
   T_CHAR	CHAR(10)       := 'abcdefghij';
   T_NCHAR	NCHAR(10)       := 'klmnopqrst';
 
BEGIN
  OPEN rct1 FOR
  SELECT T_BOOL, T_INT2, T_INT4, T_INT8, T_NUMERIC, T_FLOAT4, T_FLOAT8, T_VARCHAR, T_CHAR, T_NCHAR;
  RETURN rct1;
END;
$$ LANGUAGE 'plpgsql';


CREATE FUNCTION GH_DUMMY(NUMERIC) RETURNS refcursor AS $$
DECLARE 
   rct1 refcursor;
 
BEGIN
  OPEN rct1 FOR
  SELECT EMPLOYEEID,
         LASTNAME, 
         FIRSTNAME, 
         TITLE, 
         TITLEOFCOURTESY, 
         BIRTHDATE, 
         HIREDATE, 
         ADDRESS, 
         CITY, 
         REGION, 
         POSTALCODE, 
         COUNTRY, 
         HOMEPHONE, 
         EXTENSION, 
         REPORTSTO, 
         PHOTOPATH, 
         MYCOLUMN
  	FROM EMPLOYEES where EmployeeID > $1;
  RETURN rct1;
END;
$$ LANGUAGE 'plpgsql';