All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.jooq.DiagnosticsContext Maven / Gradle / Ivy

There is a newer version: 3.19.15
Show newest version
/*
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *  https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 * Other licenses:
 * -----------------------------------------------------------------------------
 * Commercial licenses for this work are available. These replace the above
 * Apache-2.0 license and offer limited warranties, support, maintenance, and
 * commercial database integrations.
 *
 * For more information, please visit: https://www.jooq.org/legal/licensing
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 */
package org.jooq;

import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.util.List;
import java.util.Set;

import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

/**
 * A parameter object that is passed to {@link DiagnosticsListener} methods.
 *
 * @author Lukas Eder
 */
public interface DiagnosticsContext extends Scope {

    /**
     * The object that was diagnosed if available, or null, if
     * there was no specific {@link QueryPart} to attach the diagnostic to.
     */
    @Nullable
    QueryPart part();

    /**
     * The transformed object from {@link #part()} if available, or
     * null, if there was no specific transformation to attach the
     * diagnostic to.
     * 

* This helps diagnosing pattern transformations as indicated by * {@link DiagnosticsListener#transformPattern(DiagnosticsContext)}. */ @Nullable QueryPart transformedPart(); /** * A message describing the diagnostics and the object in question. */ @NotNull String message(); /** * The {@link ResultSet} available in this context, or null, if * there was no result set. */ @Nullable ResultSet resultSet(); /** * The number of rows that were consumed from {@link #resultSet()}, or * -1 if there was no result set. */ int resultSetConsumedRows(); /** * The number of rows that were actually available from * {@link #resultSet()}, or -1 if there was no result set. *

* Calling this method will try to scroll to the end of the * {@link #resultSet()}, in order to count the number of rows, which incurs * overhead! *

* If the result set is still being consumed (i.e. prior to the * {@link ResultSet#close()} call), and scrolling back to the current row * after scrolling to the end of {@link #resultSet()} is not possible (e.g. * because the driver supports only {@link ResultSet#TYPE_FORWARD_ONLY}), * then this will return the same value as {@link #resultSetConsumedRows()}. */ int resultSetFetchedRows(); /** * The number of columns that were consumed from the {@link #resultSet()}, * or -1 if there was no result set. *

* If the result set is still being consumed (i.e. prior to the * {@link ResultSet#close()} call), then this will return the number of * columns that were retrieved from the {@link #resultSet()} set thus * far. */ int resultSetConsumedColumnCount(); /** * The number of columns that were actually available from * {@link #resultSet()}, or -1 if there was no result set. */ int resultSetFetchedColumnCount(); /** * The number of columns that were consumed from the {@link #resultSet()}, * or -1 if there was no result set. *

* If the result set is still being consumed (i.e. prior to the * {@link ResultSet#close()} call), then this will return the number of * columns that were retrieved from the {@link #resultSet()} set thus * far. */ @NotNull List resultSetConsumedColumnNames(); /** * The number of columns that were actually available from * {@link #resultSet()}, or -1 if there was no result set. */ @NotNull List resultSetFetchedColumnNames(); /** * There had been an unnecessary {@link ResultSet#wasNull()} call to check * that a non-primitive type consumed previously was null, or the call was * made more than once. *

* {@link #resultSetColumnIndex()} will return the relevant column index for * which the {@link ResultSet#wasNull()} call was missing. * * @see #resultSetColumnIndex() */ boolean resultSetUnnecessaryWasNullCall(); /** * There had been a missing {@link ResultSet#wasNull()} call on a previously * consumed primitive type, which is reported to be * {@link ResultSetMetaData#isNullable(int)}. *

* {@link #resultSetColumnIndex()} will return the relevant column index for * which the {@link ResultSet#wasNull()} call was missing. * * @see #resultSetColumnIndex() */ boolean resultSetMissingWasNullCall(); /** * The relevant column index (1 based) in the {@link ResultSet} if * applicable, or 0 if there was no result set. */ int resultSetColumnIndex(); /** * The actual statement that is being executed. */ @NotNull String actualStatement(); /** * The normalised statement that all duplicates correspond to. */ @NotNull String normalisedStatement(); /** * The duplicate statements that all correspond to a single normalised * statement. *

* This set is used by at least: *

    *
  • {@link DiagnosticsListener#duplicateStatements(DiagnosticsContext)}
  • *
*/ @NotNull Set duplicateStatements(); /** * The repeated statements that all correspond to a single normalised * statement. *

* This set is used by at least: *

    *
  • {@link DiagnosticsListener#repeatedStatements(DiagnosticsContext)}
  • *
  • {@link DiagnosticsListener#consecutiveAggregation(DiagnosticsContext)}
  • *
*/ @NotNull List repeatedStatements(); /** * The exception that occurred while diagnosing a statement. */ @Nullable Throwable exception(); }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy