@Override public Iterator getIndexIterator() { List indexes = new ArrayList(); Iterator iter = includedTable.getIndexIterator(); while ( iter.hasNext() ) { Index parentIndex = (Index) iter.next(); Index index = new Index(); index.setName( getName() + parentIndex.getName() ); index.setTable( this ); index.addColumns( parentIndex.getColumnIterator() ); indexes.add( index ); } return new JoinedIterator( indexes.iterator(), super.getIndexIterator() ); }
protected void applyIndexes( Table table, TableInformation tableInformation, Dialect dialect, Metadata metadata, Formatter formatter, ExecutionOptions options, GenerationTarget... targets) { final Exporter<Index> exporter = dialect.getIndexExporter(); final Iterator<Index> indexItr = table.getIndexIterator(); while ( indexItr.hasNext() ) { final Index index = indexItr.next(); if ( !StringHelper.isEmpty( index.getName() ) ) { IndexInformation existingIndex = null; if ( tableInformation != null ) { existingIndex = findMatchingIndex( index, tableInformation ); } if ( existingIndex == null ) { applySqlStrings( false, exporter.getSqlCreateStrings( index, metadata ), formatter, options, targets ); } } } }
@Test public void testSecondaryTableIndex(){ PersistentClass entity = metadata().getEntityBinding( Car.class.getName() ); Join join = (Join)entity.getJoinIterator().next(); Iterator<Index> itr = join.getTable().getIndexIterator(); assertTrue( itr.hasNext() ); Index index = itr.next(); assertFalse( itr.hasNext() ); assertTrue( "index name is not generated", StringHelper.isNotEmpty( index.getName() ) ); assertEquals( 2, index.getColumnSpan() ); Iterator<Column> columnIterator = index.getColumnIterator(); Column column = columnIterator.next(); assertEquals( "dealer_name", column.getName() ); column = columnIterator.next(); assertEquals( "rate", column.getName() ); assertSame( join.getTable(), index.getTable() ); }
@Test public void testJoinTableIndex(){ PersistentClass entity = metadata().getEntityBinding( Importer.class.getName() ); Property property = entity.getProperty( "cars" ); Bag set = (Bag)property.getValue(); Table collectionTable = set.getCollectionTable(); Iterator<Index> itr = collectionTable.getIndexIterator(); assertTrue( itr.hasNext() ); Index index = itr.next(); assertFalse( itr.hasNext() ); assertTrue( "index name is not generated", StringHelper.isNotEmpty( index.getName() ) ); assertEquals( 1, index.getColumnSpan() ); Iterator<Column> columnIterator = index.getColumnIterator(); Column column = columnIterator.next(); assertEquals( "importers_id", column.getName() ); assertSame( collectionTable, index.getTable() ); }
@Test public void testCollectionTableIndex(){ PersistentClass entity = metadata().getEntityBinding( Car.class.getName() ); Property property = entity.getProperty( "otherDealers" ); Set set = (Set)property.getValue(); Table collectionTable = set.getCollectionTable(); Iterator<Index> itr = collectionTable.getIndexIterator(); assertTrue( itr.hasNext() ); Index index = itr.next(); assertFalse( itr.hasNext() ); assertTrue( "index name is not generated", StringHelper.isNotEmpty( index.getName() ) ); assertEquals( 1, index.getColumnSpan() ); Iterator<Column> columnIterator = index.getColumnIterator(); Column column = columnIterator.next(); assertEquals( "name", column.getName() ); assertSame( collectionTable, index.getTable() ); }
@Test public void testWithCustomNamingStrategy() throws Exception { Metadata metadata = new MetadataSources( serviceRegistry ) .addAnnotatedClass(Address.class) .addAnnotatedClass(Person.class) .getMetadataBuilder() .applyImplicitNamingStrategy( new LongIdentifierNamingStrategy() ) .build(); UniqueKey uniqueKey = metadata.getEntityBinding( Address.class.getName()).getTable().getUniqueKeyIterator().next(); assertEquals( expectedUniqueKeyName(), uniqueKey.getName() ); org.hibernate.mapping.ForeignKey foreignKey = (org.hibernate.mapping.ForeignKey) metadata.getEntityBinding( Address.class.getName()).getTable().getForeignKeyIterator().next(); assertEquals( expectedForeignKeyName(), foreignKey.getName() ); org.hibernate.mapping.Index index = metadata.getEntityBinding( Address.class.getName()).getTable().getIndexIterator().next(); assertEquals( expectedIndexName(), index.getName() ); }
@Test public void testTableIndex() { PersistentClass entity = metadata().getEntityBinding( Car.class.getName() ); Iterator itr = entity.getTable().getUniqueKeyIterator(); assertTrue( itr.hasNext() ); UniqueKey uk = (UniqueKey) itr.next(); assertFalse( itr.hasNext() ); assertTrue( StringHelper.isNotEmpty( uk.getName() ) ); assertEquals( 2, uk.getColumnSpan() ); Column column = (Column) uk.getColumns().get( 0 ); assertEquals( "brand", column.getName() ); column = (Column) uk.getColumns().get( 1 ); assertEquals( "producer", column.getName() ); assertSame( entity.getTable(), uk.getTable() ); itr = entity.getTable().getIndexIterator(); assertTrue( itr.hasNext() ); Index index = (Index)itr.next(); assertFalse( itr.hasNext() ); assertEquals( "Car_idx", index.getName() ); assertEquals( 1, index.getColumnSpan() ); column = index.getColumnIterator().next(); assertEquals( "since", column.getName() ); assertSame( entity.getTable(), index.getTable() ); }
final Iterator indexItr = table.getIndexIterator(); while ( indexItr.hasNext() ) { final Index index = (Index) indexItr.next();
/** * Create indexes for {@code @Index} annotations * @param queryEntity * @param context * @param entityKeyMetadata */ private void addUserIndexes(QueryEntity queryEntity, SchemaDefinitionContext context, String tableName) { Namespace namespace = context.getDatabase().getDefaultNamespace(); Optional<Table> tableOptional = namespace.getTables().stream().filter( currentTable -> currentTable.getName().equals( tableName ) ).findFirst(); if ( tableOptional.isPresent() ) { Table table = tableOptional.get(); for ( Iterator<Index> indexIterator = table.getIndexIterator(); indexIterator.hasNext(); ) { Index index = indexIterator.next(); appendIndex( queryEntity, index, context ); } } }
@Override public Iterator getIndexIterator() { List indexes = new ArrayList(); Iterator iter = includedTable.getIndexIterator(); while ( iter.hasNext() ) { Index parentIndex = (Index) iter.next(); Index index = new Index(); index.setName( getName() + parentIndex.getName() ); index.setTable(this); index.addColumns( parentIndex.getColumnIterator() ); indexes.add( index ); } return new JoinedIterator( indexes.iterator(), super.getIndexIterator() ); }
public Iterator getIndexIterator() { List indexes = new ArrayList(); Iterator iter = includedTable.getIndexIterator(); while ( iter.hasNext() ) { Index parentIndex = (Index) iter.next(); Index index = new Index(); index.setName( getName() + parentIndex.getName() ); index.setTable(this); index.addColumns( parentIndex.getColumnIterator() ); indexes.add( index ); } return new JoinedIterator( indexes.iterator(), super.getIndexIterator() ); }
private void validateIndexSpecsForIndexes(Table table, IndexOptions indexOptions, Set<String> forIndexNotReferenced) { Iterator<Index> indexes = table.getIndexIterator(); while ( indexes.hasNext() ) { Index index = indexes.next(); forIndexNotReferenced.remove( index.getName() ); MongoDBIndexSpec indexSpec = new MongoDBIndexSpec( index, getIndexOptionDocument( table, indexOptions.getOptionForIndex( index.getName() ) ) ); if ( validateIndexSpec( indexSpec ) && thereIsNoUniqueConstraintOnSameColumns( indexSpec ) ) { indexSpecs.add( indexSpec ); } } }
@Override public Iterator getIndexIterator() { List indexes = new ArrayList(); Iterator iter = includedTable.getIndexIterator(); while ( iter.hasNext() ) { Index parentIndex = (Index) iter.next(); Index index = new Index(); index.setName( getName() + parentIndex.getName() ); index.setTable(this); index.addColumns( parentIndex.getColumnIterator() ); indexes.add( index ); } return new JoinedIterator( indexes.iterator(), super.getIndexIterator() ); }
private void validateIndexSpecsForIndexes(Table table, IndexOptions indexOptions, Set<String> forIndexNotReferenced) { Iterator<Index> indexes = table.getIndexIterator(); while ( indexes.hasNext() ) { Index index = indexes.next(); forIndexNotReferenced.remove( index.getName() ); MongoDBIndexSpec indexSpec = new MongoDBIndexSpec( index, getIndexOptionDocument( table, indexOptions.getOptionForIndex( index.getName() ) ) ); if ( validateIndexSpec( indexSpec ) && thereIsNoUniqueConstraintOnSameColumns( indexSpec ) ) { indexSpecs.add( indexSpec ); } } }
private void processIndexes(CassandraDatastoreProvider datastoreProvider, Table table, List<String> primaryKeys) { // cassandra won't allow table scanning, so we need to explicitly index for the fk relations: Iterator<ForeignKey> fkMappings = table.getForeignKeyIterator(); while ( fkMappings.hasNext() ) { ForeignKey foreignKey = fkMappings.next(); createSecondaryIndex( datastoreProvider, table, foreignKey.getName(), foreignKey.getColumnIterator() ); } Iterator<Index> indexIterator = table.getIndexIterator(); while ( indexIterator.hasNext() ) { Index index = indexIterator.next(); createSecondaryIndex( datastoreProvider, table, index.getName(), index.getColumnIterator() ); } }
public static List<String> getIndexNames(Table table) { ArrayList<String> result = InternalUtils.CollectionUtils.newArrayList(); Iterator<Index> indexIterator = table.getIndexIterator(); while (indexIterator.hasNext()) { Index index = indexIterator.next(); result.add(index.getName()); } return result; }
private void validateIndexSpecs(SchemaDefinitionContext context) { Database database = context.getDatabase(); for ( Namespace namespace : database.getNamespaces() ) { for ( Table table : namespace.getTables() ) { if ( table.isPhysicalTable() ) { Label label = label( table.getName() ); Iterator<Index> indexIterator = table.getIndexIterator(); while ( indexIterator.hasNext() ) { addIndex( label, indexIterator.next() ); } } } } }
@Override protected void addTo(DatabaseObject foundObject, DatabaseSnapshot snapshot) throws DatabaseException, InvalidExampleException { if (!snapshot.getSnapshotControl().shouldInclude(Index.class)) { return; } if (foundObject instanceof Table) { Table table = (Table) foundObject; org.hibernate.mapping.Table hibernateTable = findHibernateTable(table, snapshot); if (hibernateTable == null) { return; } Iterator indexIterator = hibernateTable.getIndexIterator(); while (indexIterator.hasNext()) { org.hibernate.mapping.Index hibernateIndex = (org.hibernate.mapping.Index) indexIterator.next(); Index index = new Index(); index.setTable(table); index.setName(hibernateIndex.getName()); Iterator columnIterator = hibernateIndex.getColumnIterator(); while (columnIterator.hasNext()) { org.hibernate.mapping.Column hibernateColumn = (org.hibernate.mapping.Column) columnIterator.next(); index.getColumns().add(new Column(hibernateColumn.getName()).setRelation(table)); } LOG.info("Found index " + index.getName()); table.getIndexes().add(index); } } }
@Override protected DatabaseObject snapshotObject(DatabaseObject example, DatabaseSnapshot snapshot) throws DatabaseException, InvalidExampleException { if (example.getSnapshotId() != null) { return example; } Table table = ((Index) example).getTable(); org.hibernate.mapping.Table hibernateTable = findHibernateTable(table, snapshot); if (hibernateTable == null) { return example; } Iterator indexIterator = hibernateTable.getIndexIterator(); while (indexIterator.hasNext()) { org.hibernate.mapping.Index hibernateIndex = (org.hibernate.mapping.Index) indexIterator.next(); Index index = new Index(); index.setTable(table); index.setName(hibernateIndex.getName()); Iterator columnIterator = hibernateIndex.getColumnIterator(); while (columnIterator.hasNext()) { org.hibernate.mapping.Column hibernateColumn = (org.hibernate.mapping.Column) columnIterator.next(); index.getColumns().add(new Column(hibernateColumn.getName()).setRelation(table)); } if (index.getColumnNames().equalsIgnoreCase(((Index) example).getColumnNames())) { LOG.info("Found index " + index.getName()); table.getIndexes().add(index); return index; } } return example; }
JdbcUtil.toIdentifier(this, table.getName())); Assert.assertNull("there should be no pk", table.getPrimaryKey() ); Iterator<Index> iterator = table.getIndexIterator(); int cnt=0; while(iterator.hasNext() ) {