ApplyUtil

Il codice di questa sezione viene salvato in un file chiamato ApplyUtil.java.

Concetti

Questa classe contiene una raccolta di metodi di utilità. Queste utility possono fornire:
  • metadati su una particolare query
  • informazioni di runtime sul processo AE
  • informazioni sulle librerie condivise
  • Informazioni sulle variabili d'ambiente AE

Codice

// ApplyUtil.java
// Useful collection of AE Utilty Functions
package org.netezza.education;

import org.netezza.ae.*;

public class ApplyUtil {
    /** print Function AE metadata to standard output */
    public static void printMetadata(Nzae ae) {
        // print input metadata
        final NzaeMetadata meta = ae.getMetadata();
        String indent = " " + " " + " " + " ";

        System.out.println("*** Input (Argument) Metadata ***");
        int numInputColumns = meta.getInputColumnCount();
        System.out.println("Number of input columns: "
            + numInputColumns);
        for (int i = 0; i < numInputColumns; i++) {
            System.out.println(
               "column " + i + ": " +
                    NzaeDataTypes.nzTypeToString(
                        meta.getInputNzType(i)));
            switch (meta.getInputNzType(i)) {
            case NzaeDataTypes.NZUDSUDX_FIXED:
            case NzaeDataTypes.NZUDSUDX_VARIABLE:
            case NzaeDataTypes.NZUDSUDX_NATIONAL_FIXED:
            case NzaeDataTypes.NZUDSUDX_NATIONAL_VARIABLE:
                System.out.println(indent + "length="
                    + meta.getInputSize(i));
                break;
            case NzaeDataTypes.NZUDSUDX_NUMERIC32:
            case NzaeDataTypes.NZUDSUDX_NUMERIC64:
            case NzaeDataTypes.NZUDSUDX_NUMERIC128:
                System.out.println(indent + "size="
                    + meta.getInputSize(i)
                    + ", scale=" + meta.getInputScale(i));
                break;
            default:
                break;
            }
        }

        // print output metadata
        System.out.println();
        System.out.println("*** Output (Result) Metadata ***");
 
        int numOutputColumns = meta.getOutputColumnCount();
        System.out.println("Number of output columns: "
                + numOutputColumns);
        for (int i = 0; i < numOutputColumns; i++) {
            System.out.println(
                "column " + i + ": " +
                    NzaeDataTypes.nzTypeToString(
                        meta.getOutputNzType(i)));
            switch (meta.getOutputNzType(i)) {
            case NzaeDataTypes.NZUDSUDX_FIXED:
            case NzaeDataTypes.NZUDSUDX_VARIABLE:
            case NzaeDataTypes.NZUDSUDX_NATIONAL_FIXED:
            case NzaeDataTypes.NZUDSUDX_NATIONAL_VARIABLE:
                System.out.println(indent + "length="
                    + meta.getOutputSize(i));
                break;
            case NzaeDataTypes.NZUDSUDX_NUMERIC32:
            case NzaeDataTypes.NZUDSUDX_NUMERIC64:
            case NzaeDataTypes.NZUDSUDX_NUMERIC128:
                System.out.println(indent + "size="
                    + meta.getOutputSize(i) +
                    ", scale=" + meta.outputScale(i));
                break;
            default:
                break;
            }
        }
        System.out.println();
    }

    /** print Shaper AE metadata to standard output */
    public static void printMetadata(NzaeShaper ae) {
        // print input metadata
        final NzaeMetadata meta = ae.getMetadata();
        String indent = " " + " " + " " + " ";

        System.out.println("*** Input (Argument) Metadata ***");
        int numInputColumns = meta.getInputColumnCount();
        System.out.println("Number of input columns: "
            + numInputColumns);
        for (int i = 0; i < numInputColumns; i++) {
            System.out.println(
                "column " + i + ": " +
                    NzaeDataTypes.nzTypeToString(
                        meta.getInputNzType(i)));
            switch (meta.getInputNzType(i)) {
            case NzaeDataTypes.NZUDSUDX_FIXED:
            case NzaeDataTypes.NZUDSUDX_VARIABLE:
            case NzaeDataTypes.NZUDSUDX_NATIONAL_FIXED:
            case NzaeDataTypes.NZUDSUDX_NATIONAL_VARIABLE:
                System.out.println(indent + "length="
                    + meta.getInputSize(i));
                break;
            case NzaeDataTypes.NZUDSUDX_NUMERIC32:
            case NzaeDataTypes.NZUDSUDX_NUMERIC64:
            case NzaeDataTypes.NZUDSUDX_NUMERIC128:
                System.out.println(indent + "size="
                    + meta.getInputSize(i) +
                    ", scale=" + meta.getInputScale(i));
                break;
            default:
                break;
            }
        }
    }

    /** print runtime information to standard output */
    public static void printRuntime(NzaeBase ae) {
        final NzaeRuntime runtime = ae.getRuntime();
        StringBuilder result = new StringBuilder();
        result.append("*** Runtime Information ***" + sep);
        result.append("sessionId="
            + runtime.getSessionId() + sep);
        result.append("dataSliceId="
            + runtime.getDataSliceId() + sep);
        result.append("transactionId="
            + runtime.getTransactionId() + sep);
        result.append("hardwareId="
            + runtime.getHardwareId() + sep);
        result.append("numberDataSlices="
            + runtime.getNumberDataSlices() + sep);
        result.append("numberSpus="
            + runtime.getNumberSpus() + sep);
        result.append("suggestedMemoryLimit=" +
            runtime.getSuggestedMemoryLimit() + sep);
        result.append("locus=");
        switch (runtime.getLocus()) {
            case NzaeRuntime.NZAE_LOCUS_POSTGRES:
                result.append("NZAE_LOCUS_POSTGRES");
                break;
            case NzaeRuntime.NZAE_LOCUS_DBOS:
                result.append("NZAE_LOCUS_DBOS");
                break;
            case NzaeRuntime.NZAE_LOCUS_SPU:
                result.append("NZAE_LOCUS_SPU");
                break;
            default:
                result.append("?");
        }
        result.append(sep);
        result.append("adapterType=");
        switch (runtime.getAdapterType()) {
            case NzaeRuntime.NZAE_ADAPTER_OTHER:
                result.append("NZAE_ADAPTER_OTHER");
                break;
            case NzaeRuntime.NZAE_ADAPTER_UDTF:
                result.append("NZAE_ADAPTER_UDTF");
                break;
            case NzaeRuntime.NZAE_ADAPTER_UDF:
                result.append("NZAE_ADAPTER_UDF");
                break;
            case NzaeRuntime.NZAE_ADAPTER_UDA:
                result.append("NZAE_ADAPTER_UDA");
                break;
            default:
                result.append("?");
            }
            result.append(sep);
            result.append("userQuery=" + runtime.getUserQuery());
            System.out.println(result);
        }

        /** print shared library information to standard output */
        public static void printSharedLibraries(NzaeBase ae) {
            NzaeLibrary lib = ae.getLibrary();
            System.out.println("*** Local Libraries ***");
            int count = lib.sizeLocalEntries();
            for (int i = 0; i < count; i++) {
                NzaeLibrary.NzaeLibraryInfo info
                    = lib.getLocalLibraryInfo(i);
                System.out.println(info.libraryName + "="
                    + info.libraryFullPath
                    + " (" + info.autoLoad + ")");
            }
            System.out.println();

            System.out.println("*** Parent Libraries ***");
            count = lib.sizeParentEntries();
            if (count == 0) {
                System.out.println("none");
            }
            for (int i = 0; i < count; i++) {
                NzaeLibrary.NzaeLibraryInfo info =
                    lib.getParentLibraryInfo(i);
                System.out.println(info.libraryName + "="
                    + info.libraryFullPath
                    + " (" + info.autoLoad + ")");
            }
        System.out.println();
    }

    /** print AE Environment to standard output */
    public static void printEnvironment(NzaeBase ae) {
        System.out.println("*** Environment ***");
        NzaeEnvironment env = ae.getEnvironment();
        String key = env.getFirstKey();
        do {
            System.out.println(key + "=" + env.getValue(key));
            key = env.getNextKey();
        } while (key != null);
    }

    private static final String sep =
        System.getProperty("line.separator");
}