[#6620] NPE "Error while fetching indexes" while generating code for function based indexes
This commit is contained in:
parent
a0cb20f41b
commit
885a6dc966
@ -134,6 +134,7 @@ public class H2Database extends AbstractDatabase {
|
||||
Indexes.ORDINAL_POSITION
|
||||
});
|
||||
|
||||
indexLoop:
|
||||
for (Entry<Record, Result<Record>> entry : indexes.entrySet()) {
|
||||
final Record index = entry.getKey();
|
||||
final Result<Record> columns = entry.getValue();
|
||||
@ -145,6 +146,12 @@ public class H2Database extends AbstractDatabase {
|
||||
final boolean unique = !index.get(Indexes.NON_UNIQUE, boolean.class);
|
||||
|
||||
if (table != null) {
|
||||
|
||||
// [#6310] [#6620] Function-based indexes are not yet supported
|
||||
for (Record column : columns)
|
||||
if (table.getColumn(column.get(Indexes.COLUMN_NAME)) == null)
|
||||
continue indexLoop;
|
||||
|
||||
result.add(new AbstractIndexDefinition(tableSchema, indexName, table, unique) {
|
||||
List<IndexColumnDefinition> indexColumns = new ArrayList<IndexColumnDefinition>();
|
||||
|
||||
|
||||
@ -134,6 +134,7 @@ public class HSQLDBDatabase extends AbstractDatabase {
|
||||
SYSTEM_INDEXINFO.ASC_OR_DESC
|
||||
});
|
||||
|
||||
indexLoop:
|
||||
for (Entry<Record, Result<Record>> entry : indexes.entrySet()) {
|
||||
final Record index = entry.getKey();
|
||||
final Result<Record> cols = entry.getValue();
|
||||
@ -145,6 +146,12 @@ public class HSQLDBDatabase extends AbstractDatabase {
|
||||
final boolean unique = !index.get(SYSTEM_INDEXINFO.NON_UNIQUE, boolean.class);
|
||||
|
||||
if (table != null) {
|
||||
|
||||
// [#6310] [#6620] Function-based indexes are not yet supported
|
||||
for (Record column : cols)
|
||||
if (table.getColumn(column.get(SYSTEM_INDEXINFO.COLUMN_NAME)) == null)
|
||||
continue indexLoop;
|
||||
|
||||
result.add(new AbstractIndexDefinition(tableSchema, indexName, table, unique) {
|
||||
List<IndexColumnDefinition> indexColumns = new ArrayList<IndexColumnDefinition>();
|
||||
|
||||
|
||||
@ -138,6 +138,7 @@ public class MySQLDatabase extends AbstractDatabase {
|
||||
Statistics.SEQ_IN_INDEX
|
||||
});
|
||||
|
||||
indexLoop:
|
||||
for (Entry<Record, Result<Record>> entry : indexes.entrySet()) {
|
||||
final Record index = entry.getKey();
|
||||
final Result<Record> columns = entry.getValue();
|
||||
@ -149,6 +150,12 @@ public class MySQLDatabase extends AbstractDatabase {
|
||||
final boolean unique = !index.get(Statistics.NON_UNIQUE, boolean.class);
|
||||
|
||||
if (table != null) {
|
||||
|
||||
// [#6310] [#6620] Function-based indexes are not yet supported
|
||||
for (Record column : columns)
|
||||
if (table.getColumn(column.get(Statistics.COLUMN_NAME)) == null)
|
||||
continue indexLoop;
|
||||
|
||||
result.add(new AbstractIndexDefinition(tableSchema, indexName, table, unique) {
|
||||
List<IndexColumnDefinition> indexColumns = new ArrayList<IndexColumnDefinition>();
|
||||
|
||||
|
||||
@ -152,6 +152,7 @@ public class PostgresDatabase extends AbstractDatabase {
|
||||
PgClass irel = PG_CLASS.as("irel");
|
||||
PgNamespace tnsp = PG_NAMESPACE.as("tnsp");
|
||||
|
||||
indexLoop:
|
||||
for (Record6<String, String, String, Boolean, String[], Integer[]> record : create()
|
||||
.select(
|
||||
tnsp.NSPNAME,
|
||||
@ -180,12 +181,18 @@ public class PostgresDatabase extends AbstractDatabase {
|
||||
final boolean unique = record.get(i.INDISUNIQUE);
|
||||
|
||||
if (table != null) {
|
||||
|
||||
// [#6310] [#6620] Function-based indexes are not yet supported
|
||||
for (String column : columns)
|
||||
if (table.getColumn(column) == null)
|
||||
continue indexLoop;
|
||||
|
||||
result.add(new AbstractIndexDefinition(tableSchema, indexName, table, unique) {
|
||||
List<IndexColumnDefinition> indexColumns = new ArrayList<IndexColumnDefinition>();
|
||||
|
||||
{
|
||||
for (int ordinal = 0; ordinal < columns.length; ordinal++) {
|
||||
String column = columns[ordinal];
|
||||
ColumnDefinition column = table.getColumn(columns[ordinal]);
|
||||
|
||||
// [#6307] Some background info on this bitwise operation here:
|
||||
// https://stackoverflow.com/a/18128104/521799
|
||||
@ -193,7 +200,7 @@ public class PostgresDatabase extends AbstractDatabase {
|
||||
|
||||
indexColumns.add(new DefaultIndexColumnDefinition(
|
||||
this,
|
||||
table.getColumn(column),
|
||||
column,
|
||||
order,
|
||||
ordinal + 1
|
||||
));
|
||||
|
||||
@ -132,6 +132,7 @@ public class SQLiteDatabase extends AbstractDatabase {
|
||||
fSeqno
|
||||
});
|
||||
|
||||
indexLoop:
|
||||
for (Entry<Record, Result<Record>> entry : indexes.entrySet()) {
|
||||
final Record index = entry.getKey();
|
||||
final Result<Record> columns = entry.getValue();
|
||||
@ -143,6 +144,12 @@ public class SQLiteDatabase extends AbstractDatabase {
|
||||
final boolean unique = index.get(fUnique);
|
||||
|
||||
if (table != null) {
|
||||
|
||||
// [#6310] [#6620] Function-based indexes are not yet supported
|
||||
for (Record column : columns)
|
||||
if (table.getColumn(column.get(fColumnName)) == null)
|
||||
continue indexLoop;
|
||||
|
||||
result.add(new AbstractIndexDefinition(tableSchema, indexName, table, unique) {
|
||||
List<IndexColumnDefinition> indexColumns = new ArrayList<IndexColumnDefinition>();
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user