Skip to content

Commit 5f04735

Browse files
committed
Fix incorrect function return code in cube_cmp and cube_dim;
update regression expected files to what I think is correct.
1 parent 9f99edf commit 5f04735

File tree

4 files changed

+55
-27
lines changed

4 files changed

+55
-27
lines changed

contrib/cube/cube.c

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/******************************************************************************
2-
$PostgreSQL: pgsql/contrib/cube/cube.c,v 1.27 2006/07/25 23:23:44 momjian Exp $
2+
$PostgreSQL: pgsql/contrib/cube/cube.c,v 1.28 2006/07/27 21:55:09 tgl Exp $
33
44
This file contains routines that can be bound to a Postgres backend and
55
called by the backend in the process of processing queries. The calling
@@ -14,12 +14,19 @@
1414
#include "access/gist.h"
1515
#include "access/skey.h"
1616
#include "lib/stringinfo.h"
17+
#include "utils/array.h"
1718
#include "utils/builtins.h"
1819

1920
#include "cubedata.h"
2021

2122
PG_MODULE_MAGIC;
2223

24+
/*
25+
* Taken from the intarray contrib header
26+
*/
27+
#define ARRPTR(x) ( (double *) ARR_DATA_PTR(x) )
28+
#define ARRNELEMS(x) ArrayGetNItems( ARR_NDIM(x), ARR_DIMS(x))
29+
2330
extern int cube_yyparse();
2431
extern void cube_yyerror(const char *message);
2532
extern void cube_scanner_init(const char *str);
@@ -179,15 +186,6 @@ cube(PG_FUNCTION_ARGS)
179186
}
180187

181188

182-
#include "utils/array.h"
183-
184-
/*
185-
** Taken from the intarray contrib header
186-
*/
187-
#define ARRPTR(x) ( (double *) ARR_DATA_PTR(x) )
188-
#define ARRNELEMS(x) ArrayGetNItems( ARR_NDIM(x), ARR_DIMS(x))
189-
190-
191189
/*
192190
** Allows the construction of a cube from 2 float[]'s
193191
*/
@@ -1000,7 +998,7 @@ cube_cmp(PG_FUNCTION_ARGS)
1000998
a = (NDBOX *) PG_GETARG_POINTER(0);
1001999
b = (NDBOX *) PG_GETARG_POINTER(1);
10021000

1003-
PG_RETURN_INT16(cube_cmp_v0(a, b));
1001+
PG_RETURN_INT32(cube_cmp_v0(a, b));
10041002
}
10051003

10061004

@@ -1285,7 +1283,7 @@ cube_dim(PG_FUNCTION_ARGS)
12851283

12861284
c = (NDBOX *) PG_GETARG_POINTER(0);
12871285

1288-
PG_RETURN_INT16 (c->dim);
1286+
PG_RETURN_INT32(c->dim);
12891287
}
12901288

12911289
/* Return a specific normalized LL coordinate */

contrib/cube/expected/cube.out

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1054,21 +1054,21 @@ CREATE INDEX test_cube_ix ON test_cube USING gist (c);
10541054
SELECT * FROM test_cube WHERE c && '(3000,1000),(0,0)' ORDER BY c;
10551055
c
10561056
--------------------------
1057-
(1594, 1043),(1517, 971)
10581057
(337, 455),(240, 359)
1059-
(1444, 403),(1346, 344)
10601058
(759, 187),(662, 163)
1059+
(1444, 403),(1346, 344)
1060+
(1594, 1043),(1517, 971)
10611061
(2424, 160),(2424, 81)
10621062
(5 rows)
10631063

10641064
-- Test sorting
10651065
SELECT * FROM test_cube WHERE c && '(3000,1000),(0,0)' GROUP BY c ORDER BY c;
10661066
c
10671067
--------------------------
1068-
(1594, 1043),(1517, 971)
10691068
(337, 455),(240, 359)
1070-
(1444, 403),(1346, 344)
10711069
(759, 187),(662, 163)
1070+
(1444, 403),(1346, 344)
1071+
(1594, 1043),(1517, 971)
10721072
(2424, 160),(2424, 81)
10731073
(5 rows)
10741074

contrib/cube/expected/cube_1.out

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1054,21 +1054,21 @@ CREATE INDEX test_cube_ix ON test_cube USING gist (c);
10541054
SELECT * FROM test_cube WHERE c && '(3000,1000),(0,0)' ORDER BY c;
10551055
c
10561056
--------------------------
1057-
(1594, 1043),(1517, 971)
10581057
(337, 455),(240, 359)
1059-
(1444, 403),(1346, 344)
10601058
(759, 187),(662, 163)
1059+
(1444, 403),(1346, 344)
1060+
(1594, 1043),(1517, 971)
10611061
(2424, 160),(2424, 81)
10621062
(5 rows)
10631063

10641064
-- Test sorting
10651065
SELECT * FROM test_cube WHERE c && '(3000,1000),(0,0)' GROUP BY c ORDER BY c;
10661066
c
10671067
--------------------------
1068-
(1594, 1043),(1517, 971)
10691068
(337, 455),(240, 359)
1070-
(1444, 403),(1346, 344)
10711069
(759, 187),(662, 163)
1070+
(1444, 403),(1346, 344)
1071+
(1594, 1043),(1517, 971)
10721072
(2424, 160),(2424, 81)
10731073
(5 rows)
10741074

contrib/cube/expected/cube_2.out

Lines changed: 37 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,9 @@
55
-- first, define the datatype. Turn off echoing so that expected file
66
-- does not depend on contents of cube.sql.
77
--
8+
SET client_min_messages = warning;
89
\set ECHO none
9-
psql:cube.sql:10: NOTICE: type "cube" is not yet defined
10-
DETAIL: Creating a shell type definition.
11-
psql:cube.sql:15: NOTICE: argument type cube is only a shell
10+
RESET client_min_messages;
1211
--
1312
-- testing the input and output functions
1413
--
@@ -395,6 +394,37 @@ SELECT '(0)'::text::cube;
395394
(0)
396395
(1 row)
397396

397+
--
398+
-- Test the float[] -> cube cast
399+
--
400+
SELECT cube('{0,1,2}'::float[], '{3,4,5}'::float[]);
401+
cube
402+
---------------------
403+
(0, 1, 2),(3, 4, 5)
404+
(1 row)
405+
406+
SELECT cube('{0,1,2}'::float[], '{3}'::float[]);
407+
ERROR: UR and LL arrays must be of same length
408+
SELECT cube(NULL::float[], '{3}'::float[]);
409+
cube
410+
------
411+
412+
(1 row)
413+
414+
SELECT cube('{0,1,2}'::float[]);
415+
cube
416+
-----------
417+
(0, 1, 2)
418+
(1 row)
419+
420+
SELECT cube_subset(cube('(1,3,5),(6,7,8)'), ARRAY[3,2,1,1]);
421+
cube_subset
422+
---------------------------
423+
(5, 3, 1, 1),(8, 7, 6, 6)
424+
(1 row)
425+
426+
SELECT cube_subset(cube('(1,3,5),(6,7,8)'), ARRAY[4,0]);
427+
ERROR: Index out of bounds
398428
--
399429
-- Testing limit of CUBE_MAX_DIM dimensions check in cube_in.
400430
--
@@ -1021,18 +1051,18 @@ SELECT cube_enlarge('(2,-2),(-3,7)'::cube, -3, 2);
10211051
CREATE TABLE test_cube (c cube);
10221052
\copy test_cube from 'data/test_cube.data'
10231053
CREATE INDEX test_cube_ix ON test_cube USING gist (c);
1024-
SELECT * FROM test_cube WHERE c && '(3000,1000),(0,0)';
1054+
SELECT * FROM test_cube WHERE c && '(3000,1000),(0,0)' ORDER BY c;
10251055
c
10261056
--------------------------
1027-
(2424, 160),(2424, 81)
1057+
(337, 455),(240, 359)
10281058
(759, 187),(662, 163)
10291059
(1444, 403),(1346, 344)
1030-
(337, 455),(240, 359)
10311060
(1594, 1043),(1517, 971)
1061+
(2424, 160),(2424, 81)
10321062
(5 rows)
10331063

10341064
-- Test sorting
1035-
SELECT * FROM test_cube WHERE c && '(3000,1000),(0,0)' GROUP BY c;
1065+
SELECT * FROM test_cube WHERE c && '(3000,1000),(0,0)' GROUP BY c ORDER BY c;
10361066
c
10371067
--------------------------
10381068
(337, 455),(240, 359)

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy