gpdb icon indicating copy to clipboard operation
gpdb copied to clipboard

Error is not displayed when a script crashes in gpfdist output transform

Open oSkrobuk opened this issue 5 years ago • 17 comments

Greenplum version or build

PostgreSQL 8.3.23 (Greenplum Database 5.23.1)

OS version and uname -a

Distributor ID: Ubuntu Description: Ubuntu 14.04.1 LTS Release : 14.04 Codename: trusty Linux ******* 4.4.114-50 #1 SMP Fri Feb 2 10:53:13 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

autoconf options used ( config.status --config )

BINDIR = /usr/local/gpdb/bin DOCDIR = /usr/local/gpdb/doc/postgresql HTMLDIR = /usr/local/gpdb/doc/postgresql INCLUDEDIR = /usr/local/gpdb/include PKGINCLUDEDIR = /usr/local/gpdb/include/postgresql INCLUDEDIR-SERVER = /usr/local/gpdb/include/postgresql/server LIBDIR = /usr/local/gpdb/lib PKGLIBDIR = /usr/local/gpdb/lib/postgresql LOCALEDIR = /usr/local/gpdb/share/locale MANDIR = /usr/local/gpdb/share/man SHAREDIR = /usr/local/gpdb/share/postgresql SYSCONFDIR = /usr/local/gpdb/etc/postgresql PGXS = /usr/local/gpdb/lib/postgresql/pgxs/src/makefiles/pgxs.mk CC = gcc CPPFLAGS = -D_GNU_SOURCE -I/usr/local/gpdb/include CFLAGS = -O3 -std=gnu99 -Wall -Wmissing-prototypes -Wpointer-arith -Wendif-labels -Wformat-security -fno-strict-aliasing -fwrapv -fexcess-precision=standard -fno-aggressive-loop-optimizations -Wno-unused-but-set-variable -Wno-address -I/usr/local/gpdb/include CFLAGS_SL = -fpic LDFLAGS = -Wl,--as-needed -Wl,-rpath,'/usr/local/gpdb/lib',--enable-new-dtags -L/usr/local/gpdb/lib LDFLAGS_SL = LIBS = -lpgport -lgpopt -lnaucrates -lgpdbcost -lgpos -lxerces-c -lxml2 -lrt -lcrypt -ldl -lm -L/usr/local/gpdb/lib VERSION = PostgreSQL 8.3.23

Expected behavior

Forward an error to GP when it occurs in the work of the output transformation script

Step to reproduce the behavior

Transformation config:

TRANSFORMATIONS:
    write:
        TYPE: output
        COMMAND: /usr/bin/env /home/user/gpfdist/error.sh %filename%
    read:
        TYPE: input
        COMMAND: /usr/bin/env /home/user/gpfdist/error.sh %filename%

error.sh:

#!/bin/bash

error_command

Create external tables:

CREATE WRITABLE EXTERNAL TABLE public.ext_write
(
  column VARCHAR
)
LOCATION ('gpfdist://hostname:8090/filename#transform=write')
FORMAT 'csv' 
ENCODING 'UTF8';

CREATE EXTERNAL TABLE public.ext_read
(
  column VARCHAR
)
LOCATION ('gpfdist://hostname:8090/filename#transform=read')
FORMAT 'csv' 
ENCODING 'UTF8';

Run gpfdist:

gpfdist -p 8090 -d /home/user/gpfdist -c /home/user/gpfdist/transformation.yaml -V

Execute queries:

INSERT INTO public.ext_write
SELECT 'text';
--executing without error
SELECT * FROM public.ext_read;
--[22000] ERROR: gpfdist error - /home/user/gpfdist/error.sh: line 3: error_command: command not found

When set STDERR value CONSOLE in the transform configuration for output, I see an error in the gpfdist log

TRANSFORMATIONS:
    write:
        TYPE: output
        COMMAND: /usr/bin/env /home/user/gpfdist/error.sh %filename%
        STDERR: console
    read:
        TYPE: input
        COMMAND: /usr/bin/env /home/user/gpfdist/error.sh %filename%

gpfdist log:

2020-01-23 17:40:53 407193 INFO [0:3:0:7] Content-Length:0
 write:
  TYPE: output
  COMMAND: /usr/bin/env /home/user/gpfdist/error.sh %filename%
  STDERR: console
  CONTENTS: data
2020-01-23 17:40:53 407193 INFO [0:3:56:7] transform: write
2020-01-23 17:40:53 407193 INFO [0:3:56:7] joined session (/home/user/gpfdist/file_pattern, 1575890863-0001326025.0.0.0)
2020-01-23 17:40:53 407193 INFO active segids in session:
2020-01-23 17:40:53 407193 INFO [1:3:56:7] IPv6_addres:7375 POST /file_pattern - OK
2020-01-23 17:40:53 407193 INFO [1:3:56:7] request end
2020-01-23 17:40:53 407193 INFO [1:3:56:7] detach segment request from session
2020-01-23 17:40:53 407193 INFO free session 1575890863-0001326025.0.0.0:/home/user/gpfdist/file_pattern
/home/user/gpfdist/error.sh: line 3: error_command: command not found
close_subprocess: done: why = 1, exit status = 127
[warn] event_del: event has no event_base set.
2020-01-23 17:40:53 407193 INFO [1:3:56:7] successfully shutdown socket
2020-01-23 17:40:53 407193 INFO [1:3:56:7] peer closed after gpfdist shutdown
2020-01-23 17:40:53 407193 INFO [1:3:56:7] unsent bytes: 0 (-1 means not supported)
2020-01-23 17:40:53 407193 INFO [1:3:56:7] successfully closed socket

Please, help. A very critical issue for me

oSkrobuk avatar Jan 23 '20 14:01 oSkrobuk