~ubuntu-branches/ubuntu/oneiric/plr/oneiric

« back to all changes in this revision

Viewing changes to doc/plr-data.html

  • Committer: Bazaar Package Importer
  • Author(s): Martin Pitt
  • Date: 2006-07-23 10:21:03 UTC
  • mfrom: (3.1.2 edgy)
  • Revision ID: james.westby@ubuntu.com-20060723102103-bs3qic50imfbhxmt
Tags: 1:0.6.2-4
Build on mips and mipsel again, now that the PostgreSQL SIGBUS problem
turned out to be a kernel bug (which is fixed in 2.6.16).

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
<HTML
2
 
><HEAD
3
 
><TITLE
4
 
>Passing Data Values</TITLE
5
 
><META
6
 
NAME="GENERATOR"
7
 
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
8
 
"><LINK
9
 
REV="MADE"
10
 
HREF="mailto:pgsql-docs@postgresql.org"><LINK
11
 
REL="HOME"
12
 
TITLE="PL/R User's Guide - R Procedural Language"
13
 
HREF="index.html"><LINK
14
 
REL="PREVIOUS"
15
 
TITLE="Functions and Arguments"
16
 
HREF="plr-funcs.html"><LINK
17
 
REL="NEXT"
18
 
TITLE="Using Global Data"
19
 
HREF="plr-global-data.html"><LINK
20
 
REL="STYLESHEET"
21
 
TYPE="text/css"
22
 
HREF="stylesheet.css"><META
23
 
NAME="creation"
24
 
CONTENT="2003-08-25T17:44:28"></HEAD
25
 
><BODY
26
 
CLASS="CHAPTER"
27
 
BGCOLOR="#FFFFFF"
28
 
TEXT="#000000"
29
 
LINK="#0000FF"
30
 
VLINK="#840084"
31
 
ALINK="#0000FF"
32
 
><DIV
33
 
CLASS="NAVHEADER"
34
 
><TABLE
35
 
SUMMARY="Header navigation table"
36
 
WIDTH="100%"
37
 
BORDER="0"
38
 
CELLPADDING="0"
39
 
CELLSPACING="0"
40
 
><TR
41
 
><TH
42
 
COLSPAN="3"
43
 
ALIGN="center"
44
 
>PL/R User's Guide - R Procedural Language</TH
45
 
></TR
46
 
><TR
47
 
><TD
48
 
WIDTH="10%"
49
 
ALIGN="left"
50
 
VALIGN="bottom"
51
 
><A
52
 
HREF="plr-funcs.html"
53
 
ACCESSKEY="P"
54
 
>Prev</A
55
 
></TD
56
 
><TD
57
 
WIDTH="80%"
58
 
ALIGN="center"
59
 
VALIGN="bottom"
60
 
></TD
61
 
><TD
62
 
WIDTH="10%"
63
 
ALIGN="right"
64
 
VALIGN="bottom"
65
 
><A
66
 
HREF="plr-global-data.html"
67
 
ACCESSKEY="N"
68
 
>Next</A
69
 
></TD
70
 
></TR
71
 
></TABLE
72
 
><HR
73
 
ALIGN="LEFT"
74
 
WIDTH="100%"></DIV
75
 
><DIV
76
 
CLASS="CHAPTER"
77
 
><H1
78
 
><A
79
 
NAME="PLR-DATA"
80
 
></A
81
 
>Chapter 4. Passing Data Values</H1
82
 
><P
83
 
>    The argument values supplied to a PL/R function's script are
84
 
    the input arguments converted to a corresponding R form.
85
 
    See <A
86
 
HREF="plr-data.html#PLR-ARGS-TABLE"
87
 
>Table 4-1</A
88
 
>. Scalar PostgreSQL
89
 
    values become single element R vectors. One-dimensional
90
 
    PostgreSQL arrays are converted to multi-element R vectors, two-dimensional
91
 
    PostgreSQL arrays are mapped to R matrixes, and three-dimensional
92
 
    PostgreSQL arrays are converted to three-dimensional R arrays. Greater
93
 
    than three-dimensional arrays are not supported. Composite-types are
94
 
    transformed into R data.frames.
95
 
   </P
96
 
><DIV
97
 
CLASS="TABLE"
98
 
><A
99
 
NAME="PLR-ARGS-TABLE"
100
 
></A
101
 
><P
102
 
><B
103
 
>Table 4-1. Function Arguments</B
104
 
></P
105
 
><TABLE
106
 
BORDER="1"
107
 
CLASS="CALSTABLE"
108
 
><THEAD
109
 
><TR
110
 
><TH
111
 
ALIGN="LEFT"
112
 
VALIGN="TOP"
113
 
>PostgreSQL type</TH
114
 
><TH
115
 
ALIGN="LEFT"
116
 
VALIGN="TOP"
117
 
>R type</TH
118
 
></TR
119
 
></THEAD
120
 
><TBODY
121
 
><TR
122
 
><TD
123
 
ALIGN="LEFT"
124
 
VALIGN="TOP"
125
 
><TT
126
 
CLASS="TYPE"
127
 
>boolean</TT
128
 
></TD
129
 
><TD
130
 
ALIGN="LEFT"
131
 
VALIGN="TOP"
132
 
><TT
133
 
CLASS="TYPE"
134
 
>logical</TT
135
 
></TD
136
 
></TR
137
 
><TR
138
 
><TD
139
 
ALIGN="LEFT"
140
 
VALIGN="TOP"
141
 
><TT
142
 
CLASS="TYPE"
143
 
>int2</TT
144
 
>, <TT
145
 
CLASS="TYPE"
146
 
>int4</TT
147
 
></TD
148
 
><TD
149
 
ALIGN="LEFT"
150
 
VALIGN="TOP"
151
 
><TT
152
 
CLASS="TYPE"
153
 
>integer</TT
154
 
></TD
155
 
></TR
156
 
><TR
157
 
><TD
158
 
ALIGN="LEFT"
159
 
VALIGN="TOP"
160
 
><TT
161
 
CLASS="TYPE"
162
 
>int8</TT
163
 
>, <TT
164
 
CLASS="TYPE"
165
 
>float4</TT
166
 
>, <TT
167
 
CLASS="TYPE"
168
 
>float8</TT
169
 
>,
170
 
              <TT
171
 
CLASS="TYPE"
172
 
>cash</TT
173
 
>, <TT
174
 
CLASS="TYPE"
175
 
>numeric</TT
176
 
></TD
177
 
><TD
178
 
ALIGN="LEFT"
179
 
VALIGN="TOP"
180
 
><TT
181
 
CLASS="TYPE"
182
 
>numeric</TT
183
 
></TD
184
 
></TR
185
 
><TR
186
 
><TD
187
 
ALIGN="LEFT"
188
 
VALIGN="TOP"
189
 
>everything else</TD
190
 
><TD
191
 
ALIGN="LEFT"
192
 
VALIGN="TOP"
193
 
><TT
194
 
CLASS="TYPE"
195
 
>character</TT
196
 
></TD
197
 
></TR
198
 
></TBODY
199
 
></TABLE
200
 
></DIV
201
 
><P
202
 
>    Conversely, the return values are first coerced to R character, and
203
 
    therefore anything that resolves to a string that is acceptable input
204
 
    format for the function's declared return type will produce a result.
205
 
    Similar to argument conversion, there is also a mapping between the
206
 
    dimensionality of the declared PostgreSQL return type and the type of
207
 
    R object. That mapping is shown in 
208
 
    <A
209
 
HREF="plr-data.html#PLR-DATA-RESULTS-DIMS-TABLE"
210
 
>Table 4-2</A
211
 
>
212
 
   </P
213
 
><DIV
214
 
CLASS="TABLE"
215
 
><A
216
 
NAME="PLR-DATA-RESULTS-DIMS-TABLE"
217
 
></A
218
 
><P
219
 
><B
220
 
>Table 4-2. Function Result Dimensionality</B
221
 
></P
222
 
><TABLE
223
 
BORDER="1"
224
 
CLASS="CALSTABLE"
225
 
><THEAD
226
 
><TR
227
 
><TH
228
 
ALIGN="LEFT"
229
 
VALIGN="TOP"
230
 
>PgSQL return type</TH
231
 
><TH
232
 
ALIGN="LEFT"
233
 
VALIGN="TOP"
234
 
>R type</TH
235
 
><TH
236
 
ALIGN="LEFT"
237
 
VALIGN="TOP"
238
 
>Result</TH
239
 
><TH
240
 
ALIGN="LEFT"
241
 
VALIGN="TOP"
242
 
>Example</TH
243
 
></TR
244
 
></THEAD
245
 
><TBODY
246
 
><TR
247
 
><TD
248
 
ALIGN="LEFT"
249
 
VALIGN="TOP"
250
 
><TT
251
 
CLASS="TYPE"
252
 
>scalar</TT
253
 
></TD
254
 
><TD
255
 
ALIGN="LEFT"
256
 
VALIGN="TOP"
257
 
><TT
258
 
CLASS="TYPE"
259
 
>array</TT
260
 
>, <TT
261
 
CLASS="TYPE"
262
 
>matrix</TT
263
 
>, <TT
264
 
CLASS="TYPE"
265
 
>vector</TT
266
 
></TD
267
 
><TD
268
 
ALIGN="LEFT"
269
 
VALIGN="TOP"
270
 
>first column of first row</TD
271
 
><TD
272
 
ALIGN="LEFT"
273
 
VALIGN="TOP"
274
 
>c(1,2,3) in R returns 1 in PostgreSQL</TD
275
 
></TR
276
 
><TR
277
 
><TD
278
 
ALIGN="LEFT"
279
 
VALIGN="TOP"
280
 
><TT
281
 
CLASS="TYPE"
282
 
>setof scalar</TT
283
 
></TD
284
 
><TD
285
 
ALIGN="LEFT"
286
 
VALIGN="TOP"
287
 
><TT
288
 
CLASS="TYPE"
289
 
>1D array</TT
290
 
>, <TT
291
 
CLASS="TYPE"
292
 
>greater than 2D array</TT
293
 
>, <TT
294
 
CLASS="TYPE"
295
 
>vector</TT
296
 
></TD
297
 
><TD
298
 
ALIGN="LEFT"
299
 
VALIGN="TOP"
300
 
>multi-row, 1 column set</TD
301
 
><TD
302
 
ALIGN="LEFT"
303
 
VALIGN="TOP"
304
 
>array(1:10) in R returns 10 rows in PostgreSQL</TD
305
 
></TR
306
 
><TR
307
 
><TD
308
 
ALIGN="LEFT"
309
 
VALIGN="TOP"
310
 
><TT
311
 
CLASS="TYPE"
312
 
>scalar</TT
313
 
></TD
314
 
><TD
315
 
ALIGN="LEFT"
316
 
VALIGN="TOP"
317
 
><TT
318
 
CLASS="TYPE"
319
 
>data.frame</TT
320
 
></TD
321
 
><TD
322
 
ALIGN="LEFT"
323
 
VALIGN="TOP"
324
 
>textual representation of the first column's vector</TD
325
 
><TD
326
 
ALIGN="LEFT"
327
 
VALIGN="TOP"
328
 
>data.frame(c(1,2,3)) in R returns 'c(1, 2, 3)'</TD
329
 
></TR
330
 
><TR
331
 
><TD
332
 
ALIGN="LEFT"
333
 
VALIGN="TOP"
334
 
><TT
335
 
CLASS="TYPE"
336
 
>setof scalar</TT
337
 
></TD
338
 
><TD
339
 
ALIGN="LEFT"
340
 
VALIGN="TOP"
341
 
><TT
342
 
CLASS="TYPE"
343
 
>2D array</TT
344
 
>, <TT
345
 
CLASS="TYPE"
346
 
>matrix</TT
347
 
>, <TT
348
 
CLASS="TYPE"
349
 
>data.frame</TT
350
 
></TD
351
 
><TD
352
 
ALIGN="LEFT"
353
 
VALIGN="TOP"
354
 
>#columns &#62; 1, error; #columns == 1, multi-row, 1 column set</TD
355
 
><TD
356
 
ALIGN="LEFT"
357
 
VALIGN="TOP"
358
 
>(as.data.frame(array(1:10,c(2,5))))[,1] in R returns 2 rows of scalar</TD
359
 
></TR
360
 
><TR
361
 
><TD
362
 
ALIGN="LEFT"
363
 
VALIGN="TOP"
364
 
><TT
365
 
CLASS="TYPE"
366
 
>array</TT
367
 
></TD
368
 
><TD
369
 
ALIGN="LEFT"
370
 
VALIGN="TOP"
371
 
><TT
372
 
CLASS="TYPE"
373
 
>1D array</TT
374
 
>, <TT
375
 
CLASS="TYPE"
376
 
>greater than 3D array</TT
377
 
>, <TT
378
 
CLASS="TYPE"
379
 
>vector</TT
380
 
></TD
381
 
><TD
382
 
ALIGN="LEFT"
383
 
VALIGN="TOP"
384
 
>1D array</TD
385
 
><TD
386
 
ALIGN="LEFT"
387
 
VALIGN="TOP"
388
 
>array(1:8,c(2,2,2,2)) in R returns {1,2,3,4,5,6,7,8,1,2,3,4,5,6,7,8}</TD
389
 
></TR
390
 
><TR
391
 
><TD
392
 
ALIGN="LEFT"
393
 
VALIGN="TOP"
394
 
><TT
395
 
CLASS="TYPE"
396
 
>array</TT
397
 
></TD
398
 
><TD
399
 
ALIGN="LEFT"
400
 
VALIGN="TOP"
401
 
><TT
402
 
CLASS="TYPE"
403
 
>2D array</TT
404
 
>, <TT
405
 
CLASS="TYPE"
406
 
>matrix</TT
407
 
>, <TT
408
 
CLASS="TYPE"
409
 
>data.frame</TT
410
 
></TD
411
 
><TD
412
 
ALIGN="LEFT"
413
 
VALIGN="TOP"
414
 
>2D array</TD
415
 
><TD
416
 
ALIGN="LEFT"
417
 
VALIGN="TOP"
418
 
>array(1:4,c(2,2)) in R returns {{1,3},{2,4}}</TD
419
 
></TR
420
 
><TR
421
 
><TD
422
 
ALIGN="LEFT"
423
 
VALIGN="TOP"
424
 
><TT
425
 
CLASS="TYPE"
426
 
>array</TT
427
 
></TD
428
 
><TD
429
 
ALIGN="LEFT"
430
 
VALIGN="TOP"
431
 
><TT
432
 
CLASS="TYPE"
433
 
>3D array</TT
434
 
></TD
435
 
><TD
436
 
ALIGN="LEFT"
437
 
VALIGN="TOP"
438
 
>3D array</TD
439
 
><TD
440
 
ALIGN="LEFT"
441
 
VALIGN="TOP"
442
 
>array(1:8,c(2,2,2)) in R returns {{{1,5},{3,7}},{{2,6},{4,8}}}</TD
443
 
></TR
444
 
><TR
445
 
><TD
446
 
ALIGN="LEFT"
447
 
VALIGN="TOP"
448
 
><TT
449
 
CLASS="TYPE"
450
 
>composite</TT
451
 
></TD
452
 
><TD
453
 
ALIGN="LEFT"
454
 
VALIGN="TOP"
455
 
><TT
456
 
CLASS="TYPE"
457
 
>1D array</TT
458
 
>, <TT
459
 
CLASS="TYPE"
460
 
>greater than 2D array</TT
461
 
>, <TT
462
 
CLASS="TYPE"
463
 
>vector</TT
464
 
></TD
465
 
><TD
466
 
ALIGN="LEFT"
467
 
VALIGN="TOP"
468
 
>first row, 1 column</TD
469
 
><TD
470
 
ALIGN="LEFT"
471
 
VALIGN="TOP"
472
 
>array(1:8,c(2,2,2)) in R returns 1 row of scalar</TD
473
 
></TR
474
 
><TR
475
 
><TD
476
 
ALIGN="LEFT"
477
 
VALIGN="TOP"
478
 
><TT
479
 
CLASS="TYPE"
480
 
>setof composite</TT
481
 
></TD
482
 
><TD
483
 
ALIGN="LEFT"
484
 
VALIGN="TOP"
485
 
><TT
486
 
CLASS="TYPE"
487
 
>1D array</TT
488
 
>, <TT
489
 
CLASS="TYPE"
490
 
>greater than 2D array</TT
491
 
>, <TT
492
 
CLASS="TYPE"
493
 
>vector</TT
494
 
></TD
495
 
><TD
496
 
ALIGN="LEFT"
497
 
VALIGN="TOP"
498
 
>multi-row, 1 column set</TD
499
 
><TD
500
 
ALIGN="LEFT"
501
 
VALIGN="TOP"
502
 
>array(1:8,c(2,2,2)) in R returns 8 rows of scalar</TD
503
 
></TR
504
 
><TR
505
 
><TD
506
 
ALIGN="LEFT"
507
 
VALIGN="TOP"
508
 
><TT
509
 
CLASS="TYPE"
510
 
>composite</TT
511
 
></TD
512
 
><TD
513
 
ALIGN="LEFT"
514
 
VALIGN="TOP"
515
 
><TT
516
 
CLASS="TYPE"
517
 
>2D array</TT
518
 
>, <TT
519
 
CLASS="TYPE"
520
 
>matrix</TT
521
 
>, <TT
522
 
CLASS="TYPE"
523
 
>data.frame</TT
524
 
></TD
525
 
><TD
526
 
ALIGN="LEFT"
527
 
VALIGN="TOP"
528
 
>first row, multi-column</TD
529
 
><TD
530
 
ALIGN="LEFT"
531
 
VALIGN="TOP"
532
 
>array(1:4,c(2,2)) in R returns 1 row of 2 columns</TD
533
 
></TR
534
 
><TR
535
 
><TD
536
 
ALIGN="LEFT"
537
 
VALIGN="TOP"
538
 
><TT
539
 
CLASS="TYPE"
540
 
>setof composite</TT
541
 
></TD
542
 
><TD
543
 
ALIGN="LEFT"
544
 
VALIGN="TOP"
545
 
><TT
546
 
CLASS="TYPE"
547
 
>2D array</TT
548
 
>, <TT
549
 
CLASS="TYPE"
550
 
>matrix</TT
551
 
>, <TT
552
 
CLASS="TYPE"
553
 
>data.frame</TT
554
 
></TD
555
 
><TD
556
 
ALIGN="LEFT"
557
 
VALIGN="TOP"
558
 
>multi-row, multi-column set</TD
559
 
><TD
560
 
ALIGN="LEFT"
561
 
VALIGN="TOP"
562
 
>array(1:4,c(2,2)) in R returns 2 rows of 2 columns</TD
563
 
></TR
564
 
></TBODY
565
 
></TABLE
566
 
></DIV
567
 
></DIV
568
 
><DIV
569
 
CLASS="NAVFOOTER"
570
 
><HR
571
 
ALIGN="LEFT"
572
 
WIDTH="100%"><TABLE
573
 
SUMMARY="Footer navigation table"
574
 
WIDTH="100%"
575
 
BORDER="0"
576
 
CELLPADDING="0"
577
 
CELLSPACING="0"
578
 
><TR
579
 
><TD
580
 
WIDTH="33%"
581
 
ALIGN="left"
582
 
VALIGN="top"
583
 
><A
584
 
HREF="plr-funcs.html"
585
 
ACCESSKEY="P"
586
 
>Prev</A
587
 
></TD
588
 
><TD
589
 
WIDTH="34%"
590
 
ALIGN="center"
591
 
VALIGN="top"
592
 
><A
593
 
HREF="index.html"
594
 
ACCESSKEY="H"
595
 
>Home</A
596
 
></TD
597
 
><TD
598
 
WIDTH="33%"
599
 
ALIGN="right"
600
 
VALIGN="top"
601
 
><A
602
 
HREF="plr-global-data.html"
603
 
ACCESSKEY="N"
604
 
>Next</A
605
 
></TD
606
 
></TR
607
 
><TR
608
 
><TD
609
 
WIDTH="33%"
610
 
ALIGN="left"
611
 
VALIGN="top"
612
 
>Functions and Arguments</TD
613
 
><TD
614
 
WIDTH="34%"
615
 
ALIGN="center"
616
 
VALIGN="top"
617
 
>&nbsp;</TD
618
 
><TD
619
 
WIDTH="33%"
620
 
ALIGN="right"
621
 
VALIGN="top"
622
 
>Using Global Data</TD
623
 
></TR
624
 
></TABLE
625
 
></DIV
626
 
></BODY
627
 
></HTML
628
 
>
 
 
b'\\ No newline at end of file'