Annotation of embedaddon/php/ext/pdo_pgsql/tests/copy_from.phpt, revision 1.1.1.1
1.1 misho 1: --TEST--
2: PDO PgSQL pgsqlCopyFromArray and pgsqlCopyFromFile
3: --SKIPIF--
4: <?php # vim:se ft=php:
5: if (!extension_loaded('pdo') || !extension_loaded('pdo_pgsql')) die('skip not loaded');
6: require dirname(__FILE__) . '/config.inc';
7: require dirname(__FILE__) . '/../../../ext/pdo/tests/pdo_test.inc';
8: PDOTest::skip();
9: ?>
10: --FILE--
11: <?php
12: require dirname(__FILE__) . '/../../../ext/pdo/tests/pdo_test.inc';
13: $db = PDOTest::test_factory(dirname(__FILE__) . '/common.phpt');
14: $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
15: $db->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, false);
16:
17: $db->exec('CREATE TABLE test (a integer not null primary key, b text, c integer)');
18:
19: try {
20:
21: echo "Preparing test file and array for CopyFrom tests\n";
22:
23: $tableRows = array();
24: $tableRowsWithDifferentNullValues = array();
25:
26: for($i=0;$i<3;$i++) {
27: $firstParameter = $i;
28: $secondParameter = "test insert {$i}";
29: $tableRows[] = "{$firstParameter}\t{$secondParameter}\t\\N";
30: $tableRowsWithDifferentNullValues[] = "{$firstParameter};{$secondParameter};NULL";
31: $tableRowsWithDifferentNullValuesAndSelectedFields[] = "{$firstParameter};NULL";
32: }
33: $filename = 'test_pgsqlCopyFromFile.csv';
34: $filenameWithDifferentNullValues = 'test_pgsqlCopyFromFileWithDifferentNullValues.csv';
35: $filenameWithDifferentNullValuesAndSelectedFields = 'test_pgsqlCopyFromFileWithDifferentNullValuesAndSelectedFields.csv';
36:
37: file_put_contents($filename, implode("\n",$tableRows));
38: file_put_contents($filenameWithDifferentNullValues, implode("\n",$tableRowsWithDifferentNullValues));
39: file_put_contents($filenameWithDifferentNullValuesAndSelectedFields, implode("\n",$tableRowsWithDifferentNullValuesAndSelectedFields));
40:
41: echo "Testing pgsqlCopyFromArray() with default parameters\n";
42: $db->beginTransaction();
43: var_dump($db->pgsqlCopyFromArray('test',$tableRows));
44:
45: $stmt = $db->query("select * from test");
46: foreach($stmt as $r) {
47: var_dump($r);
48: }
49: $db->rollback();
50:
51: echo "Testing pgsqlCopyFromArray() with different field separator and not null indicator\n";
52: $db->beginTransaction();
53: var_dump($db->pgsqlCopyFromArray('test',$tableRowsWithDifferentNullValues,";","NULL"));
54: $stmt = $db->query("select * from test");
55: foreach($stmt as $r) {
56: var_dump($r);
57: }
58: $db->rollback();
59:
60: echo "Testing pgsqlCopyFromArray() with only selected fields\n";
61: $db->beginTransaction();
62: var_dump($db->pgsqlCopyFromArray('test',$tableRowsWithDifferentNullValuesAndSelectedFields,";","NULL",'a,c'));
63: $stmt = $db->query("select * from test");
64: foreach($stmt as $r) {
65: var_dump($r);
66: }
67: $db->rollback();
68:
69: echo "Testing pgsqlCopyFromArray() with error\n";
70: $db->beginTransaction();
71: var_dump($db->pgsqlCopyFromArray('test_error',$tableRowsWithDifferentNullValuesAndSelectedFields,";","NULL",'a,c'));
72: $db->rollback();
73:
74:
75: echo "Testing pgsqlCopyFromFile() with default parameters\n";
76: $db->beginTransaction();
77: var_dump($db->pgsqlCopyFromFile('test',$filename));
78:
79: $stmt = $db->query("select * from test");
80: foreach($stmt as $r) {
81: var_dump($r);
82: }
83: $db->rollback();
84:
85: echo "Testing pgsqlCopyFromFile() with different field separator and not null indicator\n";
86: $db->beginTransaction();
87: var_dump($db->pgsqlCopyFromFile('test',$filenameWithDifferentNullValues,";","NULL"));
88: $stmt = $db->query("select * from test");
89: foreach($stmt as $r) {
90: var_dump($r);
91: }
92: $db->rollback();
93:
94: echo "Testing pgsqlCopyFromFile() with only selected fields\n";
95: $db->beginTransaction();
96: var_dump($db->pgsqlCopyFromFile('test',$filenameWithDifferentNullValuesAndSelectedFields,";","NULL",'a,c'));
97: $stmt = $db->query("select * from test");
98: foreach($stmt as $r) {
99: var_dump($r);
100: }
101: $db->rollback();
102:
103: echo "Testing pgsqlCopyFromFile() with error\n";
104: $db->beginTransaction();
105: var_dump($db->pgsqlCopyFromFile('test_error',$filenameWithDifferentNullValuesAndSelectedFields,";","NULL",'a,c'));
106: $db->rollback();
107:
108: } catch (Exception $e) {
109: /* catch exceptions so that we can show the relative error */
110: echo "Exception! at line ", $e->getLine(), "\n";
111: var_dump($e->getMessage());
112: }
113: if(isset($filename)) {
114: @unlink($filename);
115: }
116: ?>
117: --EXPECT--
118: Preparing test file and array for CopyFrom tests
119: Testing pgsqlCopyFromArray() with default parameters
120: bool(true)
121: array(6) {
122: ["a"]=>
123: int(0)
124: [0]=>
125: int(0)
126: ["b"]=>
127: string(13) "test insert 0"
128: [1]=>
129: string(13) "test insert 0"
130: ["c"]=>
131: NULL
132: [2]=>
133: NULL
134: }
135: array(6) {
136: ["a"]=>
137: int(1)
138: [0]=>
139: int(1)
140: ["b"]=>
141: string(13) "test insert 1"
142: [1]=>
143: string(13) "test insert 1"
144: ["c"]=>
145: NULL
146: [2]=>
147: NULL
148: }
149: array(6) {
150: ["a"]=>
151: int(2)
152: [0]=>
153: int(2)
154: ["b"]=>
155: string(13) "test insert 2"
156: [1]=>
157: string(13) "test insert 2"
158: ["c"]=>
159: NULL
160: [2]=>
161: NULL
162: }
163: Testing pgsqlCopyFromArray() with different field separator and not null indicator
164: bool(true)
165: array(6) {
166: ["a"]=>
167: int(0)
168: [0]=>
169: int(0)
170: ["b"]=>
171: string(13) "test insert 0"
172: [1]=>
173: string(13) "test insert 0"
174: ["c"]=>
175: NULL
176: [2]=>
177: NULL
178: }
179: array(6) {
180: ["a"]=>
181: int(1)
182: [0]=>
183: int(1)
184: ["b"]=>
185: string(13) "test insert 1"
186: [1]=>
187: string(13) "test insert 1"
188: ["c"]=>
189: NULL
190: [2]=>
191: NULL
192: }
193: array(6) {
194: ["a"]=>
195: int(2)
196: [0]=>
197: int(2)
198: ["b"]=>
199: string(13) "test insert 2"
200: [1]=>
201: string(13) "test insert 2"
202: ["c"]=>
203: NULL
204: [2]=>
205: NULL
206: }
207: Testing pgsqlCopyFromArray() with only selected fields
208: bool(true)
209: array(6) {
210: ["a"]=>
211: int(0)
212: [0]=>
213: int(0)
214: ["b"]=>
215: NULL
216: [1]=>
217: NULL
218: ["c"]=>
219: NULL
220: [2]=>
221: NULL
222: }
223: array(6) {
224: ["a"]=>
225: int(1)
226: [0]=>
227: int(1)
228: ["b"]=>
229: NULL
230: [1]=>
231: NULL
232: ["c"]=>
233: NULL
234: [2]=>
235: NULL
236: }
237: array(6) {
238: ["a"]=>
239: int(2)
240: [0]=>
241: int(2)
242: ["b"]=>
243: NULL
244: [1]=>
245: NULL
246: ["c"]=>
247: NULL
248: [2]=>
249: NULL
250: }
251: Testing pgsqlCopyFromArray() with error
252: bool(false)
253: Testing pgsqlCopyFromFile() with default parameters
254: bool(true)
255: array(6) {
256: ["a"]=>
257: int(0)
258: [0]=>
259: int(0)
260: ["b"]=>
261: string(13) "test insert 0"
262: [1]=>
263: string(13) "test insert 0"
264: ["c"]=>
265: NULL
266: [2]=>
267: NULL
268: }
269: array(6) {
270: ["a"]=>
271: int(1)
272: [0]=>
273: int(1)
274: ["b"]=>
275: string(13) "test insert 1"
276: [1]=>
277: string(13) "test insert 1"
278: ["c"]=>
279: NULL
280: [2]=>
281: NULL
282: }
283: array(6) {
284: ["a"]=>
285: int(2)
286: [0]=>
287: int(2)
288: ["b"]=>
289: string(13) "test insert 2"
290: [1]=>
291: string(13) "test insert 2"
292: ["c"]=>
293: NULL
294: [2]=>
295: NULL
296: }
297: Testing pgsqlCopyFromFile() with different field separator and not null indicator
298: bool(true)
299: array(6) {
300: ["a"]=>
301: int(0)
302: [0]=>
303: int(0)
304: ["b"]=>
305: string(13) "test insert 0"
306: [1]=>
307: string(13) "test insert 0"
308: ["c"]=>
309: NULL
310: [2]=>
311: NULL
312: }
313: array(6) {
314: ["a"]=>
315: int(1)
316: [0]=>
317: int(1)
318: ["b"]=>
319: string(13) "test insert 1"
320: [1]=>
321: string(13) "test insert 1"
322: ["c"]=>
323: NULL
324: [2]=>
325: NULL
326: }
327: array(6) {
328: ["a"]=>
329: int(2)
330: [0]=>
331: int(2)
332: ["b"]=>
333: string(13) "test insert 2"
334: [1]=>
335: string(13) "test insert 2"
336: ["c"]=>
337: NULL
338: [2]=>
339: NULL
340: }
341: Testing pgsqlCopyFromFile() with only selected fields
342: bool(true)
343: array(6) {
344: ["a"]=>
345: int(0)
346: [0]=>
347: int(0)
348: ["b"]=>
349: NULL
350: [1]=>
351: NULL
352: ["c"]=>
353: NULL
354: [2]=>
355: NULL
356: }
357: array(6) {
358: ["a"]=>
359: int(1)
360: [0]=>
361: int(1)
362: ["b"]=>
363: NULL
364: [1]=>
365: NULL
366: ["c"]=>
367: NULL
368: [2]=>
369: NULL
370: }
371: array(6) {
372: ["a"]=>
373: int(2)
374: [0]=>
375: int(2)
376: ["b"]=>
377: NULL
378: [1]=>
379: NULL
380: ["c"]=>
381: NULL
382: [2]=>
383: NULL
384: }
385: Testing pgsqlCopyFromFile() with error
386: bool(false)
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>