Greatly simplify PSPP configuration.
[pspp] / tests / command / get-data-psql.sh
index 7735c36b04e2138ad958413eb1ce767643cf573a..e15080ab92cbe43a4c2e711c0ebe55be11633334 100755 (executable)
@@ -22,7 +22,7 @@ export LANG
 port=6543
 dbase=pspptest
 PG_CONFIG=${PG_CONFIG:=pg_config}
-pgpath=`$PG_CONFIG | awk '/BINDIR/{print $3}'`
+pgpath=`$PG_CONFIG --bindir`
 
 cleanup()
 {
@@ -31,6 +31,7 @@ cleanup()
        return ; 
     fi
     PGHOST=$TEMPDIR $pgpath/pg_ctl -D $TEMPDIR/cluster  stop -W -o "-k $TEMPDIR -h ''"   > /dev/null 2>&1
+    cd /
     rm -rf $TEMPDIR
 }
 
@@ -201,131 +202,106 @@ if [ $? -ne 0 ] ; then no_result ; fi
 
 
 activity="run program 1"
-$SUPERVISOR $PSPP --testing-mode -o raw-ascii $TESTFILE
+$SUPERVISOR $PSPP -o pspp.csv $TESTFILE
 if [ $? -ne 0 ] ; then no_result ; fi
 
 activity="compare output 1"
-perl -pi -e 's/^\s*$//g' $TEMPDIR/pspp.list
-diff -b  $TEMPDIR/pspp.list - << 'EOF'
-1.1 DISPLAY.  
-+---------------+-------------------------------------------+--------+
-|Variable       |Description                                |Position|
-#===============#===========================================#========#
-|bool           |Format: F8.2                               |       1|
-|               |Measure: Scale                             |        |
-|               |Display Alignment: Right                   |        |
-|               |Display Width: 8                           |        |
-+---------------+-------------------------------------------+--------+
-|bytea          |Format: AHEX2                              |       2|
-|               |Measure: Nominal                           |        |
-|               |Display Alignment: Left                    |        |
-|               |Display Width: 1                           |        |
-+---------------+-------------------------------------------+--------+
-|char           |Format: A8                                 |       3|
-|               |Measure: Nominal                           |        |
-|               |Display Alignment: Left                    |        |
-|               |Display Width: 8                           |        |
-+---------------+-------------------------------------------+--------+
-|int8           |Format: F8.2                               |       4|
-|               |Measure: Scale                             |        |
-|               |Display Alignment: Right                   |        |
-|               |Display Width: 8                           |        |
-+---------------+-------------------------------------------+--------+
-|int2           |Format: F8.2                               |       5|
-|               |Measure: Scale                             |        |
-|               |Display Alignment: Right                   |        |
-|               |Display Width: 8                           |        |
-+---------------+-------------------------------------------+--------+
-|int4           |Format: F8.2                               |       6|
-|               |Measure: Scale                             |        |
-|               |Display Alignment: Right                   |        |
-|               |Display Width: 8                           |        |
-+---------------+-------------------------------------------+--------+
-|numeric        |Format: E40.6                              |       7|
-|               |Measure: Scale                             |        |
-|               |Display Alignment: Right                   |        |
-|               |Display Width: 8                           |        |
-+---------------+-------------------------------------------+--------+
-|text           |Format: A16                                |       8|
-|               |Measure: Nominal                           |        |
-|               |Display Alignment: Left                    |        |
-|               |Display Width: 16                          |        |
-+---------------+-------------------------------------------+--------+
-|oid            |Format: F8.2                               |       9|
-|               |Measure: Scale                             |        |
-|               |Display Alignment: Right                   |        |
-|               |Display Width: 8                           |        |
-+---------------+-------------------------------------------+--------+
-|float4         |Format: F8.2                               |      10|
-|               |Measure: Scale                             |        |
-|               |Display Alignment: Right                   |        |
-|               |Display Width: 8                           |        |
-+---------------+-------------------------------------------+--------+
-|float8         |Format: F8.2                               |      11|
-|               |Measure: Scale                             |        |
-|               |Display Alignment: Right                   |        |
-|               |Display Width: 8                           |        |
-+---------------+-------------------------------------------+--------+
-|money          |Format: DOLLAR8.2                          |      12|
-|               |Measure: Scale                             |        |
-|               |Display Alignment: Right                   |        |
-|               |Display Width: 8                           |        |
-+---------------+-------------------------------------------+--------+
-|pbchar         |Format: A8                                 |      13|
-|               |Measure: Nominal                           |        |
-|               |Display Alignment: Left                    |        |
-|               |Display Width: 8                           |        |
-+---------------+-------------------------------------------+--------+
-|varchar        |Format: A8                                 |      14|
-|               |Measure: Nominal                           |        |
-|               |Display Alignment: Left                    |        |
-|               |Display Width: 8                           |        |
-+---------------+-------------------------------------------+--------+
-|date           |Format: DATE11                             |      15|
-|               |Measure: Scale                             |        |
-|               |Display Alignment: Right                   |        |
-|               |Display Width: 8                           |        |
-+---------------+-------------------------------------------+--------+
-|time           |Format: TIME11.0                           |      16|
-|               |Measure: Scale                             |        |
-|               |Display Alignment: Right                   |        |
-|               |Display Width: 8                           |        |
-+---------------+-------------------------------------------+--------+
-|timestamp      |Format: DATETIME22.0                       |      17|
-|               |Measure: Scale                             |        |
-|               |Display Alignment: Right                   |        |
-|               |Display Width: 8                           |        |
-+---------------+-------------------------------------------+--------+
-|timestamptz    |Format: DATETIME22.0                       |      18|
-|               |Measure: Scale                             |        |
-|               |Display Alignment: Right                   |        |
-|               |Display Width: 8                           |        |
-+---------------+-------------------------------------------+--------+
-|interval       |Format: DTIME13.0                          |      19|
-|               |Measure: Scale                             |        |
-|               |Display Alignment: Right                   |        |
-|               |Display Width: 8                           |        |
-+---------------+-------------------------------------------+--------+
-|interval_months|Format: F3.0                               |      20|
-|               |Measure: Scale                             |        |
-|               |Display Alignment: Right                   |        |
-|               |Display Width: 8                           |        |
-+---------------+-------------------------------------------+--------+
-|timetz         |Format: TIME11.0                           |      21|
-|               |Measure: Scale                             |        |
-|               |Display Alignment: Right                   |        |
-|               |Display Width: 8                           |        |
-+---------------+-------------------------------------------+--------+
-|timetz_zone    |Format: F8.2                               |      22|
-|               |Measure: Scale                             |        |
-|               |Display Alignment: Right                   |        |
-|               |Display Width: 8                           |        |
-+---------------+-------------------------------------------+--------+
-    bool bytea     char     int8     int2     int4                                  numeric             text      oid   float4   float8    money   pbchar  varchar        date        time              timestamp            timestamptz      interval interval_months      timetz timetz_zone
--------- ----- -------- -------- -------- -------- ---------------------------------------- ---------------- -------- -------- -------- -------- -------- -------- ----------- ----------- ---------------------- ---------------------- ------------- --------------- ----------- -----------
-     .00    30 a             .00      .00      .00                           -2.560980E+002 this-long-text        .00      .00      .00     $.01 a        A        01-JAN-2000     0:00:00   08-JAN-1999 04:05:06   08-JAN-1999 12:05:06    0 00:01:00               0    10:09:00        4.00 
-     .      20               .        .        .                                .                                 .        .        .        .                               .           .                      .                      .             .               .           .         .   
-    1.00    31 b            1.00     1.00     1.00                            6.553500E+004 that-long-text        .00     1.00     1.00    $1.23 b        B        10-JAN-1963     1:05:02   10-JAN-1963 23:58:00   10-JAN-1963 22:58:00   12 01:03:04              25     1:05:02       -7.00 
+diff -c $TEMPDIR/pspp.csv - << 'EOF'
+Variable,Description,,Position
+bool,Format: F8.2,,1
+,Measure: Scale,,
+,Display Alignment: Right,,
+,Display Width: 8,,
+bytea,Format: AHEX2,,2
+,Measure: Nominal,,
+,Display Alignment: Left,,
+,Display Width: 1,,
+char,Format: A8,,3
+,Measure: Nominal,,
+,Display Alignment: Left,,
+,Display Width: 8,,
+int8,Format: F8.2,,4
+,Measure: Scale,,
+,Display Alignment: Right,,
+,Display Width: 8,,
+int2,Format: F8.2,,5
+,Measure: Scale,,
+,Display Alignment: Right,,
+,Display Width: 8,,
+int4,Format: F8.2,,6
+,Measure: Scale,,
+,Display Alignment: Right,,
+,Display Width: 8,,
+numeric,Format: E40.6,,7
+,Measure: Scale,,
+,Display Alignment: Right,,
+,Display Width: 8,,
+text,Format: A16,,8
+,Measure: Nominal,,
+,Display Alignment: Left,,
+,Display Width: 16,,
+oid,Format: F8.2,,9
+,Measure: Scale,,
+,Display Alignment: Right,,
+,Display Width: 8,,
+float4,Format: F8.2,,10
+,Measure: Scale,,
+,Display Alignment: Right,,
+,Display Width: 8,,
+float8,Format: F8.2,,11
+,Measure: Scale,,
+,Display Alignment: Right,,
+,Display Width: 8,,
+money,Format: DOLLAR8.2,,12
+,Measure: Scale,,
+,Display Alignment: Right,,
+,Display Width: 8,,
+pbchar,Format: A8,,13
+,Measure: Nominal,,
+,Display Alignment: Left,,
+,Display Width: 8,,
+varchar,Format: A8,,14
+,Measure: Nominal,,
+,Display Alignment: Left,,
+,Display Width: 8,,
+date,Format: DATE11,,15
+,Measure: Scale,,
+,Display Alignment: Right,,
+,Display Width: 8,,
+time,Format: TIME11.0,,16
+,Measure: Scale,,
+,Display Alignment: Right,,
+,Display Width: 8,,
+timestamp,Format: DATETIME22.0,,17
+,Measure: Scale,,
+,Display Alignment: Right,,
+,Display Width: 8,,
+timestamptz,Format: DATETIME22.0,,18
+,Measure: Scale,,
+,Display Alignment: Right,,
+,Display Width: 8,,
+interval,Format: DTIME13.0,,19
+,Measure: Scale,,
+,Display Alignment: Right,,
+,Display Width: 8,,
+interval_months,Format: F3.0,,20
+,Measure: Scale,,
+,Display Alignment: Right,,
+,Display Width: 8,,
+timetz,Format: TIME11.0,,21
+,Measure: Scale,,
+,Display Alignment: Right,,
+,Display Width: 8,,
+timetz_zone,Format: F8.2,,22
+,Measure: Scale,,
+,Display Alignment: Right,,
+,Display Width: 8,,
+
+Table: Data List
+bool,bytea,char,int8,int2,int4,numeric,text,oid,float4,float8,money,pbchar,varchar,date,time,timestamp,timestamptz,interval,interval_months,timetz,timetz_zone
+.00,30,a       ,.00,.00,.00,-2.560980E+002,this-long-text  ,.00,.00,.00,$.01,a       ,A       ,01-JAN-2000,0:00:00,08-JAN-1999 04:05:06,08-JAN-1999 12:05:06,0 00:01:00,0,10:09:00,4.00
+.  ,20,,.  ,.  ,.  ,.          ,,.  ,.  ,.  ,.  ,,,.,.,.,.,.,.,.,.  
+1.00,31,b       ,1.00,1.00,1.00,6.553500E+004,that-long-text  ,.00,1.00,1.00,$1.23,b       ,B       ,10-JAN-1963,1:05:02,10-JAN-1963 23:58:00,10-JAN-1963 22:58:00,12 01:03:04,25,1:05:02,-7.00
 EOF
 if [ $? -ne 0 ] ; then fail ; fi
 
@@ -344,31 +320,24 @@ EOF
 if [ $? -ne 0 ] ; then no_result ; fi
 
 activity="run program 2"
-$SUPERVISOR $PSPP --testing-mode -o raw-ascii $TESTFILE
+$SUPERVISOR $PSPP -o pspp.csv $TESTFILE
 if [ $? -ne 0 ] ; then no_result ; fi
 
 activity="compare output 2"
-perl -pi -e 's/^\s*$//g' $TEMPDIR/pspp.list
-diff -b  $TEMPDIR/pspp.list - << 'EOF'
-1.1 DISPLAY.  
-+--------+-------------------------------------------+--------+
-|Variable|Description                                |Position|
-#========#===========================================#========#
-|a       |Format: F8.2                               |       1|
-|        |Measure: Scale                             |        |
-|        |Display Alignment: Right                   |        |
-|        |Display Width: 8                           |        |
-+--------+-------------------------------------------+--------+
-|b       |Format: DATE11                             |       2|
-|        |Measure: Scale                             |        |
-|        |Display Alignment: Right                   |        |
-|        |Display Width: 8                           |        |
-+--------+-------------------------------------------+--------+
-|c       |Format: E40.2                              |       3|
-|        |Measure: Scale                             |        |
-|        |Display Alignment: Right                   |        |
-|        |Display Width: 8                           |        |
-+--------+-------------------------------------------+--------+
+diff -c $TEMPDIR/pspp.csv - << 'EOF'
+Variable,Description,,Position
+a,Format: F8.2,,1
+,Measure: Scale,,
+,Display Alignment: Right,,
+,Display Width: 8,,
+b,Format: DATE11,,2
+,Measure: Scale,,
+,Display Alignment: Right,,
+,Display Width: 8,,
+c,Format: E40.2,,3
+,Measure: Scale,,
+,Display Alignment: Right,,
+,Display Width: 8,,
 EOF
 if [ $? -ne 0 ] ; then fail ; fi
 
@@ -401,29 +370,69 @@ EOF
 if [ $? -ne 0 ] ; then no_result ; fi
 
 activity="run program 3"
-$SUPERVISOR $PSPP --testing-mode -o raw-ascii $TESTFILE
+$SUPERVISOR $PSPP -o pspp.csv $TESTFILE
 if [ $? -ne 0 ] ; then no_result ; fi
 
 activity="compare output 3"
-perl -pi -e 's/^\s*$//g' $TEMPDIR/pspp.list
-diff -b  $TEMPDIR/pspp.list - << 'EOF'
-       x     diff
--------- --------
-    1.00      .   
-    2.00     1.00 
-    3.00     1.00 
-    4.00     1.00 
-    5.00     1.00 
-    6.00     1.00 
-       x     diff
--------- --------
- 1000.00     1.00 
-  999.00     1.00 
-  998.00     1.00 
-  997.00     1.00 
-  996.00     1.00 
-  995.00     1.00 
+diff -c $TEMPDIR/pspp.csv - << 'EOF'
+Table: Data List
+x,diff
+1.00,.  
+2.00,1.00
+3.00,1.00
+4.00,1.00
+5.00,1.00
+6.00,1.00
+
+Table: Data List
+x,diff
+1000.00,1.00
+999.00,1.00
+998.00,1.00
+997.00,1.00
+996.00,1.00
+995.00,1.00
 EOF
 if [ $? -ne 0 ] ; then fail ; fi
 
+
+
+# Check for a bug caused by having string variables in the database,
+# all of which are null.
+
+activity="populate database 4"
+$pgpath/psql  -h $TEMPDIR -p $port  $dbase > /dev/null << EOF
+
+-- a table which has a text field containing only null, or zero
+-- length entries.
+
+CREATE TABLE foo (int4  int4, text text);
+
+INSERT INTO foo VALUES ('12', '');
+
+INSERT INTO foo VALUES (null, '');
+
+EOF
+if [ $? -ne 0 ] ; then fail ; fi
+
+
+activity="create program 4"
+cat > $TESTFILE <<EOF
+GET DATA /TYPE=psql 
+       /CONNECT="host=$TEMPDIR port=$port dbname=$dbase"
+       /UNENCRYPTED
+       /SQL="select * from foo".
+
+DISPLAY DICTIONARY.
+
+LIST.
+EOF
+if [ $? -ne 0 ] ; then no_result ; fi
+
+
+activity="run program 4"
+$SUPERVISOR $PSPP -o pspp.csv $TESTFILE
+if [ $? -ne 0 ] ; then no_result ; fi
+
+
 pass;