Sha256: c745a70314c3d5897420b1202896928ac67ad8e40ef2b818c3c8d410105bcfc7

Contents?: true

Size: 1.81 KB

Versions: 5

Compression:

Stored size: 1.81 KB

Contents

package org.embulk.input.postgresql;

import org.embulk.test.EmbulkTests;
import com.google.common.base.Throwables;
import com.google.common.io.ByteStreams;
import java.io.IOException;
import jnr.ffi.Platform;
import jnr.ffi.Platform.OS;
import org.embulk.config.ConfigSource;
import static java.util.Locale.ENGLISH;

public class PostgreSQLTests
{
    public static ConfigSource baseConfig()
    {
        return EmbulkTests.config("EMBULK_INPUT_POSTGRESQL_TEST_CONFIG");
    }

    public static void execute(String sql)
    {
        ConfigSource config = baseConfig();
        ProcessBuilder pb = new ProcessBuilder("psql", "-w", "--set", "ON_ERROR_STOP=1", "-c", convert(sql));
        pb.environment().put("PGUSER", config.get(String.class, "user"));
        pb.environment().put("PGPASSWORD", config.get(String.class, "password"));
        pb.environment().put("PGDATABASE", config.get(String.class, "database"));
        pb.environment().put("PGPORT", config.get(String.class, "port", "5432"));
        pb.redirectErrorStream(true);
        int code;
        try {
            Process process = pb.start();
            ByteStreams.copy(process.getInputStream(), System.out);
            code = process.waitFor();
        } catch (IOException | InterruptedException ex) {
            throw Throwables.propagate(ex);
        }
        if (code != 0) {
            throw new RuntimeException(String.format(ENGLISH,
                        "Command finished with non-zero exit code. Exit code is %d.", code));
        }
    }

    private static String convert(String sql)
    {
        if (Platform.getNativePlatform().getOS().equals(OS.WINDOWS)) {
            // '"' should be '\"' and '\' should be '\\' in Windows
            return sql.replace("\\\\", "\\").replace("\\", "\\\\").replace("\"", "\\\"");
        }
        return sql;
    }
}

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
embulk-input-postgresql-0.10.1 src/test/java/org/embulk/input/postgresql/PostgreSQLTests.java
embulk-input-postgresql-0.10.0 src/test/java/org/embulk/input/postgresql/PostgreSQLTests.java
embulk-input-postgresql-0.9.3 src/test/java/org/embulk/input/postgresql/PostgreSQLTests.java
embulk-input-postgresql-0.9.2 src/test/java/org/embulk/input/postgresql/PostgreSQLTests.java
embulk-input-postgresql-0.9.1 src/test/java/org/embulk/input/postgresql/PostgreSQLTests.java