summaryrefslogtreecommitdiff
path: root/src/test/regress/expected/arrays.out
blob: 11e126a457e74c0e8545a518ecd52f32fa296904 (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
--
-- ARRAYS
--
CREATE TABLE arrtest (
	a 			int2[],
	b 			int4[][][],
	c 			name[],
	d			text[][], 
	e 			float8[],
	f			char(5)[],
	g			varchar(5)[]
);
--
-- only this array as a 0-based 'e', the others are 1-based.
-- 'e' is also a large object.
--
INSERT INTO arrtest (a[5], b[2][1][2], c, d, f, g)
   VALUES ('{1,2,3,4,5}', '{{{0,0},{1,2}}}', '{}', '{}', '{}', '{}');
UPDATE arrtest SET e[0] = '1.1';
UPDATE arrtest SET e[1] = '2.2';
INSERT INTO arrtest (f)
   VALUES ('{"too long"}');
ERROR:  value too long for type character(5)
INSERT INTO arrtest (a, b[2][2][1], c, d, e, f, g)
   VALUES ('{11,12,23}', '{{3,4},{4,5}}', '{"foobar"}', 
           '{{"elt1", "elt2"}}', '{"3.4", "6.7"}',
           '{"abc","abcde"}', '{"abc","abcde"}');
INSERT INTO arrtest (a, b[1][2][2], c, d[2][1])
   VALUES ('{}', '{3,4}', '{foo,bar}', '{bar,foo}');
SELECT * FROM arrtest;
      a      |        b        |     c     |       d       |     e     |        f        |      g      
-------------+-----------------+-----------+---------------+-----------+-----------------+-------------
 {1,2,3,4,5} | {{{0,0},{1,2}}} | {}        | {}            |           | {}              | {}
 {11,12,23}  | {{3,4},{4,5}}   | {foobar}  | {{elt1,elt2}} | {3.4,6.7} | {"abc  ",abcde} | {abc,abcde}
 {}          | {3,4}           | {foo,bar} | {bar,foo}     |           |                 | 
(3 rows)

SELECT arrtest.a[1],
          arrtest.b[1][1][1],
          arrtest.c[1],
          arrtest.d[1][1], 
          arrtest.e[0]
   FROM arrtest;
 a  | b |   c    |  d   | e 
----+---+--------+------+---
  1 | 0 |        |      |  
 11 |   | foobar | elt1 |  
    |   | foo    |      |  
(3 rows)

SELECT a[1], b[1][1][1], c[1], d[1][1], e[0]
   FROM arrtest;
 a  | b |   c    |  d   | e 
----+---+--------+------+---
  1 | 0 |        |      |  
 11 |   | foobar | elt1 |  
    |   | foo    |      |  
(3 rows)

SELECT a[1:3],
          b[1:1][1:2][1:2],
          c[1:2], 
          d[1:1][1:2]
   FROM arrtest;
     a      |        b        |     c     |       d       
------------+-----------------+-----------+---------------
 {1,2,3}    | {{{0,0},{1,2}}} |           | 
 {11,12,23} |                 | {foobar}  | {{elt1,elt2}}
            |                 | {foo,bar} | 
(3 rows)

SELECT array_dims(a) AS a,array_dims(b) AS b,array_dims(c) AS c
   FROM arrtest;
   a   |        b        |   c   
-------+-----------------+-------
 [1:5] | [1:1][1:2][1:2] | 
 [1:3] | [1:2][1:2]      | [1:1]
       | [1:2]           | [1:2]
(3 rows)

-- returns nothing 
SELECT *
   FROM arrtest
   WHERE a[1] < 5 and 
         c = '{"foobar"}'::_name;
 a | b | c | d | e | f | g 
---+---+---+---+---+---+---
(0 rows)

UPDATE arrtest
  SET a[1:2] = '{16,25}'
  WHERE NOT a = '{}'::_int2;
UPDATE arrtest
  SET b[1:1][1:1][1:2] = '{113, 117}',
      b[1:1][1:2][2:2] = '{142, 147}'
  WHERE array_dims(b) = '[1:1][1:2][1:2]';
UPDATE arrtest
  SET c[2:2] = '{"new_word"}'
  WHERE array_dims(c) is not null;
SELECT a,b,c FROM arrtest;
       a       |           b           |         c         
---------------+-----------------------+-------------------
 {16,25,3,4,5} | {{{113,142},{1,147}}} | {}
 {}            | {3,4}                 | {foo,new_word}
 {16,25,23}    | {{3,4},{4,5}}         | {foobar,new_word}
(3 rows)

SELECT a[1:3],
          b[1:1][1:2][1:2],
          c[1:2], 
          d[1:1][2:2]
   FROM arrtest;
     a      |           b           |         c         |    d     
------------+-----------------------+-------------------+----------
 {16,25,3}  | {{{113,142},{1,147}}} |                   | 
            |                       | {foo,new_word}    | 
 {16,25,23} |                       | {foobar,new_word} | {{elt2}}
(3 rows)