Buggy code:
abstract class DDLConstantAction implements ConstantAction { static SchemaDescriptor getAndCheckSchemaDescriptor ( DataDictionary dd , UUID schemaId , String statementType ) throws StandardException { } static SchemaDescriptor getSchemaDescriptorForCreate ( DataDictionary dd , Activation activation , String schemaName ) throws StandardException { } private static void executeCAPreferSubTrans ( CreateSchemaConstantAction csca , TransactionController tc , Activation activation ) throws StandardException { TransactionController useTc = null ; TransactionController nestedTc = null ; try { <START_BUG> nestedTc = tc . startNestedUserTransaction ( false ) ; <END_BUG> useTc = nestedTc ; } catch ( StandardException e ) { if ( SanityManager . DEBUG ) { SanityManager . THROWASSERT ( ( "Unexpected:<seq2seq4repair_space>not<seq2seq4repair_space>able<seq2seq4repair_space>to<seq2seq4repair_space>start<seq2seq4repair_space>nested<seq2seq4repair_space>transaction<seq2seq4repair_space>" + "to<seq2seq4repair_space>auto-create<seq2seq4repair_space>schema" ) , e ) ; } useTc = tc ; } while ( true ) { try { csca . executeConstantAction ( activation , useTc ) ; } catch ( StandardException se ) { if ( se . isLockTimeout ( ) ) { if ( ! ( se . getMessageId ( ) . equals ( LOCK_TIMEOUT_LOG ) ) ) { if ( useTc == nestedTc ) { useTc = tc ; nestedTc . destroy ( ) ; continue ; } } } else if ( se . getMessageId ( ) . equals ( LANG_OBJECT_ALREADY_EXISTS ) ) { break ; } if ( useTc == nestedTc ) { nestedTc . destroy ( ) ; } throw se ; } break ; } if ( useTc == nestedTc ) { nestedTc . commit ( ) ; nestedTc . destroy ( ) ; } } final void lockTableForDDL ( TransactionController tc , long heapConglomerateNumber , boolean exclusiveMode ) throws StandardException { } protected String constructToString ( String statementType , String objectName ) { } protected void storeConstraintDependenciesOnPrivileges ( Activation activation , Dependent dependent , UUID refTableUUID , ProviderInfo [ ] providers ) throws StandardException { } private static PermissionsDescriptor findRoleUsage ( Activation activation , StatementPermission statPerm ) throws StandardException { } private static void trackRoleDependency ( Activation activation , Dependent dependent , DDLConstantAction . SettableBoolean roleDepAdded ) throws StandardException { } protected void storeViewTriggerDependenciesOnPrivileges ( Activation activation , Dependent dependent ) throws StandardException { } private boolean inProviderSet ( ProviderInfo [ ] providers , UUID routineId ) { } protected void addColumnDependencies ( LanguageConnectionContext lcc , DataDictionary dd , TableDescriptor td , ColumnInfo ci ) throws StandardException { } protected void adjustUDTDependencies ( LanguageConnectionContext lcc , DataDictionary dd , TableDescriptor td , ColumnInfo [ ] columnInfos , boolean dropWholeTable ) throws StandardException { } private void adjustUDTDependencies ( LanguageConnectionContext lcc , DataDictionary dd , Dependent dependent , HashMap addUdtMap , HashMap dropUdtMap ) throws StandardException { } protected void adjustUDTDependencies ( LanguageConnectionContext lcc , DataDictionary dd , AliasDescriptor ad , boolean adding ) throws StandardException { } private class SettableBoolean { boolean value ; SettableBoolean ( ) { } void set ( boolean b ) { } boolean get ( ) { } } }

Fix:
nestedTc = tc . startNestedUserTransaction ( false , true ) ;