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

org.postgresql.core.QueryWithReturningColumnsKey Maven / Gradle / Ivy

There is a newer version: 42.7.3
Show newest version
/*
 * Copyright (c) 2003, PostgreSQL Global Development Group
 * See the LICENSE file in the project root for more information.
 */

package org.postgresql.core;

import java.util.Arrays;

/**
 * Cache key for a query that have some returning columns.
 * {@code columnNames} should contain non-quoted column names.
 * The parser will quote them automatically.
 * 

There's a special case of {@code columnNames == new String[]{"*"}} that means all columns * should be returned. {@link Parser} is aware of that and does not quote {@code *}

*/ class QueryWithReturningColumnsKey extends BaseQueryKey { public final String[] columnNames; private int size; // query length cannot exceed MAX_INT QueryWithReturningColumnsKey(String sql, boolean isParameterized, boolean escapeProcessing, String[] columnNames) { super(sql, isParameterized, escapeProcessing); if (columnNames == null) { // TODO: teach parser to fetch key columns somehow when no column names were given columnNames = new String[]{"*"}; } this.columnNames = columnNames; } @Override public long getSize() { int size = this.size; if (size != 0) { return size; } size = (int) super.getSize(); if (columnNames != null) { size += 16L; // array itself for (String columnName: columnNames) { size += columnName.length() * 2L; // 2 bytes per char, revise with Java 9's compact strings } } this.size = size; return size; } @Override public String toString() { return "QueryWithReturningColumnsKey{" + "sql='" + sql + '\'' + ", isParameterized=" + isParameterized + ", escapeProcessing=" + escapeProcessing + ", columnNames=" + Arrays.toString(columnNames) + '}'; } @Override public boolean equals(Object o) { if (this == o) { return true; } if (o == null || getClass() != o.getClass()) { return false; } if (!super.equals(o)) { return false; } QueryWithReturningColumnsKey that = (QueryWithReturningColumnsKey) o; // Probably incorrect - comparing Object[] arrays with Arrays.equals return Arrays.equals(columnNames, that.columnNames); } @Override public int hashCode() { int result = super.hashCode(); result = 31 * result + Arrays.hashCode(columnNames); return result; } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy