├── .gitattributes ├── .gitignore ├── .idea ├── .name ├── bashsupport_project.xml ├── codeStyleSettings.xml ├── codeStyles │ ├── Project.xml │ └── codeStyleConfig.xml ├── compiler.xml ├── copyright │ └── profiles_settings.xml ├── dataSources.xml ├── dictionaries │ ├── Leonid_Bushuev.xml │ └── leo.xml ├── encodings.xml ├── icon.png ├── inspectionProfiles │ ├── Project_Default.xml │ └── profiles_settings.xml ├── jarRepositories.xml ├── kotlinc.xml ├── libraries │ ├── annotations.xml │ ├── h2.xml │ ├── junit_jupiter.xml │ ├── junit_platform_launcher.xml │ ├── kotlin_reflect.xml │ ├── kotlin_stdlib_jdk8.xml │ └── yaka.xml ├── misc.xml ├── modules.xml ├── runConfigurations │ ├── System_Tests.xml │ ├── Systems_Test_Launch.xml │ ├── Unit_Tests.xml │ └── Units_Test_Launch.xml └── vcs.xml ├── LICENSE.txt ├── README.md ├── build.gradle ├── dekaf-inter-test ├── dekaf-inter-test.iml └── tests │ ├── settings │ ├── SettingTest.kt │ └── SettingsTest.kt │ └── utils │ ├── ArrayHacksTest.kt │ └── SimpleStringConvertTest.kt ├── dekaf-inter ├── dekaf-inter.iml └── src │ ├── DekafInfo.java │ ├── common │ ├── ParamDef.java │ ├── ParamDirection.java │ ├── ParamType.java │ └── StatementCategory.java │ ├── exceptions │ ├── DBAccessDeniedException.java │ ├── DBColumnAccessDeniedException.java │ ├── DBConnectionException.java │ ├── DBDriverException.java │ ├── DBException.java │ ├── DBFactoryException.java │ ├── DBFetchingException.java │ ├── DBInitializationException.java │ ├── DBIsNotConnected.java │ ├── DBLoginFailedException.java │ ├── DBParameterHandlingException.java │ ├── DBParameterSettingException.java │ ├── DBPerformingException.java │ ├── DBPreparingException.java │ ├── DBSchemaAccessDeniedException.java │ ├── DBServiceIsNotActiveException.java │ ├── DBSessionIsClosedException.java │ ├── DBTransactionException.java │ ├── DBTransactionIsAlreadyStartedException.java │ ├── DbmsUnsupportedFeatureException.java │ ├── DuplicateKeyException.java │ ├── NoRowsException.java │ ├── NoTableOrViewException.java │ ├── StrippedSQLException.java │ ├── StrippedUnknownException.java │ ├── UnexpectedDBException.java │ ├── UnexpectedReflectionException.java │ ├── UnhandledTypeException.java │ └── UnknownDBException.java │ ├── intf │ ├── InterColumnCursor.java │ ├── InterCursor.java │ ├── InterFacade.java │ ├── InterIntsCursor.java │ ├── InterLongsCursor.java │ ├── InterMatrixCursor.java │ ├── InterSeance.java │ ├── InterServiceFactory.java │ └── InterSession.java │ ├── package-info.java │ ├── settings │ ├── Setting.java │ └── Settings.java │ └── utils │ ├── ArrayHacks.java │ ├── EmptyIterator.java │ ├── SimpleStringConvert.java │ └── Version.java ├── dekaf-jdbc-test ├── dekaf-jdbc-test.iml └── tests │ ├── Aliases.kt │ └── impl │ ├── H2ConnectedTest.kt │ ├── JdbcColumnCursorTest.kt │ ├── JdbcFacadeTest.kt │ ├── JdbcIntsCursorTest.kt │ ├── JdbcLongsCursorTest.kt │ ├── JdbcMatrixCursorTest.kt │ ├── JdbcSeanceTest.kt │ ├── JdbcServiceFactoryTest.kt │ └── JdbcSessionTest.kt ├── dekaf-jdbc ├── dekaf-jdbc.iml ├── manifest │ └── META-INF │ │ └── services │ │ └── org.jetbrains.dekaf.inter.intf.InterServiceFactory └── src │ ├── impl │ ├── JdbcBaseCursor.java │ ├── JdbcColumnCursor.java │ ├── JdbcFacade.java │ ├── JdbcIntsCursor.java │ ├── JdbcLongsCursor.java │ ├── JdbcMatrixCursor.java │ ├── JdbcParametersHandler.java │ ├── JdbcRowFetcher.java │ ├── JdbcRowFetchers.java │ ├── JdbcRowsCollector.java │ ├── JdbcRowsCollectors.java │ ├── JdbcSeance.java │ ├── JdbcServiceFactory.java │ ├── JdbcSession.java │ ├── JdbcStuff.java │ ├── JdbcUtil.java │ ├── JdbcValueGetter.java │ └── JdbcValueGetters.java │ ├── package-info.java │ └── utils │ ├── NameAndClass.java │ ├── Numbers.java │ └── Objects.java ├── dekaf-main-test ├── dekaf-main-test.iml └── src │ ├── DbMasterTest.kt │ ├── base │ ├── BaseFacadeTest.kt │ ├── BaseSessionTest.kt │ ├── BaseTransactionTest.kt │ ├── FactoryLoaderTest.kt │ └── UnitTestWithH2.kt │ ├── pool │ └── ServicePoolTest.kt │ ├── queries │ └── QueryLayoutTest.kt │ ├── settings │ ├── SettingsBuilderTest.kt │ └── SettingsLoaderTest.kt │ └── util │ ├── H2Util.kt │ └── Numbers.kt ├── dekaf-main ├── dekaf-main.iml └── src │ ├── DbMaster.kt │ ├── Readme.txt │ ├── base │ ├── BaseFacade.kt │ ├── BasePerformer.kt │ ├── BaseQueryRunner.kt │ ├── BaseSession.kt │ └── FactoryLoader.kt │ ├── db │ ├── DbFacade.kt │ ├── DbInsideTransaction.kt │ ├── DbQueryRunner.kt │ ├── DbSession.kt │ └── DbTransaction.kt │ ├── pool │ └── ServicePool.kt │ ├── queries │ ├── Layouts.kt │ ├── Query.kt │ ├── QueryLayout.kt │ └── impl │ │ ├── ResultCollector.kt │ │ ├── RowArrayMHandler.kt │ │ ├── RowArrayNHandler.kt │ │ ├── RowFunHandler.kt │ │ ├── RowHandler.kt │ │ ├── TableArrayResultCollector.kt │ │ ├── TableIteratorResultCollector.kt │ │ ├── TableListResultCollector.kt │ │ ├── TableResultCollector.kt │ │ └── TableStreamResultCollector.kt │ ├── settings │ ├── SettingsBuilder.kt │ ├── SettingsFun.kt │ └── SettingsLoader.kt │ ├── simplext │ ├── SimplextFileReader.kt │ ├── SimplextLine.kt │ ├── SimplextReader.kt │ └── SimplextTextReader.kt │ └── util │ ├── BooleanFun.kt │ ├── ClassFun.kt │ └── TextFun.kt ├── deploy.sh ├── doc ├── implementation-specific-services.md └── settings.md ├── old ├── dekaf-cassandra-test-db │ └── src │ │ └── main │ │ ├── java │ │ └── org │ │ │ └── jetbrains │ │ │ └── dekaf │ │ │ └── core │ │ │ ├── CassandraTestHelper.java │ │ │ └── CassandraTestHelperFactory.java │ │ └── resources │ │ ├── META-INF │ │ └── services │ │ │ └── org.jetbrains.dekaf.core.DBTestHelperFactory │ │ └── org │ │ └── jetbrains │ │ └── dekaf │ │ └── core │ │ └── CassandraTestHelper.sql ├── dekaf-cassandra │ └── src │ │ ├── main │ │ ├── java │ │ │ └── org │ │ │ │ └── jetbrains │ │ │ │ └── dekaf │ │ │ │ ├── Cassandra.java │ │ │ │ ├── jdbc │ │ │ │ ├── CassandraExceptionRecognizer.java │ │ │ │ ├── CassandraIntermediateFacade.java │ │ │ │ ├── CassandraIntermediateProvider.java │ │ │ │ └── CassandraIntermediateSession.java │ │ │ │ └── sql │ │ │ │ └── CassandraSQL.java │ │ └── resources │ │ │ └── META-INF │ │ │ └── services │ │ │ └── org.jetbrains.dekaf.intermediate.IntegralIntermediateRdbmsProvider │ │ └── test │ │ └── java │ │ └── org │ │ └── jetbrains │ │ └── dekaf │ │ └── jdbc │ │ └── CassandraInterServiceProviderUnitTest.java ├── dekaf-clickhouse-test-db │ └── src │ │ └── main │ │ ├── java │ │ └── org │ │ │ └── jetbrains │ │ │ └── dekaf │ │ │ └── core │ │ │ ├── CHouseTestHelper.java │ │ │ └── CHouseTestHelperFactory.java │ │ └── resources │ │ ├── META-INF │ │ └── services │ │ │ └── org.jetbrains.dekaf.core.DBTestHelperFactory │ │ └── org │ │ └── jetbrains │ │ └── dekaf │ │ └── core │ │ └── CHouseTestHelper.sql ├── dekaf-clickhouse-tests │ └── src │ │ └── test │ │ └── java │ │ └── org │ │ └── jetbrains │ │ └── dekaf │ │ ├── CHouseIntegrationTests.java │ │ ├── core │ │ ├── CHouseCommandRunnerTest.java │ │ ├── CHousePrimaryTest.java │ │ ├── CHouseQueryRunnerTest.java │ │ └── CHouseSessionTest.java │ │ └── jdbc │ │ └── CHouseExceptionRecognizingTest.java ├── dekaf-clickhouse │ └── src │ │ ├── main │ │ ├── java │ │ │ └── org │ │ │ │ └── jetbrains │ │ │ │ └── dekaf │ │ │ │ ├── ClickHouse.java │ │ │ │ ├── jdbc │ │ │ │ ├── CHouseExceptionRecognizer.java │ │ │ │ ├── CHouseIntermediateFacade.java │ │ │ │ └── CHouseIntermediateProvider.java │ │ │ │ └── sql │ │ │ │ └── ClickHouseSQL.java │ │ └── resources │ │ │ └── META-INF │ │ │ └── services │ │ │ └── org.jetbrains.dekaf.intermediate.IntegralIntermediateRdbmsProvider │ │ └── test │ │ └── java │ │ └── org │ │ └── jetbrains │ │ └── dekaf │ │ └── jdbc │ │ ├── CHouseInterServiceProviderTest.java │ │ ├── CHouseInterServiceProviderUnitTest.java │ │ ├── CHouseJdbcIntegrationTests.java │ │ └── CHouseJdbcUnitTests.java ├── dekaf-core-test-db │ └── src │ │ ├── main │ │ ├── java │ │ │ └── org │ │ │ │ └── jetbrains │ │ │ │ └── dekaf │ │ │ │ ├── TestDB.java │ │ │ │ ├── TestEnvironment.java │ │ │ │ ├── core │ │ │ │ ├── BaseTestHelper.java │ │ │ │ ├── DBTestHelper.java │ │ │ │ ├── DBTestHelperFactory.java │ │ │ │ ├── UnknownDBTestHelper.java │ │ │ │ └── UnknownDBTestHelperFactory.java │ │ │ │ └── exceptions │ │ │ │ └── DBProtectionException.java │ │ └── resources │ │ │ ├── META-INF │ │ │ └── services │ │ │ │ └── org.jetbrains.dekaf.core.DBTestHelperFactory │ │ │ └── org │ │ │ └── jetbrains │ │ │ └── dekaf │ │ │ └── core │ │ │ └── UnknownDBTestHelper.sql │ │ └── test │ │ └── java │ │ └── org │ │ └── jetbrains │ │ └── dekaf │ │ ├── CommonIntegrationCase.java │ │ └── core │ │ ├── CommonCommandRunnerTest.java │ │ ├── CommonExceptionRecognizingTest.java │ │ ├── CommonPrimaryTest.java │ │ ├── CommonQueryRunnerTest.java │ │ └── CommonSessionTest.java ├── dekaf-core │ └── src │ │ ├── main │ │ ├── java │ │ │ └── org │ │ │ │ └── jetbrains │ │ │ │ └── dekaf │ │ │ │ ├── Dekaf.java │ │ │ │ ├── Rdbms.java │ │ │ │ ├── core │ │ │ │ ├── BaseCommandRunner.java │ │ │ │ ├── BaseFacade.java │ │ │ │ ├── BaseFederatedProvider.java │ │ │ │ ├── BaseQueryRunner.java │ │ │ │ ├── BaseRdbmsProvider.java │ │ │ │ ├── BaseScriptRunner.java │ │ │ │ ├── BaseSeanceRunner.java │ │ │ │ ├── BaseSession.java │ │ │ │ ├── ConnectionInfo.java │ │ │ │ ├── DBCommandRunner.java │ │ │ │ ├── DBFacade.java │ │ │ │ ├── DBFederatedProvider.java │ │ │ │ ├── DBLeasedSession.java │ │ │ │ ├── DBLeasedSessionWrapper.java │ │ │ │ ├── DBQueryRunner.java │ │ │ │ ├── DBRdbmsProvider.java │ │ │ │ ├── DBScriptRunner.java │ │ │ │ ├── DBSession.java │ │ │ │ ├── DBSessions.java │ │ │ │ ├── DBTransaction.java │ │ │ │ ├── DBTransactionControl.java │ │ │ │ ├── ImplementationAccessibleService.java │ │ │ │ ├── InSession.java │ │ │ │ ├── InSessionNoResult.java │ │ │ │ ├── InTransaction.java │ │ │ │ ├── InTransactionNoResult.java │ │ │ │ ├── Layouts.java │ │ │ │ ├── ParameterDef.java │ │ │ │ ├── QueryKind.java │ │ │ │ ├── ResultLayout.java │ │ │ │ ├── RowLayout.java │ │ │ │ └── ValueType.java │ │ │ │ ├── intermediate │ │ │ │ ├── AdaptIntermediateCursor.java │ │ │ │ ├── AdaptIntermediateFacade.java │ │ │ │ ├── AdaptIntermediateFederatedProvider.java │ │ │ │ ├── AdaptIntermediatePortableCursor.java │ │ │ │ ├── AdaptIntermediateRdbmsProvider.java │ │ │ │ ├── AdaptIntermediateSeance.java │ │ │ │ ├── AdaptIntermediateSession.java │ │ │ │ ├── AdaptIntermediateStructCollectingCursor.java │ │ │ │ ├── DBExceptionRecognizer.java │ │ │ │ ├── IntegralIntermediateCursor.java │ │ │ │ ├── IntegralIntermediateFacade.java │ │ │ │ ├── IntegralIntermediateFederatedProvider.java │ │ │ │ ├── IntegralIntermediateRdbmsProvider.java │ │ │ │ ├── IntegralIntermediateSeance.java │ │ │ │ ├── IntegralIntermediateSession.java │ │ │ │ ├── PrimeIntermediateCursor.java │ │ │ │ ├── PrimeIntermediateFacade.java │ │ │ │ ├── PrimeIntermediateFederatedProvider.java │ │ │ │ ├── PrimeIntermediateRdbmsProvider.java │ │ │ │ ├── PrimeIntermediateSeance.java │ │ │ │ ├── PrimeIntermediateSession.java │ │ │ │ └── package-info.java │ │ │ │ ├── jdbc │ │ │ │ ├── BaseExceptionRecognizer.java │ │ │ │ ├── JdbcDrivers.java │ │ │ │ ├── JdbcIntermediateCallableSeance.java │ │ │ │ ├── JdbcIntermediateCursor.java │ │ │ │ ├── JdbcIntermediateFacade.java │ │ │ │ ├── JdbcIntermediateFederatedProvider.java │ │ │ │ ├── JdbcIntermediateRdbmsProvider.java │ │ │ │ ├── JdbcIntermediateSeance.java │ │ │ │ ├── JdbcIntermediateSession.java │ │ │ │ ├── JdbcIntermediateSimpleSeance.java │ │ │ │ ├── JdbcSessions.java │ │ │ │ ├── UnknownDatabase.java │ │ │ │ ├── UnknownDatabaseExceptionRecognizer.java │ │ │ │ ├── UnknownDatabaseInfo.java │ │ │ │ ├── UnknownDatabaseInfoHelper.java │ │ │ │ ├── UnknownDatabaseIntermediateFacade.java │ │ │ │ ├── UnknownDatabaseIntermediateSession.java │ │ │ │ ├── UnknownDatabaseProvider.java │ │ │ │ └── pooling │ │ │ │ │ ├── ConnectionPool.java │ │ │ │ │ ├── ConnectionPoolException.java │ │ │ │ │ ├── ConnectionPoolExhaustedException.java │ │ │ │ │ ├── ConnectionPoolIsNotReadyException.java │ │ │ │ │ ├── ConnectionPoolOperationInterruptedException.java │ │ │ │ │ ├── SimpleDataSource.java │ │ │ │ │ └── UnexpectedDataSourceException.java │ │ │ │ ├── package-info.java │ │ │ │ ├── sql │ │ │ │ ├── Rewriters.java │ │ │ │ ├── Scriptum.java │ │ │ │ ├── ScriptumResource.java │ │ │ │ ├── ScriptumResourceFromJava.java │ │ │ │ ├── SqlCommand.java │ │ │ │ ├── SqlQuery.java │ │ │ │ ├── SqlScript.java │ │ │ │ ├── SqlScriptBuilder.java │ │ │ │ ├── SqlStatement.java │ │ │ │ ├── TextFileFragment.java │ │ │ │ ├── TextFragment.java │ │ │ │ ├── TextPointer.java │ │ │ │ └── TextWalker.java │ │ │ │ └── util │ │ │ │ ├── Classes.java │ │ │ │ ├── Collects.java │ │ │ │ ├── Directories.java │ │ │ │ ├── Function.java │ │ │ │ ├── Providers.java │ │ │ │ ├── StringOperator.java │ │ │ │ ├── Strings.java │ │ │ │ └── UnaryOperator.java │ │ └── resources │ │ │ └── META-INF │ │ │ ├── MANIFEST.MF │ │ │ └── services │ │ │ ├── org.jetbrains.dekaf.core.DBFederatedProvider │ │ │ ├── org.jetbrains.dekaf.intermediate.IntegralIntermediateFederatedProvider │ │ │ ├── org.jetbrains.dekaf.intermediate.IntegralIntermediateRdbmsProvider │ │ │ └── org.jetbrains.dekaf.intermediate.PrimeIntermediateFederatedProvider │ │ └── test │ │ ├── java │ │ └── org │ │ │ └── jetbrains │ │ │ └── dekaf │ │ │ ├── CoreUnitTests.java │ │ │ ├── RdbmsTest.java │ │ │ ├── core │ │ │ ├── BaseFacadeTest.java │ │ │ ├── BaseFederatedProviderTest.java │ │ │ ├── BaseInMemoryDBFacadeCase.java │ │ │ ├── BaseQueryRunnerDirectTest.java │ │ │ ├── BaseQueryRunnerPseudoRemoteTest.java │ │ │ ├── BaseQueryRunnerTest.java │ │ │ ├── BaseRdbmsProviderTest.java │ │ │ ├── BaseScriptRunnerTest.java │ │ │ ├── BaseSessionTest.java │ │ │ └── Tetra.java │ │ │ ├── exceptions │ │ │ └── DBExceptionTest.java │ │ │ ├── intermediate │ │ │ └── AdaptIntermediateRdbmsProviderTest.java │ │ │ ├── jdbc │ │ │ ├── BaseInMemoryDBCase.java │ │ │ ├── BaseIntermediateInMemoryDBCase.java │ │ │ ├── JdbcIntermediateCursorTest.java │ │ │ ├── JdbcIntermediateFacadeTest.java │ │ │ ├── JdbcIntermediateFederatedProviderTest.java │ │ │ ├── JdbcIntermediateSeanceSimpleTest.java │ │ │ ├── JdbcIntermediateSessionTest.java │ │ │ ├── JdbcJarProvidersTest.java │ │ │ ├── JdbcSessionsTest.java │ │ │ ├── JdbcUnitTests.java │ │ │ ├── UnknownDatabaseProviderTest.java │ │ │ └── pooling │ │ │ │ ├── ConnectionPoolTest.java │ │ │ │ ├── FakeConnection.java │ │ │ │ └── FakeDataSource.java │ │ │ ├── sql │ │ │ ├── RewritersTest.java │ │ │ ├── ScriptumBasicTest.java │ │ │ ├── ScriptumResourceFromJavaTest.java │ │ │ ├── SqlCommandTest.java │ │ │ ├── SqlScriptBuilderTest.java │ │ │ └── SqlScriptTest.java │ │ │ └── util │ │ │ ├── ArrayFunctionsTest.java │ │ │ ├── NumbersTest.java │ │ │ ├── StringsTest.java │ │ │ └── VersionTest.java │ │ └── resources │ │ └── org │ │ └── jetbrains │ │ └── dekaf │ │ └── sql │ │ ├── FileWithFragments.sql │ │ ├── FileWithOneCommand.sql │ │ ├── ScriptumBasicTest.sql │ │ └── ScriptumResourceFromJavaTest.sql ├── dekaf-exasol-test-db │ └── src │ │ └── main │ │ ├── java │ │ └── org │ │ │ └── jetbrains │ │ │ └── dekaf │ │ │ └── core │ │ │ ├── ExasolTestHelper.java │ │ │ └── ExasolTestHelperFactory.java │ │ └── resources │ │ ├── META-INF │ │ └── services │ │ │ └── org.jetbrains.dekaf.core.DBTestHelperFactory │ │ └── org │ │ └── jetbrains │ │ └── dekaf │ │ └── core │ │ └── ExasolTestHelper.sql ├── dekaf-exasol-tests │ └── src │ │ └── test │ │ └── java │ │ └── org │ │ └── jetbrains │ │ └── dekaf │ │ ├── ExasolIntegrationTests.java │ │ ├── core │ │ ├── ExasolCommandRunnerTest.java │ │ ├── ExasolPrimaryTest.java │ │ ├── ExasolQueryRunnerTest.java │ │ └── ExasolSessionTest.java │ │ └── jdbc │ │ └── ExasolExceptionRecognizingTest.java ├── dekaf-exasol │ └── src │ │ ├── main │ │ ├── java │ │ │ └── org │ │ │ │ └── jetbrains │ │ │ │ └── dekaf │ │ │ │ ├── Exasol.java │ │ │ │ ├── jdbc │ │ │ │ ├── ExasolExceptionRecognizer.java │ │ │ │ ├── ExasolIntermediateFacade.java │ │ │ │ └── ExasolIntermediateProvider.java │ │ │ │ └── sql │ │ │ │ └── ExasolSQL.java │ │ └── resources │ │ │ └── META-INF │ │ │ └── services │ │ │ └── org.jetbrains.dekaf.intermediate.IntegralIntermediateRdbmsProvider │ │ └── test │ │ └── java │ │ └── org │ │ └── jetbrains │ │ └── dekaf │ │ └── jdbc │ │ ├── ExasolInterServiceProviderTest.java │ │ ├── ExasolInterServiceProviderUnitTest.java │ │ ├── ExasolJdbcIntegrationTests.java │ │ └── ExasolJdbcUnitTests.java ├── dekaf-h2db-test-db │ └── src │ │ └── main │ │ ├── java │ │ └── org │ │ │ └── jetbrains │ │ │ └── dekaf │ │ │ └── core │ │ │ ├── H2dbTestHelper.java │ │ │ └── H2dbTestHelperFactory.java │ │ └── resources │ │ ├── META-INF │ │ └── services │ │ │ └── org.jetbrains.dekaf.core.DBTestHelperFactory │ │ └── org │ │ └── jetbrains │ │ └── dekaf │ │ └── core │ │ └── H2dbTestHelper.sql ├── dekaf-h2db-tests │ └── src │ │ └── test │ │ ├── java │ │ └── org │ │ │ └── jetbrains │ │ │ └── dekaf │ │ │ ├── H2dbIntegrationTests.java │ │ │ ├── core │ │ │ ├── H2dbCommandRunnerTest.java │ │ │ ├── H2dbPrimaryTest.java │ │ │ ├── H2dbQueryRunnerTest.java │ │ │ └── H2dbSessionTest.java │ │ │ └── jdbc │ │ │ └── H2dbExceptionRecognizingTest.java │ │ └── resources │ │ └── org │ │ └── jetbrains │ │ └── dekaf │ │ └── jdbc │ │ └── H2dbExceptionRecognizingTest.sql ├── dekaf-h2db │ └── src │ │ ├── main │ │ ├── java │ │ │ └── org │ │ │ │ └── jetbrains │ │ │ │ └── dekaf │ │ │ │ ├── H2db.java │ │ │ │ ├── jdbc │ │ │ │ ├── H2dbExceptionRecognizer.java │ │ │ │ ├── H2dbIntermediateFacade.java │ │ │ │ └── H2dbIntermediateProvider.java │ │ │ │ └── sql │ │ │ │ └── H2dbSQL.java │ │ └── resources │ │ │ └── META-INF │ │ │ └── services │ │ │ └── org.jetbrains.dekaf.intermediate.IntegralIntermediateRdbmsProvider │ │ └── test │ │ └── java │ │ └── org │ │ └── jetbrains │ │ └── dekaf │ │ └── jdbc │ │ ├── H2dbInterServiceProviderTest.java │ │ ├── H2dbInterServiceProviderUnitTest.java │ │ ├── H2dbJdbcIntegrationTests.java │ │ └── H2dbJdbcUnitTests.java ├── dekaf-mssql-test-db │ └── src │ │ └── main │ │ ├── java │ │ └── org │ │ │ └── jetbrains │ │ │ └── dekaf │ │ │ └── core │ │ │ ├── MssqlTestHelper.java │ │ │ └── MssqlTestHelperFactory.java │ │ └── resources │ │ ├── META-INF │ │ └── services │ │ │ └── org.jetbrains.dekaf.core.DBTestHelperFactory │ │ └── org │ │ └── jetbrains │ │ └── dekaf │ │ └── core │ │ └── MssqlTestHelper.sql ├── dekaf-mssql-tests │ └── src │ │ └── test │ │ └── java │ │ └── org │ │ └── jetbrains │ │ └── dekaf │ │ ├── MssqlIntegrationTests.java │ │ ├── core │ │ ├── MssqlCommandRunnerTest.java │ │ ├── MssqlPrimaryTest.java │ │ ├── MssqlQueryRunnerTest.java │ │ ├── MssqlSessionTest.java │ │ └── MssqlTestHelperTest.java │ │ └── jdbc │ │ └── MssqlExceptionRecognizerTest.java ├── dekaf-mssql │ └── src │ │ ├── main │ │ ├── java │ │ │ └── org │ │ │ │ └── jetbrains │ │ │ │ └── dekaf │ │ │ │ ├── Mssql.java │ │ │ │ ├── jdbc │ │ │ │ ├── MssqlExceptionRecognizer.java │ │ │ │ ├── MssqlIntermediateFacade.java │ │ │ │ ├── MssqlIntermediateProvider.java │ │ │ │ └── MssqlIntermediateSession.java │ │ │ │ └── sql │ │ │ │ └── MicrosoftSQL.java │ │ └── resources │ │ │ └── META-INF │ │ │ └── services │ │ │ └── org.jetbrains.dekaf.intermediate.IntegralIntermediateRdbmsProvider │ │ └── test │ │ └── java │ │ └── org │ │ └── jetbrains │ │ └── dekaf │ │ └── jdbc │ │ ├── MssqlInterServiceProviderTest.java │ │ ├── MssqlInterServiceProviderUnitTest.java │ │ ├── MssqlJdbcIntegrationTests.java │ │ └── MssqlJdbcUnitTests.java ├── dekaf-mysql-test-db │ └── src │ │ └── main │ │ ├── java │ │ └── org │ │ │ └── jetbrains │ │ │ └── dekaf │ │ │ └── core │ │ │ ├── MemsqlTestHelper.java │ │ │ ├── MysqlTestHelper.java │ │ │ └── MysqlTestHelperFactory.java │ │ └── resources │ │ ├── META-INF │ │ └── services │ │ │ └── org.jetbrains.dekaf.core.DBTestHelperFactory │ │ └── org │ │ └── jetbrains │ │ └── dekaf │ │ └── core │ │ ├── MemsqlTestHelper.sql │ │ └── MysqlTestHelper.sql ├── dekaf-mysql-tests │ └── src │ │ └── test │ │ ├── java │ │ └── org │ │ │ └── jetbrains │ │ │ └── dekaf │ │ │ ├── MysqlIntegrationTests.java │ │ │ ├── core │ │ │ ├── MysqlCommandRunnerTest.java │ │ │ ├── MysqlPrimaryTest.java │ │ │ ├── MysqlQueryRunnerTest.java │ │ │ ├── MysqlSessionTest.java │ │ │ ├── MysqlTestHelperTest.java │ │ │ └── MysqlVersionTest.java │ │ │ └── jdbc │ │ │ └── MysqlExceptionRecognizerTest.java │ │ └── resources │ │ └── org │ │ └── jetbrains │ │ └── dekaf │ │ └── core │ │ └── MysqlTestHelperTest.sql ├── dekaf-mysql │ └── src │ │ ├── main │ │ ├── java │ │ │ └── org │ │ │ │ └── jetbrains │ │ │ │ └── dekaf │ │ │ │ ├── Mysql.java │ │ │ │ ├── jdbc │ │ │ │ ├── MysqlConsts.java │ │ │ │ ├── MysqlExceptionRecognizer.java │ │ │ │ ├── MysqlIntermediateFacade.java │ │ │ │ ├── MysqlIntermediateProvider.java │ │ │ │ └── MysqlIntermediateSession.java │ │ │ │ └── sql │ │ │ │ └── MySQL.java │ │ └── resources │ │ │ └── META-INF │ │ │ └── services │ │ │ └── org.jetbrains.dekaf.intermediate.IntegralIntermediateRdbmsProvider │ │ └── test │ │ └── java │ │ └── org │ │ └── jetbrains │ │ └── dekaf │ │ └── jdbc │ │ ├── MysqlInterServiceProviderTest.java │ │ ├── MysqlInterServiceProviderUnitTest.java │ │ ├── MysqlIntermediateSessionUnitTest.java │ │ ├── MysqlJdbcIntegrationTests.java │ │ └── MysqlJdbcUnitTests.java ├── dekaf-oracle-test-db │ └── src │ │ └── main │ │ ├── java │ │ └── org │ │ │ └── jetbrains │ │ │ └── dekaf │ │ │ └── core │ │ │ ├── OracleTestHelper.java │ │ │ └── OracleTestHelperFactory.java │ │ └── resources │ │ ├── META-INF │ │ └── services │ │ │ └── org.jetbrains.dekaf.core.DBTestHelperFactory │ │ └── org │ │ └── jetbrains │ │ └── dekaf │ │ └── core │ │ └── OracleTestHelper.sql ├── dekaf-oracle-tests │ └── src │ │ └── test │ │ ├── java │ │ └── org │ │ │ └── jetbrains │ │ │ └── dekaf │ │ │ ├── OracleIntegrationTests.java │ │ │ ├── core │ │ │ ├── OracleCommandRunnerTest.java │ │ │ ├── OraclePrimaryTest.java │ │ │ ├── OracleQueryRunnerTest.java │ │ │ ├── OracleSessionTest.java │ │ │ └── OracleTestHelperTest.java │ │ │ └── jdbc │ │ │ └── OracleExceptionRecognizingTest.java │ │ └── resources │ │ └── org │ │ └── jetbrains │ │ └── dekaf │ │ ├── core │ │ ├── OracleTestHelperTest.sql │ │ └── OracleTestHelperTest_CreateIndexType.sql │ │ └── jdbc │ │ └── OracleExceptionRecognizingTest.sql ├── dekaf-oracle │ └── src │ │ ├── main │ │ ├── java │ │ │ └── org │ │ │ │ └── jetbrains │ │ │ │ └── dekaf │ │ │ │ ├── Oracle.java │ │ │ │ ├── exceptions │ │ │ │ └── OracleTimezoneRegionNotFoundException.java │ │ │ │ ├── jdbc │ │ │ │ ├── OracleExceptionRecognizer.java │ │ │ │ ├── OracleIntermediateFacade.java │ │ │ │ ├── OracleIntermediateProvider.java │ │ │ │ └── OracleIntermediateSession.java │ │ │ │ └── sql │ │ │ │ └── OracleSQL.java │ │ └── resources │ │ │ └── META-INF │ │ │ └── services │ │ │ └── org.jetbrains.dekaf.intermediate.IntegralIntermediateRdbmsProvider │ │ └── test │ │ └── java │ │ └── org │ │ └── jetbrains │ │ └── dekaf │ │ └── jdbc │ │ ├── OracleIntermediateProviderUnitTest.java │ │ ├── OracleJdbcIntegrationTests.java │ │ └── OracleJdbcUnitTests.java ├── dekaf-postgres-test-db │ └── src │ │ └── main │ │ ├── java │ │ └── org │ │ │ └── jetbrains │ │ │ └── dekaf │ │ │ └── core │ │ │ ├── PostgresTestHelper.java │ │ │ └── PostgresTestHelperFactory.java │ │ └── resources │ │ ├── META-INF │ │ └── services │ │ │ └── org.jetbrains.dekaf.core.DBTestHelperFactory │ │ └── org │ │ └── jetbrains │ │ └── dekaf │ │ └── core │ │ └── PostgresTestHelper.sql ├── dekaf-postgres-tests │ └── src │ │ └── test │ │ ├── java │ │ └── org │ │ │ └── jetbrains │ │ │ └── dekaf │ │ │ ├── PostgresIntegrationTests.java │ │ │ ├── core │ │ │ ├── PostgresCommandRunnerTest.java │ │ │ ├── PostgresPrimaryTest.java │ │ │ ├── PostgresQueryRunnerTest.java │ │ │ ├── PostgresSessionTest.java │ │ │ ├── PostgresTestHelperTest.java │ │ │ └── SudokuTest.java │ │ │ └── jdbc │ │ │ └── PostgresExceptionRecognizerTest.java │ │ └── resources │ │ └── org │ │ └── jetbrains │ │ └── dekaf │ │ └── core │ │ ├── PostgresTestHelperTest.sql │ │ └── SudokuTest.sql ├── dekaf-postgres │ └── src │ │ ├── main │ │ ├── java │ │ │ └── org │ │ │ │ └── jetbrains │ │ │ │ └── dekaf │ │ │ │ ├── Postgres.java │ │ │ │ ├── jdbc │ │ │ │ ├── PostgresExceptionRecognizer.java │ │ │ │ ├── PostgresIntermediateFacade.java │ │ │ │ └── PostgresIntermediateProvider.java │ │ │ │ └── sql │ │ │ │ └── PostgreSQL.java │ │ └── resources │ │ │ └── META-INF │ │ │ └── services │ │ │ └── org.jetbrains.dekaf.intermediate.IntegralIntermediateRdbmsProvider │ │ └── test │ │ └── java │ │ └── org │ │ └── jetbrains │ │ └── dekaf │ │ └── jdbc │ │ ├── PostgresInterServiceProviderTest.java │ │ ├── PostgresInterServiceProviderUnitTest.java │ │ ├── PostgresJdbcIntegrationTests.java │ │ └── PostgresJdbcUnitTests.java ├── dekaf-redshift-test-db │ └── src │ │ └── main │ │ ├── java │ │ └── org │ │ │ └── jetbrains │ │ │ └── dekaf │ │ │ └── core │ │ │ ├── RedshiftTestHelper.java │ │ │ └── RedshiftTestHelperFactory.java │ │ └── resources │ │ ├── META-INF │ │ └── services │ │ │ └── org.jetbrains.dekaf.core.DBTestHelperFactory │ │ └── org │ │ └── jetbrains │ │ └── dekaf │ │ └── core │ │ └── RedshiftTestHelper.sql ├── dekaf-redshift-tests │ └── src │ │ └── test │ │ └── java │ │ └── org │ │ └── jetbrains │ │ └── dekaf │ │ ├── RedshiftIntegrationTests.java │ │ ├── core │ │ ├── RedshiftCommandRunnerTest.java │ │ ├── RedshiftPrimaryTest.java │ │ ├── RedshiftQueryRunnerTest.java │ │ └── RedshiftSessionTest.java │ │ └── jdbc │ │ └── RedshiftExceptionRecognizingTest.java ├── dekaf-redshift │ └── src │ │ ├── main │ │ ├── java │ │ │ └── org │ │ │ │ └── jetbrains │ │ │ │ └── dekaf │ │ │ │ ├── Redshift.java │ │ │ │ ├── jdbc │ │ │ │ ├── RedshiftExceptionRecognizer.java │ │ │ │ ├── RedshiftIntermediateFacade.java │ │ │ │ └── RedshiftIntermediateProvider.java │ │ │ │ └── sql │ │ │ │ └── RedshiftSQL.java │ │ └── resources │ │ │ └── META-INF │ │ │ └── services │ │ │ └── org.jetbrains.dekaf.intermediate.IntegralIntermediateRdbmsProvider │ │ └── test │ │ └── java │ │ └── org │ │ └── jetbrains │ │ └── dekaf │ │ └── jdbc │ │ ├── RedshiftInterServiceProviderTest.java │ │ ├── RedshiftInterServiceProviderUnitTest.java │ │ ├── RedshiftJdbcIntegrationTests.java │ │ └── RedshiftJdbcUnitTests.java ├── dekaf-single-test-db │ └── src │ │ └── main │ │ └── resources │ │ └── META-INF │ │ └── services │ │ └── org.jetbrains.dekaf.core.DBTestHelperFactory ├── dekaf-single │ └── src │ │ └── main │ │ └── resources │ │ └── META-INF │ │ └── services │ │ ├── org.jetbrains.dekaf.core.DBFederatedProvider │ │ ├── org.jetbrains.dekaf.intermediate.IntegralIntermediateFederatedProvider │ │ ├── org.jetbrains.dekaf.intermediate.IntegralIntermediateRdbmsProvider │ │ └── org.jetbrains.dekaf.intermediate.PrimeIntermediateFederatedProvider ├── dekaf-sqlite-test-db │ └── src │ │ └── main │ │ ├── java │ │ └── org │ │ │ └── jetbrains │ │ │ └── dekaf │ │ │ └── core │ │ │ ├── SqliteTestHelper.java │ │ │ └── SqliteTestHelperFactory.java │ │ └── resources │ │ ├── META-INF │ │ └── services │ │ │ └── org.jetbrains.dekaf.core.DBTestHelperFactory │ │ └── org │ │ └── jetbrains │ │ └── dekaf │ │ └── core │ │ └── SqliteTestHelper.sql ├── dekaf-sqlite-tests │ └── src │ │ └── test │ │ └── java │ │ └── org │ │ └── jetbrains │ │ └── dekaf │ │ ├── SqliteIntegrationTests.java │ │ ├── core │ │ ├── SqliteCommandRunnerTest.java │ │ ├── SqlitePrimaryTest.java │ │ ├── SqliteQueryRunnerTest.java │ │ └── SqliteSessionTest.java │ │ └── jdbc │ │ └── SqliteExceptionRecognizingTest.java ├── dekaf-sqlite │ └── src │ │ ├── main │ │ ├── java │ │ │ └── org │ │ │ │ └── jetbrains │ │ │ │ └── dekaf │ │ │ │ ├── Sqlite.java │ │ │ │ ├── jdbc │ │ │ │ ├── SqliteExceptionRecognizer.java │ │ │ │ ├── SqliteIntermediateFacade.java │ │ │ │ ├── SqliteIntermediateProvider.java │ │ │ │ ├── SqliteIntermediateSession.java │ │ │ │ └── SqliteIntermediateSimpleSeance.java │ │ │ │ └── sql │ │ │ │ └── SqliteSQL.java │ │ └── resources │ │ │ └── META-INF │ │ │ └── services │ │ │ └── org.jetbrains.dekaf.intermediate.IntegralIntermediateRdbmsProvider │ │ └── test │ │ └── java │ │ └── org │ │ └── jetbrains │ │ └── dekaf │ │ └── jdbc │ │ ├── SqliteInterServiceProviderTest.java │ │ ├── SqliteInterServiceProviderUnitTest.java │ │ ├── SqliteJdbcIntegrationTests.java │ │ └── SqliteJdbcUnitTests.java ├── dekaf-sybase-test-db │ └── src │ │ └── main │ │ ├── java │ │ └── org │ │ │ └── jetbrains │ │ │ └── dekaf │ │ │ └── core │ │ │ ├── SybaseTestHelper.java │ │ │ └── SybaseTestHelperFactory.java │ │ └── resources │ │ ├── META-INF │ │ └── services │ │ │ └── org.jetbrains.dekaf.core.DBTestHelperFactory │ │ └── org │ │ └── jetbrains │ │ └── dekaf │ │ └── core │ │ └── SybaseTestHelper.sql ├── dekaf-sybase-tests │ └── src │ │ └── test │ │ └── java │ │ └── org │ │ └── jetbrains │ │ └── dekaf │ │ ├── SybaseIntegrationTests.java │ │ ├── core │ │ ├── SybaseCommandRunnerTest.java │ │ ├── SybasePrimaryTest.java │ │ ├── SybaseQueryRunnerTest.java │ │ ├── SybaseSessionTest.java │ │ ├── SybaseTestHelperTest.java │ │ └── SybaseVersionTest.java │ │ └── jdbc │ │ └── SybaseExceptionRecognizerTest.java ├── dekaf-sybase │ └── src │ │ ├── main │ │ ├── java │ │ │ └── org │ │ │ │ └── jetbrains │ │ │ │ └── dekaf │ │ │ │ ├── Sybase.java │ │ │ │ ├── jdbc │ │ │ │ ├── SybaseExceptionRecognizer.java │ │ │ │ ├── SybaseIntermediateFacade.java │ │ │ │ ├── SybaseIntermediateProvider.java │ │ │ │ └── SybaseIntermediateSession.java │ │ │ │ └── sql │ │ │ │ └── SybaseSQL.java │ │ └── resources │ │ │ └── META-INF │ │ │ └── services │ │ │ └── org.jetbrains.dekaf.intermediate.IntegralIntermediateRdbmsProvider │ │ └── test │ │ └── java │ │ └── org │ │ └── jetbrains │ │ └── dekaf │ │ └── jdbc │ │ ├── SybaseInterServiceProviderTest.java │ │ ├── SybaseInterServiceProviderUnitTest.java │ │ ├── SybaseJdbcIntegrationTests.java │ │ └── SybaseJdbcUnitTests.java ├── fine-junit │ └── src │ │ └── main │ │ └── java │ │ ├── org │ │ └── jetbrains │ │ │ └── dekaf │ │ │ ├── assertions │ │ │ └── PatternAssert.java │ │ │ └── junitft │ │ │ ├── FineRunner.java │ │ │ ├── ParallelExecutor.java │ │ │ ├── ParamTestMethod.java │ │ │ ├── SimpleTestMethod.java │ │ │ ├── TeamCityListener.java │ │ │ ├── TestMethod.java │ │ │ ├── TestSuiteExecutor.java │ │ │ ├── TestWithParams.java │ │ │ └── ThreadTestUtils.java │ │ └── testing │ │ └── categories │ │ ├── ForEveryRdbms.java │ │ ├── ForMSSQL.java │ │ ├── ForMySQL.java │ │ ├── ForOracle.java │ │ ├── ForPostgres.java │ │ ├── NotForMSSQL.java │ │ ├── NotForMySQL.java │ │ ├── NotForOracle.java │ │ ├── NotForPostgres.java │ │ └── UnitTest.java ├── post-build.xml ├── post-coverage.xml ├── public-pack │ ├── assembly-fw.xml │ ├── assembly-single-templates.xml │ ├── assembly-tests.xml │ └── assembly-tools.xml └── test-pack │ └── src │ └── test │ └── java │ ├── RunIntegrationTests.java │ └── UnitTests.java ├── settings.gradle ├── test-utils ├── src │ ├── FileFun.kt │ ├── NumberConsts.kt │ ├── SystemTest.kt │ ├── TestConsoleFun.kt │ ├── TestThreadFun.kt │ ├── UnitTest.kt │ └── teamcity │ │ ├── TeamCityListener.kt │ │ └── TeamCityMessages.kt └── test-utils.iml └── tests-basic ├── src └── TestLaunch.kt └── tests-basic.iml /.gitattributes: -------------------------------------------------------------------------------- 1 | * text=auto eol=lf 2 | *.sql text eol=lf 3 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.class 2 | *.jar 3 | *.war 4 | *.ear 5 | *.zip 6 | 7 | lib 8 | out 9 | classes 10 | dist 11 | coverage 12 | */target 13 | .gradle 14 | .gradleTemp 15 | 16 | .idea/workspace.xml 17 | .idea/uiDesigner.xml 18 | .idea/deployment.xml 19 | .idea/shelf 20 | .idea/ant.xml 21 | .idea/dataSources.local.xml 22 | 23 | test-db.config 24 | test-db.properties 25 | pom.xml.versionsBackup 26 | 27 | -------------------------------------------------------------------------------- /.idea/.name: -------------------------------------------------------------------------------- 1 | Dekaf -------------------------------------------------------------------------------- /.idea/bashsupport_project.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 13 | 14 | -------------------------------------------------------------------------------- /.idea/codeStyles/codeStyleConfig.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | -------------------------------------------------------------------------------- /.idea/compiler.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | -------------------------------------------------------------------------------- /.idea/copyright/profiles_settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /.idea/dataSources.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /.idea/dictionaries/Leonid_Bushuev.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | assertj 5 | büro 6 | cmds 7 | deregister 8 | deregistering 9 | jtds 10 | odbc 11 | rdbms 12 | rset 13 | scriptum 14 | sqlserver 15 | structs 16 | 17 | 18 | -------------------------------------------------------------------------------- /.idea/dictionaries/leo.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | callables 5 | claß 6 | consts 7 | dedulplicate 8 | dekaf 9 | drei 10 | einz 11 | fünf 12 | inno 13 | isam 14 | iseq 15 | jacoco 16 | jacocoagent 17 | javaagent 18 | jdba 19 | klass 20 | klazz 21 | labuda 22 | lada 23 | mssql 24 | passivate 25 | plpgsql 26 | postgre 27 | postgresql 28 | recyclebin 29 | reinit 30 | rewriters 31 | simplext 32 | sqle 33 | struct 34 | sudoku 35 | unexistent 36 | vier 37 | yaka 38 | zwei 39 | 40 | 41 | -------------------------------------------------------------------------------- /.idea/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JetBrains/dekaf/ceb7e2b58c2426e3ed61816ca3556ecc6dceab39/.idea/icon.png -------------------------------------------------------------------------------- /.idea/inspectionProfiles/profiles_settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | -------------------------------------------------------------------------------- /.idea/jarRepositories.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 9 | 10 | 14 | 15 | -------------------------------------------------------------------------------- /.idea/kotlinc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | -------------------------------------------------------------------------------- /.idea/libraries/annotations.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /.idea/libraries/h2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /.idea/libraries/yaka.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/runConfigurations/System_Tests.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 12 | 13 | 14 | 16 | 17 | -------------------------------------------------------------------------------- /.idea/runConfigurations/Systems_Test_Launch.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 13 | -------------------------------------------------------------------------------- /.idea/runConfigurations/Unit_Tests.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 12 | 13 | 14 | 16 | 17 | -------------------------------------------------------------------------------- /.idea/runConfigurations/Units_Test_Launch.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 13 | -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /dekaf-inter-test/dekaf-inter-test.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /dekaf-inter-test/tests/settings/SettingTest.kt: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.interTest.settings 2 | 3 | import lb.yaka.expectations.* 4 | import lb.yaka.gears.* 5 | import org.jetbrains.dekaf.inter.settings.Setting 6 | import org.jetbrains.dekaf.test.utils.UnitTest 7 | import org.junit.jupiter.api.Test 8 | import java.util.* 9 | 10 | 11 | class SettingTest : UnitTest { 12 | 13 | @Test 14 | fun equals_basic() { 15 | val setting1 = Setting("theName", "theValue") 16 | val setting2 = Setting("the" + "Name", "the" + "Value") 17 | 18 | expect that (setting1.equals(setting2)) iz true 19 | expect that (setting1 == setting2) iz true 20 | expect that setting1 equalsTo setting2 21 | } 22 | 23 | @Test 24 | fun equals_viaObject() { 25 | val setting1 = Setting("theName", "theValue") 26 | val setting2 = Setting("the" + "Name", "the" + "Value") 27 | 28 | expect that Objects.equals(setting1, setting2) iz true 29 | } 30 | 31 | } -------------------------------------------------------------------------------- /dekaf-inter-test/tests/utils/ArrayHacksTest.kt: -------------------------------------------------------------------------------- 1 | package com.jetbrains.dekaf.interTest.utils 2 | 3 | import lb.yaka.expectations.equalsTo 4 | import lb.yaka.gears.expect 5 | import org.jetbrains.dekaf.inter.utils.ArrayHacks 6 | import org.jetbrains.dekaf.inter.utils.ArrayHacks.arrayClass 7 | import org.jetbrains.dekaf.test.utils.UnitTest 8 | import org.junit.jupiter.api.Test 9 | 10 | 11 | class ArrayHacksTest : UnitTest { 12 | 13 | @Test 14 | fun createMatrix() { 15 | val m: Array> = ArrayHacks.createArray(String::class.java, 5, 3) 16 | m[0][0] = "0:0" 17 | m[0][2] = "0:2" 18 | m[4][0] = "4:0" 19 | m[4][2] = "4:2" 20 | } 21 | 22 | 23 | @Test 24 | fun arrayClass_basic() { 25 | val a: Array = arrayOf("S") 26 | val c = arrayClass(a) 27 | expect that c.isArray equalsTo true 28 | expect that c.componentType equalsTo java.lang.String::class.java 29 | } 30 | 31 | } 32 | -------------------------------------------------------------------------------- /dekaf-inter/dekaf-inter.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /dekaf-inter/src/DekafInfo.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.inter; 2 | 3 | import org.jetbrains.dekaf.inter.utils.Version; 4 | 5 | 6 | 7 | /** 8 | * Brief information. 9 | */ 10 | public class DekafInfo { 11 | 12 | public static final Version VERSION = Version.of(3, 0, 0, -30); 13 | 14 | } 15 | -------------------------------------------------------------------------------- /dekaf-inter/src/common/ParamDirection.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.inter.common; 2 | 3 | public enum ParamDirection { 4 | 5 | paramIn (true, false, "in"), 6 | paramInOut (true, true, "in-out"), 7 | paramOut (false, true, "out"); 8 | 9 | public final boolean isIn; 10 | public final boolean isOut; 11 | public final String name; 12 | 13 | ParamDirection(final boolean isIn, final boolean isOut, final String name) { 14 | this.isIn = isIn; 15 | this.isOut = isOut; 16 | this.name = name; 17 | } 18 | 19 | @Override 20 | public String toString() { 21 | return name; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /dekaf-inter/src/common/ParamType.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.inter.common; 2 | 3 | public enum ParamType { 4 | 5 | // @formatter:off 6 | paramBoolean (), 7 | paramBit (), 8 | paramTinyInt (), 9 | paramSmallInt (), 10 | paramInt (), 11 | paramBigInt (), 12 | paramFloat (), 13 | paramDouble (), 14 | paramBigInteger(), 15 | paramBigDecimal(), 16 | paramChar (), 17 | paramString (), 18 | paramDate (), 19 | paramDateTime (), 20 | paramTime (), 21 | paramTimestamp (), 22 | paramCLOB (), 23 | paramBLOB (), 24 | paramRefCursor (); 25 | // @formatter:on 26 | 27 | } 28 | -------------------------------------------------------------------------------- /dekaf-inter/src/common/StatementCategory.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.inter.common; 2 | 3 | public enum StatementCategory { 4 | stmtSimple, 5 | stmtUpdate, 6 | stmtQuery 7 | } 8 | -------------------------------------------------------------------------------- /dekaf-inter/src/exceptions/DBAccessDeniedException.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.inter.exceptions; 2 | 3 | import org.jetbrains.annotations.NotNull; 4 | import org.jetbrains.annotations.Nullable; 5 | 6 | import java.sql.SQLException; 7 | 8 | 9 | 10 | /** 11 | * @author Leonid Bushuev from JetBrains 12 | **/ 13 | public class DBAccessDeniedException extends DBException { 14 | 15 | public DBAccessDeniedException(@NotNull final SQLException sqlException, 16 | @Nullable final String statementText) { 17 | super(sqlException, statementText); 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /dekaf-inter/src/exceptions/DBColumnAccessDeniedException.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.inter.exceptions; 2 | 3 | import org.jetbrains.annotations.NotNull; 4 | import org.jetbrains.annotations.Nullable; 5 | 6 | import java.sql.SQLException; 7 | 8 | 9 | 10 | /** 11 | * @author Leonid Bushuev from JetBrains 12 | **/ 13 | public class DBColumnAccessDeniedException extends DBAccessDeniedException { 14 | 15 | public DBColumnAccessDeniedException(@NotNull final SQLException sqlException, 16 | @Nullable final String statementText) { 17 | super(sqlException, statementText); 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /dekaf-inter/src/exceptions/DBConnectionException.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.inter.exceptions; 2 | 3 | import org.jetbrains.annotations.NotNull; 4 | import org.jetbrains.annotations.Nullable; 5 | 6 | import java.sql.SQLException; 7 | 8 | 9 | 10 | /** 11 | * @author Leonid Bushuev from JetBrains 12 | */ 13 | public class DBConnectionException extends DBException { 14 | 15 | public DBConnectionException(@NotNull final String message, 16 | @NotNull final SQLException sqlException, 17 | @Nullable final String statementText) { 18 | super(message, sqlException, statementText); 19 | } 20 | 21 | public DBConnectionException(@NotNull final SQLException sqlException, 22 | @Nullable final String statementText) { 23 | super(sqlException, statementText); 24 | } 25 | 26 | public DBConnectionException(@NotNull final String message) { 27 | super(message, null); 28 | } 29 | 30 | } 31 | -------------------------------------------------------------------------------- /dekaf-inter/src/exceptions/DBDriverException.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.inter.exceptions; 2 | 3 | import org.jetbrains.annotations.NotNull; 4 | 5 | import java.sql.SQLException; 6 | 7 | 8 | 9 | /** 10 | * @author Leonid Bushuev from JetBrains 11 | */ 12 | public class DBDriverException extends DBException { 13 | 14 | public DBDriverException(@NotNull String message, @NotNull Exception exception) { 15 | super(message, exception, null); 16 | } 17 | 18 | public DBDriverException(@NotNull String message, @NotNull SQLException exception) { 19 | super(message, exception, null); 20 | } 21 | 22 | 23 | public DBDriverException(@NotNull String message) { 24 | super(message, null); 25 | } 26 | 27 | } 28 | -------------------------------------------------------------------------------- /dekaf-inter/src/exceptions/DBFactoryException.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.inter.exceptions; 2 | 3 | import org.jetbrains.annotations.NotNull; 4 | 5 | 6 | 7 | /** 8 | * Thrown on a problem when working with DBServiceFactory. 9 | * @author Leonid Bushuev from JetBrains 10 | */ 11 | public class DBFactoryException extends DBException { 12 | 13 | public DBFactoryException(@NotNull String message, @NotNull Exception exception) { 14 | super(message, exception, null); 15 | } 16 | 17 | 18 | public DBFactoryException(@NotNull String message) { 19 | super(message, null); 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /dekaf-inter/src/exceptions/DBInitializationException.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.inter.exceptions; 2 | 3 | import org.jetbrains.annotations.NotNull; 4 | 5 | import java.sql.SQLException; 6 | 7 | 8 | 9 | /** 10 | * Throws when a problem of a SQL command or query initialization error occured. 11 | * 12 | * @author Leonid Bushuev from JetBrains 13 | */ 14 | public class DBInitializationException extends DBException { 15 | 16 | public DBInitializationException(@NotNull final String message, 17 | @NotNull final SQLException sqlException) { 18 | super(message, sqlException, null); 19 | } 20 | 21 | 22 | public DBInitializationException(@NotNull final String message, 23 | @NotNull final Exception exception) { 24 | super(message, exception, null); 25 | } 26 | 27 | 28 | public DBInitializationException(@NotNull final String message) { 29 | super(message, (Throwable)null, null); 30 | } 31 | 32 | } 33 | -------------------------------------------------------------------------------- /dekaf-inter/src/exceptions/DBIsNotConnected.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.inter.exceptions; 2 | 3 | import org.jetbrains.annotations.NotNull; 4 | 5 | 6 | 7 | /** 8 | * 9 | **/ 10 | public class DBIsNotConnected extends DBException { 11 | public DBIsNotConnected(@NotNull final String message) { 12 | super(message, null); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /dekaf-inter/src/exceptions/DBLoginFailedException.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.inter.exceptions; 2 | 3 | import org.jetbrains.annotations.NotNull; 4 | import org.jetbrains.annotations.Nullable; 5 | 6 | import java.sql.SQLException; 7 | 8 | 9 | 10 | /** 11 | * @author Leonid Bushuev from JetBrains 12 | */ 13 | public class DBLoginFailedException extends DBConnectionException { 14 | 15 | public DBLoginFailedException(@NotNull final SQLException sqlException, 16 | @Nullable final String statementText) { 17 | super(sqlException, statementText); 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /dekaf-inter/src/exceptions/DBParameterHandlingException.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.inter.exceptions; 2 | 3 | import org.jetbrains.annotations.NotNull; 4 | import org.jetbrains.annotations.Nullable; 5 | 6 | import java.sql.SQLException; 7 | 8 | 9 | 10 | /** 11 | * @author Leonid Bushuev from JetBrains 12 | */ 13 | public abstract class DBParameterHandlingException extends DBException { 14 | 15 | protected DBParameterHandlingException(final @NotNull String message, 16 | final @NotNull SQLException sqlException, 17 | final @Nullable String statementText) { 18 | super(message, sqlException, statementText); 19 | } 20 | 21 | public DBParameterHandlingException(final @NotNull String message, 22 | final @NotNull Exception exception, 23 | final @NotNull String statementText) { 24 | super(message, exception, statementText); 25 | } 26 | 27 | } 28 | -------------------------------------------------------------------------------- /dekaf-inter/src/exceptions/DBParameterSettingException.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.inter.exceptions; 2 | 3 | import org.jetbrains.annotations.NotNull; 4 | import org.jetbrains.annotations.Nullable; 5 | 6 | import java.sql.SQLException; 7 | 8 | 9 | 10 | /** 11 | * @author Leonid Bushuev from JetBrains 12 | */ 13 | public class DBParameterSettingException extends DBParameterHandlingException { 14 | 15 | public DBParameterSettingException(final @NotNull String message, 16 | final @NotNull SQLException sqlException, 17 | final @Nullable String statementText) { 18 | super(message, sqlException, statementText); 19 | } 20 | 21 | public DBParameterSettingException(final @NotNull String message, 22 | final @NotNull Exception exception, 23 | final @Nullable String statementText) { 24 | super(message, exception, statementText); 25 | } 26 | 27 | } 28 | -------------------------------------------------------------------------------- /dekaf-inter/src/exceptions/DBPerformingException.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.inter.exceptions; 2 | 3 | import org.jetbrains.annotations.NotNull; 4 | 5 | import java.sql.SQLException; 6 | 7 | 8 | 9 | /** 10 | * Throws when a problem of a SQL command or query is performed. 11 | * 12 | * @author Leonid Bushuev 13 | */ 14 | public class DBPerformingException extends DBException { 15 | 16 | public DBPerformingException(@NotNull final SQLException sqlException, 17 | @NotNull final String statementText) { 18 | super(sqlException, statementText); 19 | } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /dekaf-inter/src/exceptions/DBSchemaAccessDeniedException.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.inter.exceptions; 2 | 3 | import org.jetbrains.annotations.NotNull; 4 | import org.jetbrains.annotations.Nullable; 5 | 6 | import java.sql.SQLException; 7 | 8 | 9 | 10 | /** 11 | * @author Leonid Bushuev from JetBrains 12 | **/ 13 | public class DBSchemaAccessDeniedException extends DBAccessDeniedException { 14 | 15 | public DBSchemaAccessDeniedException(@NotNull final SQLException sqlException, 16 | @Nullable final String statementText) { 17 | super(sqlException, statementText); 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /dekaf-inter/src/exceptions/DBServiceIsNotActiveException.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.inter.exceptions; 2 | 3 | import org.jetbrains.annotations.NotNull; 4 | 5 | 6 | 7 | /** 8 | * @author Leonid Bushuev from JetBrains 9 | */ 10 | public class DBServiceIsNotActiveException extends DBException { 11 | 12 | public DBServiceIsNotActiveException(@NotNull final String message) { 13 | super(message, null); 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /dekaf-inter/src/exceptions/DBSessionIsClosedException.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.inter.exceptions; 2 | 3 | import org.jetbrains.annotations.NotNull; 4 | 5 | 6 | 7 | /** 8 | * @author Leonid Bushuev from JetBrains 9 | */ 10 | public class DBSessionIsClosedException extends DBServiceIsNotActiveException { 11 | public DBSessionIsClosedException(@NotNull final String message) { 12 | super(message); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /dekaf-inter/src/exceptions/DBTransactionException.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.inter.exceptions; 2 | 3 | import org.jetbrains.annotations.NotNull; 4 | import org.jetbrains.annotations.Nullable; 5 | 6 | 7 | 8 | public class DBTransactionException extends DBException { 9 | 10 | public DBTransactionException(final @NotNull String message, 11 | final @Nullable Throwable cause) { 12 | super(message, cause, null); 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /dekaf-inter/src/exceptions/DBTransactionIsAlreadyStartedException.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.inter.exceptions; 2 | 3 | import org.jetbrains.annotations.NotNull; 4 | 5 | 6 | 7 | /** 8 | * @author Leonid Bushuev from JetBrains 9 | */ 10 | public class DBTransactionIsAlreadyStartedException extends DBTransactionException { 11 | 12 | public DBTransactionIsAlreadyStartedException() { 13 | super("The session is already inside a transaction", null); 14 | } 15 | 16 | public DBTransactionIsAlreadyStartedException(@NotNull final String message) { 17 | super(message, null); 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /dekaf-inter/src/exceptions/DbmsUnsupportedFeatureException.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.inter.exceptions; 2 | 3 | import org.jetbrains.annotations.NotNull; 4 | import org.jetbrains.annotations.Nullable; 5 | 6 | 7 | 8 | /** 9 | * @author Leonid Bushuev from JetBrains 10 | */ 11 | 12 | public class DbmsUnsupportedFeatureException extends DBException { 13 | 14 | public DbmsUnsupportedFeatureException(@NotNull final String message, 15 | @Nullable String statementText) { 16 | super(message, statementText); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /dekaf-inter/src/exceptions/DuplicateKeyException.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.inter.exceptions; 2 | 3 | import org.jetbrains.annotations.NotNull; 4 | import org.jetbrains.annotations.Nullable; 5 | 6 | import java.sql.SQLException; 7 | 8 | 9 | 10 | /** 11 | * 12 | **/ 13 | public class DuplicateKeyException extends DBException { 14 | 15 | public DuplicateKeyException(@NotNull final SQLException sqlException, 16 | @Nullable String statementText) { 17 | super(sqlException, statementText); 18 | } 19 | 20 | 21 | public DuplicateKeyException(@NotNull final String message, 22 | @NotNull final SQLException sqlException, 23 | @Nullable String statementText) { 24 | super(message, sqlException, statementText); 25 | } 26 | 27 | 28 | public DuplicateKeyException(@NotNull final String message, @Nullable String statementText) { 29 | super(message, statementText); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /dekaf-inter/src/exceptions/NoRowsException.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.inter.exceptions; 2 | 3 | import org.jetbrains.annotations.NotNull; 4 | import org.jetbrains.annotations.Nullable; 5 | 6 | import java.sql.SQLException; 7 | 8 | 9 | 10 | /** 11 | * 12 | **/ 13 | public class NoRowsException extends DBException { 14 | 15 | public NoRowsException(@NotNull final SQLException sqlException, @Nullable String statementText) { 16 | super(sqlException, statementText); 17 | } 18 | 19 | 20 | public NoRowsException(@NotNull final String message, 21 | @NotNull final SQLException sqlException, 22 | @Nullable String statementText) { 23 | super(message, sqlException, statementText); 24 | } 25 | 26 | 27 | public NoRowsException(@NotNull final String message, @Nullable String statementText) { 28 | super(message, statementText); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /dekaf-inter/src/exceptions/NoTableOrViewException.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.inter.exceptions; 2 | 3 | import org.jetbrains.annotations.NotNull; 4 | import org.jetbrains.annotations.Nullable; 5 | 6 | import java.sql.SQLException; 7 | 8 | 9 | 10 | /** 11 | * @author Leonid Bushuev from JetBrains 12 | */ 13 | public class NoTableOrViewException extends DBException { 14 | 15 | public NoTableOrViewException(@NotNull final SQLException sqlException, 16 | @Nullable final String statementText) { 17 | super(sqlException, statementText); 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /dekaf-inter/src/exceptions/StrippedUnknownException.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.inter.exceptions; 2 | 3 | import org.jetbrains.annotations.NotNull; 4 | import org.jetbrains.annotations.Nullable; 5 | 6 | 7 | 8 | /** 9 | * @author Leonid Bushuev from JetBrains 10 | */ 11 | public class StrippedUnknownException extends Exception { 12 | 13 | @NotNull 14 | public final String originalClassName; 15 | 16 | public StrippedUnknownException(@NotNull final Throwable originalException, 17 | @Nullable final Throwable cause) { 18 | super(prepareMessage(originalException), cause); 19 | originalClassName = originalException.getClass().getName(); 20 | setStackTrace(originalException.getStackTrace()); 21 | } 22 | 23 | private static String prepareMessage(@NotNull final Throwable originalException) { 24 | return originalException.getClass().getName() + ": " + originalException.getMessage(); 25 | } 26 | 27 | } 28 | -------------------------------------------------------------------------------- /dekaf-inter/src/exceptions/UnexpectedDBException.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.inter.exceptions; 2 | 3 | import org.jetbrains.annotations.NotNull; 4 | import org.jetbrains.annotations.Nullable; 5 | 6 | import java.sql.SQLException; 7 | 8 | 9 | 10 | /** 11 | * Unknown database error. 12 | */ 13 | public final class UnexpectedDBException extends DBException { 14 | 15 | public UnexpectedDBException(@NotNull final SQLException sqlException, 16 | @Nullable String statementText) { 17 | super(sqlException, statementText); 18 | } 19 | 20 | public UnexpectedDBException(@NotNull final String message, 21 | @NotNull final Exception exception, 22 | @Nullable String statementText) { 23 | super(message, exception, statementText); 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /dekaf-inter/src/exceptions/UnexpectedReflectionException.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.inter.exceptions; 2 | 3 | import org.jetbrains.annotations.NotNull; 4 | 5 | 6 | 7 | /** 8 | * @author Leonid Bushuev from JetBrains 9 | **/ 10 | public class UnexpectedReflectionException extends RuntimeException { 11 | 12 | public UnexpectedReflectionException(@NotNull final String message, @NotNull final Exception e) { 13 | super(message + ": " + e.getClass().getSimpleName() + ": " + e.getMessage(), e); 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /dekaf-inter/src/exceptions/UnhandledTypeException.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.inter.exceptions; 2 | 3 | import org.jetbrains.annotations.NotNull; 4 | import org.jetbrains.annotations.Nullable; 5 | 6 | 7 | 8 | /** 9 | * 10 | **/ 11 | public class UnhandledTypeException extends DBException { 12 | public UnhandledTypeException(@NotNull final String message, @Nullable String statementText) { 13 | super(message, statementText); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /dekaf-inter/src/exceptions/UnknownDBException.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.inter.exceptions; 2 | 3 | import org.jetbrains.annotations.NotNull; 4 | import org.jetbrains.annotations.Nullable; 5 | 6 | import java.sql.SQLException; 7 | 8 | 9 | 10 | /** 11 | * Unknown database error. 12 | */ 13 | public final class UnknownDBException extends DBException { 14 | 15 | public UnknownDBException(@NotNull final SQLException sqlException, 16 | @Nullable String statementText) { 17 | super(sqlException, statementText); 18 | } 19 | 20 | 21 | public UnknownDBException(@NotNull final String message, 22 | @NotNull final Exception exception, 23 | @Nullable String statementText) { 24 | super(message, exception, statementText); 25 | } 26 | 27 | 28 | } 29 | -------------------------------------------------------------------------------- /dekaf-inter/src/intf/InterColumnCursor.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.inter.intf; 2 | 3 | import org.jetbrains.annotations.Nullable; 4 | 5 | 6 | 7 | public interface InterColumnCursor extends InterCursor { 8 | 9 | void prepare(); 10 | 11 | @Nullable 12 | C[] fetchPortion(); 13 | 14 | @Nullable 15 | C[] fetchRow(); 16 | 17 | } 18 | -------------------------------------------------------------------------------- /dekaf-inter/src/intf/InterCursor.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.inter.intf; 2 | 3 | public interface InterCursor extends AutoCloseable { 4 | 5 | /** 6 | * Closes the seance. 7 | */ 8 | void close(); 9 | 10 | /** 11 | * Check whether the seance was closed. 12 | * @return whether the seance was closed. 13 | */ 14 | boolean isClosed(); 15 | 16 | } 17 | -------------------------------------------------------------------------------- /dekaf-inter/src/intf/InterIntsCursor.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.inter.intf; 2 | 3 | import org.jetbrains.annotations.Nullable; 4 | 5 | 6 | 7 | public interface InterIntsCursor extends InterCursor { 8 | 9 | void setDefaultValue(int defaultValue); 10 | 11 | @Nullable 12 | int[] fetchPortion(); 13 | 14 | @Nullable 15 | int[] fetchRow(); 16 | 17 | } 18 | -------------------------------------------------------------------------------- /dekaf-inter/src/intf/InterLongsCursor.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.inter.intf; 2 | 3 | import org.jetbrains.annotations.Nullable; 4 | 5 | 6 | 7 | public interface InterLongsCursor extends InterCursor { 8 | 9 | void setDefaultValue(long defaultValue); 10 | 11 | @Nullable 12 | long[] fetchPortion(); 13 | 14 | @Nullable 15 | long[] fetchRow(); 16 | 17 | } 18 | -------------------------------------------------------------------------------- /dekaf-inter/src/intf/InterMatrixCursor.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.inter.intf; 2 | 3 | import org.jetbrains.annotations.NotNull; 4 | 5 | 6 | 7 | public interface InterMatrixCursor extends InterCursor { 8 | 9 | void prepare(); 10 | 11 | void prepare(final @NotNull Class @NotNull [] cellClasses); 12 | 13 | void setDefaultValue(B value); 14 | 15 | B[][] fetchPortion(); 16 | 17 | B[] fetchRow(); 18 | 19 | } 20 | -------------------------------------------------------------------------------- /dekaf-inter/src/intf/InterServiceFactory.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.inter.intf; 2 | 3 | 4 | import org.jetbrains.annotations.NotNull; 5 | 6 | 7 | 8 | /** 9 | * Creates InterFacade instances for specific RDBMS. 10 | */ 11 | public interface InterServiceFactory { 12 | 13 | /** 14 | * Creates an instance of InterFacade. 15 | * @return just created instance. 16 | */ 17 | @NotNull 18 | InterFacade createFacade(); 19 | 20 | } 21 | -------------------------------------------------------------------------------- /dekaf-inter/src/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Intermediate interfaces. 3 | * 4 | * Intermediate interfaces are needed to integrate the main module of Dekaf with JDBC stuff. 5 | **/ 6 | package org.jetbrains.dekaf.inter; 7 | -------------------------------------------------------------------------------- /dekaf-inter/src/utils/EmptyIterator.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.inter.utils; 2 | 3 | import java.util.Iterator; 4 | 5 | 6 | 7 | public class EmptyIterator implements Iterator { 8 | 9 | @SuppressWarnings("rawtypes") 10 | private static final EmptyIterator instance = new EmptyIterator(); 11 | 12 | public static Iterator one() { 13 | //noinspection unchecked 14 | return instance; 15 | } 16 | 17 | @Override 18 | public boolean hasNext() { 19 | return false; 20 | } 21 | 22 | @Override 23 | public E next() { 24 | return null; 25 | } 26 | 27 | } 28 | -------------------------------------------------------------------------------- /dekaf-jdbc-test/tests/Aliases.kt: -------------------------------------------------------------------------------- 1 | @file:Suppress("platform_class_mapped_to_kotlin", "RemoveRedundantQualifierName") 2 | 3 | package org.jetbrains.dekaf.jdbcTest 4 | 5 | 6 | typealias JavaByte = java.lang.Byte 7 | typealias JavaShort = java.lang.Short 8 | typealias JavaInt = java.lang.Integer 9 | typealias JavaLong = java.lang.Long 10 | -------------------------------------------------------------------------------- /dekaf-jdbc-test/tests/impl/JdbcServiceFactoryTest.kt: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.jdbcTest.impl 2 | 3 | import lb.yaka.expectations.iz 4 | import lb.yaka.gears.expect 5 | import lb.yaka.gears.notEmpty 6 | import lb.yaka.utils.isInstanceOf 7 | import org.jetbrains.dekaf.inter.intf.InterServiceFactory 8 | import org.jetbrains.dekaf.jdbc.impl.JdbcServiceFactory 9 | import org.jetbrains.dekaf.test.utils.UnitTest 10 | import org.junit.jupiter.api.Test 11 | import java.util.* 12 | import java.util.stream.Collectors 13 | 14 | 15 | class JdbcServiceFactoryTest : UnitTest { 16 | 17 | @Test 18 | fun serviceLoading() { 19 | val loader: ServiceLoader = 20 | ServiceLoader.load(InterServiceFactory::class.java) 21 | val list: List> = 22 | loader.stream().collect(Collectors.toList()) 23 | 24 | expect that list iz notEmpty 25 | 26 | val factory = list.first().get() 27 | 28 | expect that factory isInstanceOf JdbcServiceFactory::class 29 | } 30 | 31 | } -------------------------------------------------------------------------------- /dekaf-jdbc/dekaf-jdbc.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /dekaf-jdbc/manifest/META-INF/services/org.jetbrains.dekaf.inter.intf.InterServiceFactory: -------------------------------------------------------------------------------- 1 | org.jetbrains.dekaf.jdbc.impl.JdbcServiceFactory 2 | -------------------------------------------------------------------------------- /dekaf-jdbc/src/impl/JdbcBaseCursor.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.jdbc.impl; 2 | 3 | import org.jetbrains.annotations.NotNull; 4 | import org.jetbrains.dekaf.inter.intf.InterCursor; 5 | 6 | import java.sql.ResultSet; 7 | 8 | 9 | 10 | public abstract class JdbcBaseCursor implements InterCursor { 11 | 12 | @NotNull 13 | protected final JdbcSeance seance; 14 | 15 | @NotNull 16 | protected final ResultSet rset; 17 | 18 | protected boolean end = false; 19 | private boolean closed = false; 20 | 21 | 22 | protected JdbcBaseCursor(@NotNull final JdbcSeance seance, @NotNull final ResultSet rset) { 23 | this.seance = seance; 24 | this.rset = rset; 25 | } 26 | 27 | @Override 28 | public void close() { 29 | JdbcUtil.close(rset); 30 | closed = true; 31 | } 32 | 33 | @Override 34 | public boolean isClosed() { 35 | return closed; 36 | } 37 | 38 | } 39 | -------------------------------------------------------------------------------- /dekaf-jdbc/src/impl/JdbcRowFetcher.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.jdbc.impl; 2 | 3 | import org.jetbrains.annotations.NotNull; 4 | 5 | import java.sql.ResultSet; 6 | import java.sql.SQLException; 7 | 8 | 9 | 10 | /** 11 | * Fetcher that can fetch rows from {@link ResultSet}. 12 | *

13 | * Stateless service. 14 | *

15 | * 16 | * @author Leonid Bushuev from JetBrains 17 | */ 18 | public abstract class JdbcRowFetcher { 19 | 20 | 21 | abstract R fetchRow(@NotNull final ResultSet rset) 22 | throws SQLException; 23 | } 24 | -------------------------------------------------------------------------------- /dekaf-jdbc/src/impl/JdbcRowsCollector.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.jdbc.impl; 2 | 3 | import org.jetbrains.annotations.NotNull; 4 | 5 | import java.sql.ResultSet; 6 | import java.sql.SQLException; 7 | 8 | 9 | 10 | /** 11 | * @author Leonid Bushuev from JetBrains 12 | */ 13 | public abstract class JdbcRowsCollector { 14 | 15 | protected boolean hasMoreRows = true; 16 | 17 | protected abstract T collectRows(@NotNull final ResultSet rset, int limit) throws SQLException; 18 | 19 | } 20 | -------------------------------------------------------------------------------- /dekaf-jdbc/src/impl/JdbcStuff.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.jdbc.impl; 2 | 3 | import org.jetbrains.annotations.NotNull; 4 | 5 | 6 | 7 | public final class JdbcStuff { 8 | 9 | public static void closeIt(@NotNull AutoCloseable closeable) { 10 | try { 11 | closeable.close(); 12 | } 13 | catch (Throwable e) { 14 | // panic! 15 | // TODO log somehow 16 | } 17 | } 18 | 19 | 20 | 21 | } 22 | -------------------------------------------------------------------------------- /dekaf-jdbc/src/impl/JdbcValueGetter.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.jdbc.impl; 2 | 3 | import org.jetbrains.annotations.NotNull; 4 | import org.jetbrains.annotations.Nullable; 5 | 6 | import java.sql.ResultSet; 7 | import java.sql.SQLException; 8 | 9 | 10 | 11 | /** 12 | * @author Leonid Bushuev from JetBrains 13 | */ 14 | public abstract class JdbcValueGetter { 15 | 16 | /** 17 | * Gets the cell value from the given result set. 18 | * @param rset result set. 19 | * @param index column index, starting from 1 (as in JDBC). 20 | * @return the got value, can be null. 21 | * @throws SQLException 22 | */ 23 | @Nullable 24 | abstract V getValue(@NotNull ResultSet rset, int index) 25 | throws SQLException; 26 | 27 | } 28 | -------------------------------------------------------------------------------- /dekaf-jdbc/src/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * The JDBC stuff. 3 | **/ 4 | package org.jetbrains.dekaf.jdbc; -------------------------------------------------------------------------------- /dekaf-main-test/dekaf-main-test.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /dekaf-main-test/src/base/BaseSessionTest.kt: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.mainTest.base 2 | 3 | import org.jetbrains.dekaf.main.db.inSession 4 | import org.jetbrains.dekaf.main.db.inTransaction 5 | import org.junit.jupiter.api.Order 6 | import org.junit.jupiter.api.Test 7 | 8 | 9 | class BaseSessionTest : UnitTestWithH2 { 10 | 11 | @Test @Order(1) 12 | fun basic_ping() { 13 | dbf.inSession { session -> 14 | session.ping() 15 | } 16 | } 17 | 18 | @Test @Order(2) 19 | fun basic_perform_beyondTransaction() { 20 | dbf.inSession { session -> 21 | session.perform("call 2*2") 22 | } 23 | } 24 | 25 | @Test @Order(3) 26 | fun basic_perform_inTransaction() { 27 | dbf.inTransaction { transaction -> 28 | transaction.perform("call 2*2") 29 | } 30 | } 31 | 32 | } 33 | -------------------------------------------------------------------------------- /dekaf-main-test/src/base/BaseTransactionTest.kt: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.mainTest.base 2 | 3 | import org.jetbrains.dekaf.main.db.inSession 4 | import org.junit.jupiter.api.Order 5 | import org.junit.jupiter.api.Test 6 | 7 | 8 | class BaseTransactionTest : UnitTestWithH2 { 9 | 10 | @Test @Order(1) 11 | fun basic_commit() { 12 | dbf.inSession { session -> 13 | 14 | val tran = session.beginTransaction() 15 | tran.commit() 16 | tran.close() 17 | 18 | } 19 | } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /dekaf-main-test/src/base/FactoryLoaderTest.kt: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.mainTest.base 2 | 3 | import lb.yaka.expectations.equalsTo 4 | import lb.yaka.gears.expect 5 | import org.jetbrains.dekaf.inter.settings.Settings 6 | import org.jetbrains.dekaf.main.base.FactoryLoader 7 | import org.jetbrains.dekaf.test.utils.UnitTest 8 | import org.junit.jupiter.api.Test 9 | 10 | class FactoryLoaderTest : UnitTest { 11 | 12 | @Test 13 | fun interFactory_exists() { 14 | val f = FactoryLoader.selectInterServiceFactory(Settings.empty) 15 | expect that f.javaClass.name equalsTo "org.jetbrains.dekaf.jdbc.impl.JdbcServiceFactory" 16 | } 17 | 18 | } -------------------------------------------------------------------------------- /dekaf-main-test/src/base/UnitTestWithH2.kt: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.mainTest.base 2 | 3 | import org.jetbrains.dekaf.main.DbMaster 4 | import org.jetbrains.dekaf.main.base.BaseFacade 5 | import org.jetbrains.dekaf.mainTest.util.H2memSettings 6 | import org.jetbrains.dekaf.test.utils.UnitTest 7 | import org.junit.jupiter.api.AfterAll 8 | import org.junit.jupiter.api.BeforeAll 9 | import org.junit.jupiter.api.MethodOrderer 10 | import org.junit.jupiter.api.TestMethodOrder 11 | 12 | 13 | @TestMethodOrder(MethodOrderer.OrderAnnotation::class) 14 | interface UnitTestWithH2 : UnitTest { 15 | 16 | companion object { 17 | 18 | lateinit var dbFacade: BaseFacade 19 | 20 | @BeforeAll @JvmStatic 21 | fun initH2() { 22 | dbFacade = DbMaster.open(H2memSettings) as BaseFacade 23 | dbFacade.connect() 24 | } 25 | 26 | @AfterAll @JvmStatic 27 | fun closeH2() { 28 | dbFacade.disconnect() 29 | } 30 | 31 | } 32 | 33 | 34 | val dbf: BaseFacade 35 | get() = dbFacade 36 | 37 | 38 | } -------------------------------------------------------------------------------- /dekaf-main-test/src/util/H2Util.kt: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.mainTest.util 2 | 3 | import org.jetbrains.dekaf.inter.settings.Settings 4 | 5 | 6 | val H2memSettings = 7 | Settings.of( 8 | "driver", Settings.of("class", "org.h2.Driver"), 9 | "jdbc", Settings.of("connection-string", "jdbc:h2:mem:test") 10 | ) 11 | -------------------------------------------------------------------------------- /dekaf-main-test/src/util/Numbers.kt: -------------------------------------------------------------------------------- 1 | @file:Suppress("ObjectPropertyName") 2 | 3 | package org.jetbrains.dekaf.mainTest.util 4 | 5 | 6 | const val `0`: Byte = 0.toByte() 7 | -------------------------------------------------------------------------------- /dekaf-main/dekaf-main.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /dekaf-main/src/DbMaster.kt: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.main 2 | 3 | import org.jetbrains.dekaf.inter.intf.InterFacade 4 | import org.jetbrains.dekaf.inter.settings.Settings 5 | import org.jetbrains.dekaf.main.base.BaseFacade 6 | import org.jetbrains.dekaf.main.base.FactoryLoader 7 | import org.jetbrains.dekaf.main.db.DbFacade 8 | import java.util.concurrent.CopyOnWriteArrayList 9 | 10 | 11 | object DbMaster { 12 | 13 | private val facades = CopyOnWriteArrayList() 14 | 15 | 16 | @JvmStatic 17 | fun open(settings: Settings, connect: Boolean = false): DbFacade { 18 | // inter 19 | val interFactory = FactoryLoader.selectInterServiceFactory(settings) 20 | val interFacade = interFactory.createFacade() 21 | interFacade.init(settings) 22 | // main 23 | val dbFacade = BaseFacade() 24 | dbFacade.setup(interFacade, settings) 25 | if (connect) dbFacade.connect() 26 | // ok 27 | return dbFacade 28 | } 29 | 30 | 31 | 32 | 33 | 34 | 35 | } -------------------------------------------------------------------------------- /dekaf-main/src/Readme.txt: -------------------------------------------------------------------------------- 1 | The main Dekaf module. 2 | -------------------------------------------------------------------------------- /dekaf-main/src/db/DbFacade.kt: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.main.db 2 | 3 | 4 | interface DbFacade { 5 | 6 | fun connect() 7 | 8 | fun disconnect() 9 | 10 | fun openSession(): DbSession 11 | 12 | fun isConnected(ping: Boolean = false): Boolean 13 | 14 | fun countActiveSessions(): Int 15 | 16 | } 17 | 18 | 19 | 20 | fun DbFacade.inSession(block: (DbSession) -> X): X { 21 | val session = openSession() 22 | try { 23 | return block(session) 24 | } 25 | finally { 26 | session.close() 27 | } 28 | } 29 | 30 | 31 | fun DbFacade.inTransaction(block: (DbTransaction) -> X): X = 32 | this.inSession { 33 | session -> session.inTransaction(block) 34 | } 35 | 36 | -------------------------------------------------------------------------------- /dekaf-main/src/db/DbInsideTransaction.kt: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.main.db 2 | 3 | import org.jetbrains.dekaf.main.queries.Query 4 | import org.jetbrains.dekaf.main.queries.QueryLayout 5 | 6 | 7 | interface DbInsideTransaction { 8 | 9 | /** 10 | * Performs a simple statement without parameters or result sets. 11 | */ 12 | fun perform(statementText: String) 13 | 14 | 15 | fun query(queryText: String, layout: QueryLayout): DbQueryRunner 16 | 17 | fun query(query: Query): DbQueryRunner 18 | 19 | } -------------------------------------------------------------------------------- /dekaf-main/src/db/DbQueryRunner.kt: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.main.db 2 | 3 | 4 | interface DbQueryRunner: AutoCloseable { 5 | 6 | fun run(vararg paramValues: Any?): T 7 | 8 | } 9 | -------------------------------------------------------------------------------- /dekaf-main/src/db/DbSession.kt: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.main.db 2 | 3 | 4 | interface DbSession : DbInsideTransaction, AutoCloseable { 5 | 6 | fun beginTransaction(): DbTransaction 7 | 8 | fun ping() 9 | 10 | fun markBroken() 11 | 12 | override fun close() 13 | 14 | } 15 | 16 | 17 | 18 | fun DbSession.inTransaction(block: (DbTransaction) -> X): X { 19 | val transaction = this.beginTransaction() 20 | try { 21 | val result = block(transaction) 22 | transaction.commit() 23 | return result 24 | } 25 | finally { 26 | transaction.close() 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /dekaf-main/src/db/DbTransaction.kt: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.main.db 2 | 3 | 4 | interface DbTransaction : DbInsideTransaction, AutoCloseable { 5 | 6 | fun commit() 7 | 8 | fun rollback() 9 | 10 | override fun close() 11 | 12 | } 13 | -------------------------------------------------------------------------------- /dekaf-main/src/queries/Query.kt: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.main.queries 2 | 3 | 4 | 5 | class Query ( 6 | 7 | val text: String, 8 | 9 | val layout: QueryLayout 10 | 11 | ) -------------------------------------------------------------------------------- /dekaf-main/src/queries/impl/ResultCollector.kt: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.main.queries.impl 2 | 3 | import org.jetbrains.dekaf.inter.intf.InterSeance 4 | 5 | 6 | interface ResultCollector : AutoCloseable { 7 | 8 | fun prepare(seance: InterSeance, positionIndex: Int) 9 | 10 | fun retrieve(): T 11 | 12 | override fun close() 13 | 14 | } 15 | -------------------------------------------------------------------------------- /dekaf-main/src/queries/impl/RowHandler.kt: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.main.queries.impl 2 | 3 | import org.jetbrains.dekaf.inter.intf.InterMatrixCursor 4 | import org.jetbrains.dekaf.inter.intf.InterSeance 5 | 6 | 7 | interface RowHandler { 8 | 9 | fun prepare(seance: InterSeance, position: Int): InterMatrixCursor 10 | 11 | fun handleRow(values: Array): R 12 | 13 | val rowClass: Class 14 | 15 | } -------------------------------------------------------------------------------- /dekaf-main/src/queries/impl/TableArrayResultCollector.kt: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.main.queries.impl 2 | 3 | import org.jetbrains.dekaf.inter.utils.ArrayHacks 4 | 5 | 6 | class TableArrayResultCollector: TableResultCollector, R, B> { 7 | 8 | constructor(handler: RowHandler) : super(handler) 9 | 10 | 11 | override fun retrieve(): Array { 12 | val list = retrieveIntoArrayList() 13 | val emptyArray: Array = ArrayHacks.createEmptyArray(handler.rowClass) 14 | val n = list.size 15 | if (n == 0) return emptyArray 16 | return list.toArray(emptyArray) 17 | } 18 | 19 | } -------------------------------------------------------------------------------- /dekaf-main/src/queries/impl/TableIteratorResultCollector.kt: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.main.queries.impl 2 | 3 | 4 | class TableIteratorResultCollector: TableResultCollector, R, B> { 5 | 6 | 7 | constructor(handler: RowHandler) : super(handler) 8 | 9 | 10 | override fun retrieve(): Iterator { 11 | val iterator = PortionedIterator() 12 | iterator.prepare() 13 | return iterator 14 | } 15 | 16 | 17 | } 18 | -------------------------------------------------------------------------------- /dekaf-main/src/queries/impl/TableListResultCollector.kt: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.main.queries.impl 2 | 3 | 4 | class TableListResultCollector: TableResultCollector, R, B> { 5 | 6 | constructor(handler: RowHandler) : super(handler) 7 | 8 | 9 | override fun retrieve(): List { 10 | return retrieveIntoArrayList() 11 | } 12 | 13 | } -------------------------------------------------------------------------------- /dekaf-main/src/queries/impl/TableStreamResultCollector.kt: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.main.queries.impl 2 | 3 | import java.util.* 4 | import java.util.stream.Stream 5 | import java.util.stream.StreamSupport 6 | 7 | 8 | class TableStreamResultCollector: TableResultCollector, R, B> { 9 | 10 | constructor(handler: RowHandler) : super(handler) 11 | 12 | override fun retrieve(): Stream { 13 | val iterator = PortionedIterator() 14 | iterator.prepare() 15 | if (!iterator.hasNext()) return Stream.empty() 16 | 17 | val spliterator = Spliterators.spliteratorUnknownSize(iterator, 0); 18 | val stream = StreamSupport.stream(spliterator, false) 19 | stream.onClose { cursor.close() } 20 | return stream 21 | } 22 | 23 | } -------------------------------------------------------------------------------- /dekaf-main/src/settings/SettingsFun.kt: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.main.settings 2 | 3 | import org.jetbrains.dekaf.inter.settings.Setting 4 | import org.jetbrains.dekaf.inter.settings.Settings 5 | import java.io.Serializable 6 | 7 | 8 | fun settingsOf(vararg pairs: Pair): Settings { 9 | val n = pairs.size 10 | if (n == 0) return Settings.empty 11 | val a = Array(n) { index -> 12 | val p = pairs[index] 13 | Setting(p.first, p.second) 14 | } 15 | return Settings(*a) 16 | } 17 | 18 | 19 | val Setting.pair: Pair 20 | inline get() = Pair(name, value) 21 | 22 | -------------------------------------------------------------------------------- /dekaf-main/src/simplext/SimplextTextReader.kt: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.main.simplext 2 | 3 | import org.jetbrains.dekaf.main.util.indexOf 4 | 5 | /** 6 | * 7 | */ 8 | class SimplextTextReader : SimplextReader { 9 | 10 | constructor(rootNode: N, handler: (SimplextLine) -> N) : super(rootNode, handler) 11 | 12 | 13 | fun processText(text: CharSequence) { 14 | val n = text.length 15 | var p = 0 16 | while (p < n) { 17 | val q = text.indexOf('\n', from = p, notFound = n) 18 | processLine(text, from = p, till = q) 19 | p = q + 1 20 | } 21 | } 22 | 23 | } -------------------------------------------------------------------------------- /doc/implementation-specific-services.md: -------------------------------------------------------------------------------- 1 | Implementation-specific Services 2 | ================================ 3 | 4 | Currently supported service names: 5 | 6 | | service name | description | 7 | ----------------------------------------------------------------------- 8 | | intermediate-service | intermediate/remote service | 9 | | connection-pool | connection pool | 10 | | jdbc-driver | JDBC driver | 11 | | jdbc-connection | JDBC connection | 12 | 13 | -------------------------------------------------------------------------------- /doc/settings.md: -------------------------------------------------------------------------------- 1 | Settings 2 | -------- 3 | 4 | Format of settings, passed to an RDBMS service facade. 5 | 6 | 7 | ### Driver settings 8 | 9 | Prefix: ``driver`` 10 | 11 | This settings specify how to load JDBC driver. 12 | 13 | | setting | description | 14 | | ------- | ----------- | 15 | | ``path`` | Path to the driver jar files. | 16 | | ``jars`` | Names of the jar files to load, comma separated. | 17 | | ``class`` | Jdbc driver class (should implement interface ``java.sql.Driver``). | 18 | 19 | 20 | ### JDBC setting 21 | 22 | Prefix: ``jdbc`` 23 | 24 | | setting | description | 25 | | ------- | ----------- | 26 | | ``connection-string`` | The JDBC connection string (a.k.a. JDBC URL). | 27 | 28 | 29 | Prefix: ``jdbc.properties`` 30 | 31 | All JDBC-specific properties that are passed to the JDBC driver as is. 32 | 33 | -------------------------------------------------------------------------------- /old/dekaf-cassandra-test-db/src/main/java/org/jetbrains/dekaf/core/CassandraTestHelperFactory.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.core; 2 | 3 | import org.jetbrains.annotations.NotNull; 4 | import org.jetbrains.dekaf.Cassandra; 5 | import org.jetbrains.dekaf.Rdbms; 6 | 7 | import java.util.Collections; 8 | import java.util.Set; 9 | 10 | 11 | 12 | public class CassandraTestHelperFactory implements DBTestHelperFactory { 13 | 14 | private static final Set COLLECTION_OF_CASSANDRA = Collections.singleton(Cassandra.RDBMS); 15 | 16 | 17 | @NotNull 18 | @Override 19 | public Set supportRdbms() { 20 | return COLLECTION_OF_CASSANDRA; 21 | } 22 | 23 | 24 | @NotNull 25 | @Override 26 | public DBTestHelper createTestHelperFor(@NotNull final DBFacade facade) { 27 | return new CassandraTestHelper(facade); 28 | } 29 | 30 | } 31 | -------------------------------------------------------------------------------- /old/dekaf-cassandra-test-db/src/main/resources/META-INF/services/org.jetbrains.dekaf.core.DBTestHelperFactory: -------------------------------------------------------------------------------- 1 | org.jetbrains.dekaf.core.CassandraTestHelperFactory 2 | -------------------------------------------------------------------------------- /old/dekaf-cassandra-test-db/src/main/resources/org/jetbrains/dekaf/core/CassandraTestHelper.sql: -------------------------------------------------------------------------------- 1 | ---- X1 ---- 2 | create table X1 (X INT PRIMARY KEY); 3 | 4 | ---- X1000 ---- 5 | create table X1000 (X INT PRIMARY KEY); 6 | 7 | ---- X1000000 ---- 8 | create table X1000000 (X INT PRIMARY KEY); 9 | -------------------------------------------------------------------------------- /old/dekaf-cassandra/src/main/java/org/jetbrains/dekaf/Cassandra.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf; 2 | 3 | /** 4 | * Cassandra declaration class. 5 | * 6 | * @author Liudmila Kornilova 7 | */ 8 | public abstract class Cassandra { 9 | 10 | /** 11 | * Cassandra RDBMS marker. 12 | */ 13 | public final static Rdbms RDBMS = Rdbms.of("CASSANDRA"); 14 | 15 | } 16 | -------------------------------------------------------------------------------- /old/dekaf-cassandra/src/main/java/org/jetbrains/dekaf/sql/CassandraSQL.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.sql; 2 | 3 | public class CassandraSQL { 4 | } 5 | -------------------------------------------------------------------------------- /old/dekaf-cassandra/src/main/resources/META-INF/services/org.jetbrains.dekaf.intermediate.IntegralIntermediateRdbmsProvider: -------------------------------------------------------------------------------- 1 | org.jetbrains.dekaf.jdbc.CassandraIntermediateProvider 2 | -------------------------------------------------------------------------------- /old/dekaf-cassandra/src/test/java/org/jetbrains/dekaf/jdbc/CassandraInterServiceProviderUnitTest.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.jdbc; 2 | 3 | import org.jetbrains.dekaf.assertions.PatternAssert; 4 | import org.junit.Test; 5 | 6 | import static org.jetbrains.dekaf.jdbc.CassandraIntermediateProvider.CASSANDRA_CONNECTION_STRING_EXAMPLE; 7 | import static org.jetbrains.dekaf.jdbc.CassandraIntermediateProvider.CASSANDRA_CONNECTION_STRING_PATTERN; 8 | 9 | 10 | 11 | public class CassandraInterServiceProviderUnitTest { 12 | 13 | @Test 14 | public void connectionStringExample_matches_connectionStringPattern() { 15 | PatternAssert.assertThat(CASSANDRA_CONNECTION_STRING_PATTERN) 16 | .fits(CASSANDRA_CONNECTION_STRING_EXAMPLE); 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /old/dekaf-clickhouse-test-db/src/main/java/org/jetbrains/dekaf/core/CHouseTestHelper.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.core; 2 | 3 | import org.jetbrains.annotations.NotNull; 4 | import org.jetbrains.dekaf.sql.Scriptum; 5 | 6 | 7 | 8 | public class CHouseTestHelper extends BaseTestHelper { 9 | 10 | public CHouseTestHelper(@NotNull final DBFacade db) { 11 | super(db, Scriptum.of(CHouseTestHelper.class)); 12 | } 13 | 14 | @Override 15 | public void prepareX1() { 16 | performCommand("create view if not exists X1 as select 1 X"); 17 | } 18 | 19 | @Override 20 | public void prepareX1000() { 21 | performCommand(scriptum, "X1000"); 22 | } 23 | 24 | @Override 25 | public void prepareX1000000() { 26 | prepareX1000(); 27 | performCommand(scriptum, "X1000000"); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /old/dekaf-clickhouse-test-db/src/main/java/org/jetbrains/dekaf/core/CHouseTestHelperFactory.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.core; 2 | 3 | import org.jetbrains.annotations.NotNull; 4 | import org.jetbrains.dekaf.ClickHouse; 5 | import org.jetbrains.dekaf.Rdbms; 6 | 7 | import java.util.Collections; 8 | import java.util.Set; 9 | 10 | 11 | 12 | public class CHouseTestHelperFactory implements DBTestHelperFactory { 13 | 14 | private static final Set COLLECTION_OF_CHOUSE = Collections.singleton(ClickHouse.RDBMS); 15 | 16 | 17 | @NotNull 18 | @Override 19 | public Set supportRdbms() { 20 | return COLLECTION_OF_CHOUSE; 21 | } 22 | 23 | 24 | @NotNull 25 | @Override 26 | public DBTestHelper createTestHelperFor(@NotNull final DBFacade facade) { 27 | return new CHouseTestHelper(facade); 28 | } 29 | 30 | } 31 | -------------------------------------------------------------------------------- /old/dekaf-clickhouse-test-db/src/main/resources/META-INF/services/org.jetbrains.dekaf.core.DBTestHelperFactory: -------------------------------------------------------------------------------- 1 | org.jetbrains.dekaf.core.CHouseTestHelperFactory 2 | -------------------------------------------------------------------------------- /old/dekaf-clickhouse-test-db/src/main/resources/org/jetbrains/dekaf/core/CHouseTestHelper.sql: -------------------------------------------------------------------------------- 1 | ---- X1000 ---- 2 | create view if exists X1000 as 3 | select number X from system.numbers limit 1000 4 | ; 5 | 6 | 7 | ---- X1000000 ---- 8 | create view if exists X1000000 as 9 | select number X from system.numbers limit 1000000 10 | ; 11 | 12 | 13 | ---- EnsureNoTableOrViewMetaQuery ---- 14 | select 'drop table if exists `' || replaceAll(name, '`', '``') || '`' as cmd 15 | from system.tables 16 | where database = currentDatabase() 17 | and lower(name) in (lower(?),lower(?),lower(?),lower(?)) 18 | ; 19 | 20 | 21 | ---- ZapSchemaMetaQuery ---- 22 | select 'drop table if exists `' || replaceAll(name, '`', '`') || '`' as cmd 23 | from system.tables 24 | where database = currentDatabase() 25 | ; 26 | -------------------------------------------------------------------------------- /old/dekaf-clickhouse-tests/src/test/java/org/jetbrains/dekaf/CHouseIntegrationTests.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf; 2 | 3 | import org.jetbrains.dekaf.core.CHouseCommandRunnerTest; 4 | import org.jetbrains.dekaf.core.CHousePrimaryTest; 5 | import org.jetbrains.dekaf.core.CHouseQueryRunnerTest; 6 | import org.jetbrains.dekaf.core.CHouseSessionTest; 7 | import org.jetbrains.dekaf.jdbc.CHouseExceptionRecognizingTest; 8 | import org.junit.runner.RunWith; 9 | import org.junit.runners.Suite; 10 | 11 | 12 | 13 | @RunWith(Suite.class) 14 | @Suite.SuiteClasses({ 15 | CHousePrimaryTest.class, 16 | CHouseSessionTest.class, 17 | CHouseCommandRunnerTest.class, 18 | CHouseQueryRunnerTest.class, 19 | CHouseExceptionRecognizingTest.class 20 | }) 21 | public class CHouseIntegrationTests {} 22 | -------------------------------------------------------------------------------- /old/dekaf-clickhouse-tests/src/test/java/org/jetbrains/dekaf/core/CHouseCommandRunnerTest.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.core; 2 | 3 | public class CHouseCommandRunnerTest extends CommonCommandRunnerTest { 4 | 5 | 6 | 7 | 8 | } 9 | -------------------------------------------------------------------------------- /old/dekaf-clickhouse-tests/src/test/java/org/jetbrains/dekaf/core/CHousePrimaryTest.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.core; 2 | 3 | import org.jetbrains.dekaf.ClickHouse; 4 | import org.junit.FixMethodOrder; 5 | import org.junit.Test; 6 | import org.junit.internal.AssumptionViolatedException; 7 | import org.junit.runners.MethodSorters; 8 | 9 | import static org.assertj.core.api.Assertions.assertThat; 10 | 11 | 12 | 13 | @FixMethodOrder(MethodSorters.JVM) 14 | public class CHousePrimaryTest extends CommonPrimaryTest { 15 | 16 | @Test 17 | public void rdbms_is_CHouse() { 18 | assertThat(DB.rdbms()).isEqualTo(ClickHouse.RDBMS); 19 | } 20 | 21 | 22 | @Override 23 | public void getConnectionInfo_user() { 24 | throw new AssumptionViolatedException("In ClickHouse user can be empty"); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /old/dekaf-clickhouse-tests/src/test/java/org/jetbrains/dekaf/core/CHouseQueryRunnerTest.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.core; 2 | 3 | public class CHouseQueryRunnerTest extends CommonQueryRunnerTest { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /old/dekaf-clickhouse-tests/src/test/java/org/jetbrains/dekaf/core/CHouseSessionTest.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.core; 2 | 3 | import org.junit.FixMethodOrder; 4 | import org.junit.runners.MethodSorters; 5 | 6 | 7 | 8 | @FixMethodOrder(MethodSorters.JVM) 9 | public class CHouseSessionTest extends CommonSessionTest { 10 | 11 | 12 | } 13 | -------------------------------------------------------------------------------- /old/dekaf-clickhouse-tests/src/test/java/org/jetbrains/dekaf/jdbc/CHouseExceptionRecognizingTest.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.jdbc; 2 | 3 | import org.jetbrains.dekaf.core.CommonExceptionRecognizingTest; 4 | 5 | 6 | 7 | public class CHouseExceptionRecognizingTest extends CommonExceptionRecognizingTest { 8 | 9 | 10 | } 11 | -------------------------------------------------------------------------------- /old/dekaf-clickhouse/src/main/java/org/jetbrains/dekaf/ClickHouse.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf; 2 | 3 | public abstract class ClickHouse { 4 | 5 | public final static Rdbms RDBMS = Rdbms.of("CLICKHOUSE"); 6 | 7 | } 8 | -------------------------------------------------------------------------------- /old/dekaf-clickhouse/src/main/java/org/jetbrains/dekaf/sql/ClickHouseSQL.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.sql; 2 | 3 | public class ClickHouseSQL { 4 | } 5 | -------------------------------------------------------------------------------- /old/dekaf-clickhouse/src/main/resources/META-INF/services/org.jetbrains.dekaf.intermediate.IntegralIntermediateRdbmsProvider: -------------------------------------------------------------------------------- 1 | org.jetbrains.dekaf.jdbc.CHouseIntermediateProvider 2 | -------------------------------------------------------------------------------- /old/dekaf-clickhouse/src/test/java/org/jetbrains/dekaf/jdbc/CHouseInterServiceProviderTest.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.jdbc; 2 | 3 | import org.junit.Before; 4 | import org.junit.Test; 5 | 6 | import java.sql.Driver; 7 | import java.sql.DriverManager; 8 | import java.sql.SQLException; 9 | 10 | import static org.assertj.core.api.Assertions.assertThat; 11 | import static org.jetbrains.dekaf.jdbc.CHouseIntermediateProvider.CHOUSE_CONNECTION_STRING_EXAMPLE; 12 | 13 | 14 | 15 | public class CHouseInterServiceProviderTest { 16 | 17 | protected CHouseIntermediateProvider myProvider; 18 | 19 | @Before 20 | public void setup() { 21 | myProvider = CHouseIntermediateProvider.INSTANCE; 22 | } 23 | 24 | @Test 25 | public void driverIsLoaded() throws SQLException { 26 | final Driver driver = DriverManager.getDriver(CHOUSE_CONNECTION_STRING_EXAMPLE); 27 | assertThat(driver).isNotNull(); 28 | } 29 | 30 | } -------------------------------------------------------------------------------- /old/dekaf-clickhouse/src/test/java/org/jetbrains/dekaf/jdbc/CHouseInterServiceProviderUnitTest.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.jdbc; 2 | 3 | import org.jetbrains.dekaf.assertions.PatternAssert; 4 | import org.junit.Test; 5 | 6 | import static org.jetbrains.dekaf.jdbc.CHouseIntermediateProvider.CHOUSE_CONNECTION_STRING_EXAMPLE; 7 | import static org.jetbrains.dekaf.jdbc.CHouseIntermediateProvider.CHOUSE_CONNECTION_STRING_PATTERN; 8 | 9 | 10 | 11 | public class CHouseInterServiceProviderUnitTest { 12 | 13 | @Test 14 | public void connectionStringExample_matches_connectionStringPattern() { 15 | PatternAssert.assertThat(CHOUSE_CONNECTION_STRING_PATTERN) 16 | .fits(CHOUSE_CONNECTION_STRING_EXAMPLE); 17 | } 18 | 19 | } -------------------------------------------------------------------------------- /old/dekaf-clickhouse/src/test/java/org/jetbrains/dekaf/jdbc/CHouseJdbcIntegrationTests.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.jdbc; 2 | 3 | 4 | import org.junit.runner.RunWith; 5 | import org.junit.runners.Suite; 6 | 7 | 8 | 9 | @RunWith(Suite.class) 10 | @Suite.SuiteClasses({ 11 | CHouseInterServiceProviderTest.class 12 | }) 13 | public class CHouseJdbcIntegrationTests { 14 | 15 | static { 16 | System.setProperty("java.awt.headless", "true"); 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /old/dekaf-clickhouse/src/test/java/org/jetbrains/dekaf/jdbc/CHouseJdbcUnitTests.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.jdbc; 2 | 3 | 4 | import org.junit.runner.RunWith; 5 | import org.junit.runners.Suite; 6 | 7 | 8 | 9 | @RunWith(Suite.class) 10 | @Suite.SuiteClasses({ 11 | CHouseInterServiceProviderTest.class 12 | }) 13 | public class CHouseJdbcUnitTests { 14 | 15 | } 16 | -------------------------------------------------------------------------------- /old/dekaf-core-test-db/src/main/java/org/jetbrains/dekaf/core/DBTestHelperFactory.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.core; 2 | 3 | import org.jetbrains.annotations.NotNull; 4 | import org.jetbrains.dekaf.Rdbms; 5 | 6 | import java.util.Set; 7 | 8 | 9 | 10 | /** 11 | * Creates applicable test helpers. 12 | * 13 | * @author Leonid Bushuev from JetBrains 14 | **/ 15 | public interface DBTestHelperFactory { 16 | 17 | /** 18 | * RDBMS that this factory supports. 19 | * @return the set of supported RDBMS. 20 | */ 21 | @NotNull 22 | Set supportRdbms(); 23 | 24 | 25 | /** 26 | * Creates a helper for the specified RDBMS. 27 | * 28 | *

29 | * This method creates a separate instance on each call. 30 | *

31 | * 32 | * @param facade the facade of database to create a helper for. 33 | * @return just created helper. 34 | */ 35 | @NotNull 36 | DBTestHelper createTestHelperFor(@NotNull DBFacade facade); 37 | 38 | } 39 | -------------------------------------------------------------------------------- /old/dekaf-core-test-db/src/main/java/org/jetbrains/dekaf/core/UnknownDBTestHelperFactory.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.core; 2 | 3 | import org.jetbrains.annotations.NotNull; 4 | import org.jetbrains.dekaf.Rdbms; 5 | import org.jetbrains.dekaf.jdbc.UnknownDatabase; 6 | 7 | import java.util.Collections; 8 | import java.util.Set; 9 | 10 | 11 | 12 | /** 13 | * @author Leonid Bushuev 14 | **/ 15 | public class UnknownDBTestHelperFactory implements DBTestHelperFactory { 16 | 17 | private static final Set COLLECTION_OF_H2DB = Collections.singleton(UnknownDatabase.RDBMS); 18 | 19 | 20 | @NotNull 21 | @Override 22 | public Set supportRdbms() { 23 | return COLLECTION_OF_H2DB; 24 | } 25 | 26 | 27 | @NotNull 28 | @Override 29 | public DBTestHelper createTestHelperFor(@NotNull final DBFacade facade) { 30 | return new UnknownDBTestHelper(facade); 31 | } 32 | 33 | } 34 | -------------------------------------------------------------------------------- /old/dekaf-core-test-db/src/main/java/org/jetbrains/dekaf/exceptions/DBProtectionException.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.exceptions; 2 | 3 | import org.jetbrains.annotations.NotNull; 4 | import org.jetbrains.annotations.Nullable; 5 | 6 | 7 | 8 | /** 9 | * @author Leonid Bushuev from JetBrains 10 | **/ 11 | public class DBProtectionException extends DBException { 12 | 13 | public DBProtectionException(@NotNull final String message, 14 | @Nullable final String statementText) { 15 | super(message, statementText); 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /old/dekaf-core-test-db/src/main/resources/META-INF/services/org.jetbrains.dekaf.core.DBTestHelperFactory: -------------------------------------------------------------------------------- 1 | org.jetbrains.dekaf.core.UnknownDBTestHelperFactory 2 | -------------------------------------------------------------------------------- /old/dekaf-core-test-db/src/main/resources/org/jetbrains/dekaf/core/UnknownDBTestHelper.sql: -------------------------------------------------------------------------------- 1 | ---- X10 ---- 2 | if object_id('X10') is null 3 | execute(' 4 | create view X10 as 5 | select 1 as X 6 | union all 7 | select 2 as X 8 | union all 9 | select 3 as X 10 | union all 11 | select 4 as X 12 | union all 13 | select 5 as X 14 | union all 15 | select 6 as X 16 | union all 17 | select 7 as X 18 | union all 19 | select 8 as X 20 | union all 21 | select 9 as X 22 | union all 23 | select 10 as X 24 | ') 25 | ; 26 | 27 | 28 | ---- X1000 ---- 29 | if object_id('X1000') is null 30 | execute(' 31 | create view X1000 as 32 | select (A.X - 1) * 100 + (B.X - 1) * 10 + C.X as X 33 | from X10 A, 34 | X10 B, 35 | X10 C 36 | ') 37 | ; 38 | 39 | 40 | ---- X1000000 ---- 41 | if object_id('X1000000') is null 42 | execute(' 43 | create view X1000000 as 44 | select (P.X - 1)*1000 + Q.X as X 45 | from X1000 P, 46 | X1000 Q 47 | ') 48 | ; 49 | -------------------------------------------------------------------------------- /old/dekaf-core-test-db/src/test/java/org/jetbrains/dekaf/CommonIntegrationCase.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf; 2 | 3 | import org.jetbrains.dekaf.core.DBFacade; 4 | import org.jetbrains.dekaf.core.DBTestHelper; 5 | import org.junit.AfterClass; 6 | import org.junit.BeforeClass; 7 | import org.junit.FixMethodOrder; 8 | import org.junit.runners.MethodSorters; 9 | 10 | 11 | 12 | /** 13 | * @author Leonid Bushuev from JetBrains 14 | **/ 15 | @FixMethodOrder(MethodSorters.JVM) 16 | public abstract class CommonIntegrationCase { 17 | 18 | protected static DBFacade DB; 19 | protected static DBTestHelper TH; 20 | 21 | 22 | @BeforeClass 23 | public static void setupTestDB() { 24 | System.setProperty("java.awt.headless", "true"); 25 | DB = TestDB.DB; 26 | TH = TestDB.TH; 27 | } 28 | 29 | 30 | @AfterClass 31 | public static void disconnectFromTestDB() { 32 | if (DB != null) { 33 | TestDB.disconnect(); 34 | } 35 | } 36 | 37 | 38 | } 39 | -------------------------------------------------------------------------------- /old/dekaf-core-test-db/src/test/java/org/jetbrains/dekaf/core/CommonExceptionRecognizingTest.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.core; 2 | 3 | import org.jetbrains.annotations.NotNull; 4 | import org.jetbrains.dekaf.CommonIntegrationCase; 5 | import org.jetbrains.dekaf.exceptions.NoTableOrViewException; 6 | import org.junit.Before; 7 | import org.junit.Test; 8 | 9 | 10 | 11 | /** 12 | * @author Leonid Bushuev from JetBrains 13 | */ 14 | public class CommonExceptionRecognizingTest extends CommonIntegrationCase { 15 | 16 | @Before 17 | public void setUp() throws Exception { 18 | DB.connect(); 19 | } 20 | 21 | @Test(expected = NoTableOrViewException.class) 22 | public void recognize_NoTableOrView() { 23 | DB.inTransaction(new InTransactionNoResult() { 24 | @Override 25 | public void run(@NotNull final DBTransaction tran) { 26 | tran.query("select * from unexistent_table", Layouts.existence()).run(); 27 | } 28 | }); 29 | } 30 | 31 | } 32 | -------------------------------------------------------------------------------- /old/dekaf-core/src/main/java/org/jetbrains/dekaf/core/BaseCommandRunner.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.core; 2 | 3 | import org.jetbrains.dekaf.intermediate.IntegralIntermediateSeance; 4 | 5 | 6 | 7 | /** 8 | * @author Leonid Bushuev from JetBrains 9 | */ 10 | public class BaseCommandRunner implements DBCommandRunner, BaseSeanceRunner { 11 | 12 | private final IntegralIntermediateSeance myInterSeance; 13 | 14 | protected BaseCommandRunner(final IntegralIntermediateSeance interSeance) { 15 | myInterSeance = interSeance; 16 | } 17 | 18 | @Override 19 | public DBCommandRunner withParams(final Object... params) { 20 | myInterSeance.setInParameters(params); 21 | return this; 22 | } 23 | 24 | @Override 25 | public DBCommandRunner run() { 26 | myInterSeance.execute(); 27 | return this; 28 | } 29 | 30 | 31 | @Override 32 | public void close() { 33 | myInterSeance.close(); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /old/dekaf-core/src/main/java/org/jetbrains/dekaf/core/BaseSeanceRunner.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.core; 2 | 3 | /** 4 | * @author Leonid Bushuev from JetBrains 5 | */ 6 | public interface BaseSeanceRunner { 7 | 8 | void close(); 9 | 10 | } 11 | -------------------------------------------------------------------------------- /old/dekaf-core/src/main/java/org/jetbrains/dekaf/core/DBCommandRunner.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.core; 2 | 3 | /** 4 | * @author Leonid Bushuev from JetBrains 5 | */ 6 | public interface DBCommandRunner { 7 | 8 | /** 9 | * Assigns command parameters. 10 | * @param params parameters, one for each '?' sign in the command. 11 | * @return the query. 12 | */ 13 | DBCommandRunner withParams(Object... params); 14 | 15 | /** 16 | * Performs the query. 17 | */ 18 | DBCommandRunner run(); 19 | } 20 | 21 | -------------------------------------------------------------------------------- /old/dekaf-core/src/main/java/org/jetbrains/dekaf/core/DBScriptRunner.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.core; 2 | 3 | /** 4 | * @author Leonid Bushuev from JetBrains 5 | */ 6 | public interface DBScriptRunner { 7 | 8 | /** 9 | * Performs the script - all commands one by one. 10 | */ 11 | DBScriptRunner run(); 12 | } 13 | 14 | -------------------------------------------------------------------------------- /old/dekaf-core/src/main/java/org/jetbrains/dekaf/core/DBSession.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.core; 2 | 3 | 4 | 5 | /** 6 | * A session with database. 7 | * 8 | *

9 | * The instance of this session can be borrowed from {@link DBFacade}, 10 | * or instantiated by {@link DBSessions}. 11 | *

12 | * 13 | * @see DBFacade 14 | * @see DBTransaction 15 | * @see DBSessions 16 | **/ 17 | public interface DBSession extends DBTransaction, ImplementationAccessibleService { 18 | 19 | /** 20 | * Performs the given operation in transaction and returns the result. 21 | * 22 | * @param operation operation to perform. 23 | * @param type of result. 24 | * @return the result. 25 | */ 26 | R inTransaction(InTransaction operation); 27 | 28 | /** 29 | * Performs the given operation in transaction and returns the result. 30 | * 31 | * @param operation operation to perform. 32 | */ 33 | void inTransaction(InTransactionNoResult operation); 34 | 35 | } 36 | -------------------------------------------------------------------------------- /old/dekaf-core/src/main/java/org/jetbrains/dekaf/core/DBTransaction.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.core; 2 | 3 | import org.jetbrains.annotations.NotNull; 4 | import org.jetbrains.dekaf.sql.SqlCommand; 5 | import org.jetbrains.dekaf.sql.SqlQuery; 6 | import org.jetbrains.dekaf.sql.SqlScript; 7 | 8 | 9 | 10 | /** 11 | * Database transaction. 12 | **/ 13 | public interface DBTransaction { 14 | 15 | @NotNull 16 | DBCommandRunner command(@NotNull final SqlCommand command); 17 | 18 | @NotNull 19 | DBCommandRunner command(@NotNull final String commandText); 20 | 21 | @NotNull 22 | DBQueryRunner query(@NotNull final SqlQuery query); 23 | 24 | @NotNull 25 | DBQueryRunner query(@NotNull final String queryText, 26 | @NotNull final ResultLayout layout); 27 | 28 | @NotNull 29 | DBScriptRunner script(@NotNull final SqlScript script); 30 | 31 | } 32 | -------------------------------------------------------------------------------- /old/dekaf-core/src/main/java/org/jetbrains/dekaf/core/InSession.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.core; 2 | 3 | import org.jetbrains.annotations.NotNull; 4 | 5 | 6 | 7 | /** 8 | * In-session closure. 9 | */ 10 | public interface InSession { 11 | 12 | R run(@NotNull final DBSession session); 13 | } 14 | -------------------------------------------------------------------------------- /old/dekaf-core/src/main/java/org/jetbrains/dekaf/core/InSessionNoResult.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.core; 2 | 3 | import org.jetbrains.annotations.NotNull; 4 | 5 | 6 | 7 | /** 8 | * In-session closure. 9 | */ 10 | public interface InSessionNoResult { 11 | 12 | void run(@NotNull final DBSession session); 13 | } 14 | -------------------------------------------------------------------------------- /old/dekaf-core/src/main/java/org/jetbrains/dekaf/core/InTransaction.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.core; 2 | 3 | import org.jetbrains.annotations.NotNull; 4 | 5 | 6 | 7 | /** 8 | * In-transaction closure. 9 | */ 10 | public interface InTransaction { 11 | 12 | R run(@NotNull final DBTransaction tran); 13 | } 14 | -------------------------------------------------------------------------------- /old/dekaf-core/src/main/java/org/jetbrains/dekaf/core/InTransactionNoResult.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.core; 2 | 3 | import org.jetbrains.annotations.NotNull; 4 | 5 | 6 | 7 | /** 8 | * In-transaction closure. 9 | */ 10 | public interface InTransactionNoResult { 11 | 12 | void run(@NotNull final DBTransaction tran); 13 | } 14 | -------------------------------------------------------------------------------- /old/dekaf-core/src/main/java/org/jetbrains/dekaf/core/QueryKind.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.core; 2 | 3 | /** 4 | * Kind of SQL query. 5 | * 6 | * @author Leonid Bushuev from JetBrains 7 | */ 8 | public enum QueryKind{ 9 | 10 | /** 11 | * Select query or call to a function that returns cursor. 12 | */ 13 | SELECT, 14 | 15 | /** 16 | * Insert/Update/Delete query or a code block that can be performed inside a transaction. 17 | */ 18 | IUD, 19 | 20 | /** 21 | * Other kind of query (DDL or DCL). 22 | */ 23 | OTHER 24 | } 25 | -------------------------------------------------------------------------------- /old/dekaf-core/src/main/java/org/jetbrains/dekaf/core/ValueType.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.core; 2 | 3 | /** 4 | * @author Leonid Bushuev from JetBrains 5 | */ 6 | public enum ValueType { 7 | 8 | BOOLEAN, 9 | BYTE, 10 | SHORT, 11 | INT, 12 | LONG, 13 | FLOAT, 14 | DOUBLE, 15 | DECIMAL, 16 | STRING, 17 | DATE, 18 | TIME, 19 | TIMESTAMP, 20 | 21 | } 22 | -------------------------------------------------------------------------------- /old/dekaf-core/src/main/java/org/jetbrains/dekaf/intermediate/AdaptIntermediateCursor.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.intermediate; 2 | 3 | import org.jetbrains.annotations.NotNull; 4 | 5 | 6 | 7 | /** 8 | * @author Leonid Bushuev from JetBrains 9 | */ 10 | public abstract class AdaptIntermediateCursor implements IntegralIntermediateCursor { 11 | 12 | @NotNull 13 | protected final PrimeIntermediateCursor myRemoteCursor; 14 | 15 | public AdaptIntermediateCursor(@NotNull final PrimeIntermediateCursor remoteCursor) { 16 | myRemoteCursor = remoteCursor; 17 | } 18 | 19 | @Override 20 | public boolean hasRows() { 21 | return myRemoteCursor.hasRows(); 22 | } 23 | 24 | @Override 25 | @NotNull 26 | public String[] getColumnNames() { 27 | return myRemoteCursor.getColumnNames(); 28 | } 29 | 30 | public void setCollectLimit(final int limit) { 31 | myRemoteCursor.setCollectLimit(limit); 32 | } 33 | 34 | @Override 35 | public void close() { 36 | myRemoteCursor.close(); 37 | } 38 | 39 | } 40 | -------------------------------------------------------------------------------- /old/dekaf-core/src/main/java/org/jetbrains/dekaf/intermediate/AdaptIntermediatePortableCursor.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.intermediate; 2 | 3 | import org.jetbrains.annotations.NotNull; 4 | 5 | 6 | 7 | /** 8 | * @author Leonid Bushuev from JetBrains 9 | */ 10 | public class AdaptIntermediatePortableCursor extends AdaptIntermediateCursor { 11 | 12 | 13 | public AdaptIntermediatePortableCursor(@NotNull final PrimeIntermediateCursor remoteCursor) { 14 | super(remoteCursor); 15 | } 16 | 17 | @Override 18 | public T fetch() {return myRemoteCursor.fetch();} 19 | 20 | 21 | } 22 | -------------------------------------------------------------------------------- /old/dekaf-core/src/main/java/org/jetbrains/dekaf/intermediate/DBExceptionRecognizer.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.intermediate; 2 | 3 | import org.jetbrains.annotations.NotNull; 4 | import org.jetbrains.annotations.Nullable; 5 | import org.jetbrains.dekaf.exceptions.DBException; 6 | 7 | import java.sql.SQLException; 8 | 9 | 10 | 11 | /** 12 | * Recognizes RDBMS-specific exceptions and wrap them into unified DB-wrappers. 13 | */ 14 | public interface DBExceptionRecognizer { 15 | 16 | @NotNull 17 | DBException recognizeException(@NotNull SQLException sqlException, @Nullable String statementText); 18 | 19 | } 20 | -------------------------------------------------------------------------------- /old/dekaf-core/src/main/java/org/jetbrains/dekaf/intermediate/IntegralIntermediateCursor.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.intermediate; 2 | 3 | /** 4 | * @author Leonid Bushuev from JetBrains 5 | */ 6 | public interface IntegralIntermediateCursor extends PrimeIntermediateCursor { 7 | } 8 | -------------------------------------------------------------------------------- /old/dekaf-core/src/main/java/org/jetbrains/dekaf/intermediate/IntegralIntermediateFacade.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.intermediate; 2 | 3 | import org.jetbrains.annotations.NotNull; 4 | 5 | 6 | 7 | /** 8 | * @author Leonid Bushuev from JetBrains 9 | */ 10 | public interface IntegralIntermediateFacade extends PrimeIntermediateFacade { 11 | 12 | @NotNull 13 | @Override 14 | IntegralIntermediateSession openSession(); 15 | 16 | } 17 | -------------------------------------------------------------------------------- /old/dekaf-core/src/main/java/org/jetbrains/dekaf/intermediate/IntegralIntermediateRdbmsProvider.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.intermediate; 2 | 3 | import org.jetbrains.annotations.NotNull; 4 | import org.jetbrains.annotations.Nullable; 5 | 6 | import java.util.Properties; 7 | 8 | 9 | 10 | /** 11 | * @author Leonid Bushuev from JetBrains 12 | */ 13 | public interface IntegralIntermediateRdbmsProvider extends PrimeIntermediateRdbmsProvider { 14 | 15 | @NotNull 16 | @Override 17 | IntegralIntermediateFacade openFacade(@NotNull String connectionString, 18 | @Nullable Properties connectionProperties, 19 | int connectionsLimit); 20 | 21 | /** 22 | * Provides with the error recognizer that applicable to this RDBMS. 23 | * @return an instance of error recognizer (usually a singleton instance). 24 | */ 25 | @NotNull 26 | DBExceptionRecognizer getExceptionRecognizer(); 27 | 28 | } 29 | -------------------------------------------------------------------------------- /old/dekaf-core/src/main/java/org/jetbrains/dekaf/intermediate/IntegralIntermediateSeance.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.intermediate; 2 | 3 | import org.jetbrains.annotations.NotNull; 4 | import org.jetbrains.dekaf.core.ResultLayout; 5 | 6 | 7 | 8 | /** 9 | * @author Leonid Bushuev from JetBrains 10 | */ 11 | public interface IntegralIntermediateSeance extends PrimeIntermediateSeance { 12 | 13 | @NotNull 14 | @Override 15 | IntegralIntermediateCursor openCursor(int parameterPosition, @NotNull ResultLayout layout); 16 | 17 | } 18 | -------------------------------------------------------------------------------- /old/dekaf-core/src/main/java/org/jetbrains/dekaf/intermediate/IntegralIntermediateSession.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.intermediate; 2 | 3 | import org.jetbrains.annotations.NotNull; 4 | import org.jetbrains.annotations.Nullable; 5 | import org.jetbrains.dekaf.core.ParameterDef; 6 | 7 | 8 | 9 | /** 10 | * @author Leonid Bushuev from JetBrains 11 | */ 12 | public interface IntegralIntermediateSession extends PrimeIntermediateSession { 13 | 14 | @NotNull 15 | @Override 16 | IntegralIntermediateSeance openSeance(@NotNull final String statementText, 17 | @Nullable final ParameterDef[] outParameters); 18 | 19 | } 20 | -------------------------------------------------------------------------------- /old/dekaf-core/src/main/java/org/jetbrains/dekaf/intermediate/PrimeIntermediateCursor.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.intermediate; 2 | 3 | import org.jetbrains.annotations.NotNull; 4 | 5 | 6 | 7 | /** 8 | * @author Leonid Bushuev from JetBrains 9 | */ 10 | public interface PrimeIntermediateCursor { 11 | 12 | 13 | boolean hasRows(); 14 | 15 | @NotNull 16 | String[] getColumnNames(); 17 | 18 | 19 | void setCollectLimit(int limit); 20 | 21 | 22 | R fetch(); 23 | 24 | 25 | void close(); 26 | 27 | } 28 | -------------------------------------------------------------------------------- /old/dekaf-core/src/main/java/org/jetbrains/dekaf/intermediate/PrimeIntermediateSeance.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.intermediate; 2 | 3 | import org.jetbrains.annotations.NotNull; 4 | import org.jetbrains.dekaf.core.ImplementationAccessibleService; 5 | import org.jetbrains.dekaf.core.ResultLayout; 6 | 7 | 8 | 9 | /** 10 | * Portable intermediate DB seance. 11 | * 12 | * @author Leonid Bushuev from JetBrains 13 | */ 14 | public interface PrimeIntermediateSeance extends ImplementationAccessibleService { 15 | 16 | 17 | void setInParameters(@NotNull Object[] parameters); 18 | 19 | void setPackLimit(int packLimit); 20 | 21 | void execute(); 22 | 23 | int getAffectedRowsCount(); 24 | 25 | 26 | @NotNull 27 | PrimeIntermediateCursor openCursor(int parameterPosition, @NotNull ResultLayout layout); 28 | 29 | 30 | //// CLOSE \\\\ 31 | 32 | void close(); 33 | 34 | 35 | 36 | } 37 | -------------------------------------------------------------------------------- /old/dekaf-core/src/main/java/org/jetbrains/dekaf/intermediate/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Dekaf Intermediate Layer. 3 | * 4 | *

5 | * Contains interfaces and values-object classes that are needed to interact between client layer (client side) and RDBMS vendor provided API. 6 | *

7 | * 8 | *

9 | * There are interfaces: 10 | *

    11 | *
  • PrimeIntermediate*: portable prime (lite) services that can be run remotely (in another java process)
  • 12 | *
  • IntegralIntermediate*: non-portable integral services that contain methods for improve performance when interacting directly (when the vendor API is in the same process)
  • 13 | *
14 | *

15 | * 16 | *

17 | * Also contains interface {@link org.jetbrains.dekaf.intermediate.DBExceptionRecognizer} for RDBMS-specific errors analysis. 18 | *

19 | * 20 | * 21 | * @author Leonid Bushuev from JetBrains 22 | */ 23 | package org.jetbrains.dekaf.intermediate; -------------------------------------------------------------------------------- /old/dekaf-core/src/main/java/org/jetbrains/dekaf/jdbc/UnknownDatabase.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.jdbc; 2 | 3 | import org.jetbrains.dekaf.Rdbms; 4 | 5 | 6 | 7 | /** 8 | * Unknown/unspecified RDBMS declaration class. 9 | * 10 | * @author Leonid Bushuev from JetBrains 11 | */ 12 | public abstract class UnknownDatabase { 13 | 14 | /** 15 | * Unknown RDBMS marker. 16 | */ 17 | public static final Rdbms RDBMS = Rdbms.of("UNKNOWN"); 18 | 19 | } 20 | -------------------------------------------------------------------------------- /old/dekaf-core/src/main/java/org/jetbrains/dekaf/jdbc/UnknownDatabaseExceptionRecognizer.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.jdbc; 2 | 3 | /** 4 | * @author Leonid Bushuev from JetBrains 5 | */ 6 | public final class UnknownDatabaseExceptionRecognizer extends BaseExceptionRecognizer { 7 | 8 | public final static UnknownDatabaseExceptionRecognizer INSTANCE = new UnknownDatabaseExceptionRecognizer(); 9 | 10 | } 11 | -------------------------------------------------------------------------------- /old/dekaf-core/src/main/java/org/jetbrains/dekaf/jdbc/UnknownDatabaseInfo.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.jdbc; 2 | 3 | class UnknownDatabaseInfo { 4 | 5 | boolean isOracle, isDB2, isHsql, isDerby; 6 | 7 | String fromSingleRowTable = ""; 8 | 9 | } 10 | -------------------------------------------------------------------------------- /old/dekaf-core/src/main/java/org/jetbrains/dekaf/jdbc/pooling/ConnectionPoolException.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.jdbc.pooling; 2 | 3 | import org.jetbrains.annotations.NotNull; 4 | import org.jetbrains.annotations.Nullable; 5 | import org.jetbrains.dekaf.exceptions.DBException; 6 | 7 | 8 | 9 | /** 10 | * @author Leonid Bushuev from JetBrains 11 | */ 12 | public class ConnectionPoolException extends DBException { 13 | 14 | public ConnectionPoolException(@NotNull String message, @NotNull Throwable cause, @Nullable String statementText) { 15 | super(message, cause, statementText); 16 | } 17 | 18 | 19 | public ConnectionPoolException(@NotNull String message, @Nullable String statementText) { 20 | super(message, statementText); 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /old/dekaf-core/src/main/java/org/jetbrains/dekaf/jdbc/pooling/ConnectionPoolExhaustedException.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.jdbc.pooling; 2 | 3 | import org.jetbrains.annotations.NotNull; 4 | 5 | 6 | 7 | /** 8 | * @author Leonid Bushuev from JetBrains 9 | */ 10 | public class ConnectionPoolExhaustedException extends ConnectionPoolException { 11 | public ConnectionPoolExhaustedException(@NotNull String message) { 12 | super(message, null); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /old/dekaf-core/src/main/java/org/jetbrains/dekaf/jdbc/pooling/ConnectionPoolIsNotReadyException.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.jdbc.pooling; 2 | 3 | /** 4 | * @author Leonid Bushuev from JetBrains 5 | */ 6 | public class ConnectionPoolIsNotReadyException extends ConnectionPoolException { 7 | 8 | public ConnectionPoolIsNotReadyException(String message) { 9 | super(message, null); 10 | } 11 | 12 | } 13 | -------------------------------------------------------------------------------- /old/dekaf-core/src/main/java/org/jetbrains/dekaf/jdbc/pooling/ConnectionPoolOperationInterruptedException.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.jdbc.pooling; 2 | 3 | import org.jetbrains.annotations.NotNull; 4 | import org.jetbrains.annotations.Nullable; 5 | 6 | 7 | 8 | /** 9 | * @author Leonid Bushuev from JetBrains 10 | */ 11 | public class ConnectionPoolOperationInterruptedException extends ConnectionPoolException { 12 | 13 | public ConnectionPoolOperationInterruptedException(@NotNull String message, @NotNull Throwable cause, @Nullable String statementText) { 14 | super(message, cause, statementText); 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /old/dekaf-core/src/main/java/org/jetbrains/dekaf/jdbc/pooling/UnexpectedDataSourceException.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.jdbc.pooling; 2 | 3 | import org.jetbrains.annotations.NotNull; 4 | import org.jetbrains.annotations.Nullable; 5 | 6 | 7 | 8 | /** 9 | * @author Leonid Bushuev from JetBrains 10 | */ 11 | public class UnexpectedDataSourceException extends ConnectionPoolException { 12 | 13 | public UnexpectedDataSourceException(@NotNull String message, @Nullable String statementText) { 14 | super(message, statementText); 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /old/dekaf-core/src/main/java/org/jetbrains/dekaf/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Dekaf — Java Database Access Layer Framework 3 | * 4 | *

5 | * Provides easy and clear access to databases. 6 | * See Dekaf Framework on GitHub 7 | *

8 | * 9 | *

10 | * Inner packages: 11 | *

    12 | *
  1. core: core and client-side interfaces and classes; client code should use this package.
  2. 13 | *
  3. intermediate: interfaces and classes that are on an 'intermediate' layer (between Dekaf and vendor-provided API).
  4. 14 | *
  5. jdbc: classes that uses JDBC (RDBMS vendor provided API) and implements intermediate interfaces.
  6. 15 | *
  7. exceptions: exceptions classes.
  8. 16 | *
  9. util: some utility functions.
  10. 17 | *
18 | *

19 | * 20 | *

21 | * This package also contains RDBMS markers. 22 | *

23 | * 24 | * @author Leonid Bushuev from JetBrains 25 | */ 26 | package org.jetbrains.dekaf; 27 | -------------------------------------------------------------------------------- /old/dekaf-core/src/main/java/org/jetbrains/dekaf/sql/TextPointer.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.sql; 2 | 3 | /** 4 | * @author Leonid Bushuev from JetBrains 5 | */ 6 | final class TextPointer { 7 | 8 | /** 9 | * Offset from the beginning of the text. 10 | */ 11 | final int offset; 12 | 13 | /** 14 | * Row number, starts with 1. 15 | */ 16 | final int row; 17 | 18 | /** 19 | * Number of positions inside the row, starts with 1. 20 | */ 21 | final int pos; 22 | 23 | 24 | TextPointer(int offset, int row, int pos) { 25 | this.offset = offset; 26 | this.row = row; 27 | this.pos = pos; 28 | } 29 | 30 | 31 | @Override 32 | public boolean equals(Object o) { 33 | if (this == o) return true; 34 | if (o == null || getClass() != o.getClass()) return false; 35 | 36 | TextPointer pointer = (TextPointer) o; 37 | 38 | return offset == pointer.offset && pos == pointer.pos && row == pointer.row; 39 | } 40 | 41 | 42 | @Override 43 | public int hashCode() { 44 | return offset; 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /old/dekaf-core/src/main/java/org/jetbrains/dekaf/util/Function.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.util; 2 | 3 | /** 4 | * Function of one argument. 5 | * 6 | *

7 | * Like this one: https://docs.oracle.com/javase/8/docs/api/java/util/function/Function.html 8 | *

9 | * 10 | * @param type of the argument. 11 | * @param type of the result. 12 | * 13 | * @author Leonid Bushuev from JetBrains 14 | **/ 15 | public interface Function { 16 | 17 | /** 18 | * The function itself. 19 | * @param arg argument. 20 | * @return result. 21 | */ 22 | R apply(T arg); 23 | 24 | } 25 | -------------------------------------------------------------------------------- /old/dekaf-core/src/main/java/org/jetbrains/dekaf/util/StringOperator.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.util; 2 | 3 | /** 4 | * @author Leonid Bushuev from JetBrains 5 | **/ 6 | public interface StringOperator extends UnaryOperator { 7 | 8 | // nothing much 9 | 10 | } 11 | -------------------------------------------------------------------------------- /old/dekaf-core/src/main/java/org/jetbrains/dekaf/util/UnaryOperator.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.util; 2 | 3 | /** 4 | * @author Leonid Bushuev from JetBrains 5 | **/ 6 | public interface UnaryOperator extends Function { 7 | 8 | // nothing much 9 | 10 | } 11 | -------------------------------------------------------------------------------- /old/dekaf-core/src/main/resources/META-INF/MANIFEST.MF: -------------------------------------------------------------------------------- 1 | Manifest-Version: 1.0 2 | Main-Class: org.jetbrains.dekaf.Dekaf 3 | -------------------------------------------------------------------------------- /old/dekaf-core/src/main/resources/META-INF/services/org.jetbrains.dekaf.core.DBFederatedProvider: -------------------------------------------------------------------------------- 1 | org.jetbrains.dekaf.core.BaseFederatedProvider 2 | -------------------------------------------------------------------------------- /old/dekaf-core/src/main/resources/META-INF/services/org.jetbrains.dekaf.intermediate.IntegralIntermediateFederatedProvider: -------------------------------------------------------------------------------- 1 | org.jetbrains.dekaf.jdbc.JdbcIntermediateFederatedProvider 2 | -------------------------------------------------------------------------------- /old/dekaf-core/src/main/resources/META-INF/services/org.jetbrains.dekaf.intermediate.IntegralIntermediateRdbmsProvider: -------------------------------------------------------------------------------- 1 | org.jetbrains.dekaf.jdbc.UnknownDatabaseProvider 2 | -------------------------------------------------------------------------------- /old/dekaf-core/src/main/resources/META-INF/services/org.jetbrains.dekaf.intermediate.PrimeIntermediateFederatedProvider: -------------------------------------------------------------------------------- 1 | org.jetbrains.dekaf.jdbc.JdbcIntermediateFederatedProvider 2 | -------------------------------------------------------------------------------- /old/dekaf-core/src/test/java/org/jetbrains/dekaf/core/BaseQueryRunnerDirectTest.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.core; 2 | 3 | /** 4 | * @author Leonid Bushuev from JetBrains 5 | */ 6 | public class BaseQueryRunnerDirectTest extends BaseQueryRunnerTest { 7 | } 8 | -------------------------------------------------------------------------------- /old/dekaf-core/src/test/java/org/jetbrains/dekaf/core/BaseQueryRunnerPseudoRemoteTest.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.core; 2 | 3 | import org.jetbrains.annotations.NotNull; 4 | import org.jetbrains.dekaf.intermediate.AdaptIntermediateFacade; 5 | import org.jetbrains.dekaf.jdbc.JdbcIntermediateFacade; 6 | 7 | 8 | 9 | /** 10 | * @author Leonid Bushuev from JetBrains 11 | */ 12 | public class BaseQueryRunnerPseudoRemoteTest extends BaseQueryRunnerTest { 13 | 14 | @NotNull 15 | protected BaseFacade prepareBaseFacade(@NotNull final JdbcIntermediateFacade jdbcFacade) { 16 | AdaptIntermediateFacade intermediateFacade = new AdaptIntermediateFacade(jdbcFacade); 17 | return new BaseFacade(intermediateFacade); 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /old/dekaf-core/src/test/java/org/jetbrains/dekaf/core/Tetra.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.core; 2 | 3 | /** 4 | * @author Leonid Bushuev from JetBrains 5 | **/ 6 | final class Tetra { 7 | 8 | int A; 9 | int B; 10 | int C; 11 | int D; 12 | 13 | public Tetra() {} 14 | 15 | public Tetra(final int a, final int b, final int c, final int d) { 16 | A = a; 17 | B = b; 18 | C = c; 19 | D = d; 20 | } 21 | 22 | @Override 23 | public String toString() { 24 | return A + "," + B + "," + C + "," + D; 25 | } 26 | 27 | @Override 28 | public boolean equals(final Object o) { 29 | if (this == o) return true; 30 | if (o == null || getClass() != o.getClass()) return false; 31 | Tetra that = (Tetra) o; 32 | return A == that.A && B == that.B && C == that.C && D == that.D; 33 | } 34 | 35 | @Override 36 | public int hashCode() { 37 | return A + B + C + D; 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /old/dekaf-core/src/test/java/org/jetbrains/dekaf/jdbc/BaseIntermediateInMemoryDBCase.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.jdbc; 2 | 3 | import org.jetbrains.dekaf.intermediate.DBExceptionRecognizer; 4 | 5 | import java.sql.Connection; 6 | 7 | 8 | 9 | /** 10 | * @author Leonid Bushuev from JetBrains 11 | */ 12 | public abstract class BaseIntermediateInMemoryDBCase extends BaseInMemoryDBCase { 13 | 14 | protected static DBExceptionRecognizer ourExceptionRecognizer = new BaseExceptionRecognizer(); 15 | 16 | 17 | protected JdbcIntermediateSession openSession() { 18 | Connection connection = obtainConnection(); 19 | JdbcIntermediateSession session = 20 | new JdbcIntermediateSession(null, ourExceptionRecognizer, connection, true); 21 | return session; 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /old/dekaf-core/src/test/java/org/jetbrains/dekaf/jdbc/JdbcIntermediateSessionTest.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.jdbc; 2 | 3 | import org.junit.Test; 4 | 5 | import java.sql.Connection; 6 | 7 | 8 | 9 | public class JdbcIntermediateSessionTest extends BaseIntermediateInMemoryDBCase { 10 | 11 | 12 | @Test 13 | public void create_ping_close() { 14 | Connection connection = obtainConnection(); 15 | JdbcIntermediateSession session = 16 | new JdbcIntermediateSession(null, ourExceptionRecognizer, connection, true); 17 | session.ping(); 18 | session.close(); 19 | } 20 | 21 | 22 | } -------------------------------------------------------------------------------- /old/dekaf-core/src/test/java/org/jetbrains/dekaf/sql/SqlCommandTest.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.sql; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.assertj.core.api.Assertions.assertThat; 6 | 7 | 8 | 9 | public class SqlCommandTest { 10 | 11 | @Test 12 | public void rewrite_basic() { 13 | SqlCommand cmd1 = new SqlCommand("AAA BBB CCC", 33, "name"); 14 | SqlCommand cmd2 = cmd1.rewrite(Rewriters.replace("BBB", "XXX")); 15 | 16 | assertThat(cmd2.getSourceText()).isEqualTo("AAA XXX CCC"); 17 | 18 | assertThat(cmd2.getRow()).isEqualTo(33); 19 | assertThat(cmd2.getName()).isEqualTo("name"); 20 | } 21 | 22 | } -------------------------------------------------------------------------------- /old/dekaf-core/src/test/resources/org/jetbrains/dekaf/sql/FileWithFragments.sql: -------------------------------------------------------------------------------- 1 | zero fragment 2 | 3 | ---- first-fragment ---- 4 | 5 | the first fragment 6 | 7 | ---- second-fragment ---- 8 | 9 | the second fragment 10 | the second fragment 11 | 12 | -------------------------------------------------------------------------------- /old/dekaf-core/src/test/resources/org/jetbrains/dekaf/sql/FileWithOneCommand.sql: -------------------------------------------------------------------------------- 1 | ---- TheCommand ---- 2 | select something 3 | from some_table 4 | -------------------------------------------------------------------------------- /old/dekaf-core/src/test/resources/org/jetbrains/dekaf/sql/ScriptumResourceFromJavaTest.sql: -------------------------------------------------------------------------------- 1 | -- Some comment at the top of the file. 2 | 3 | 4 | ---- FIRST ---- 5 | 6 | select something from anything 7 | 8 | 9 | 10 | ---- SECOND ---- 11 | 12 | select 2 13 | 14 | 15 | ---- SECOND + ORACLE ---- 16 | 17 | select 2 from dual 18 | 19 | 20 | 21 | ------- THIRD ------- 22 | 23 | call 3 24 | 25 | 26 | ---- MULTI_LINE ---- 27 | 28 | select columns 29 | from table 30 | where the condition is met 31 | 32 | 33 | ---- lower_case ---- 34 | 35 | select something_lower_case 36 | 37 | 38 | ---- München_Straße ---- 39 | 40 | select etwas_von_München 41 | 42 | 43 | ---- Санкт-Петербург ---- 44 | 45 | select Невский Проспект 46 | 47 | 48 | ---- THE_END ---- 49 | 50 | select last_value 51 | 52 | 53 | 54 | 55 | -------------------------------------------------------------------------------- /old/dekaf-exasol-test-db/src/main/java/org/jetbrains/dekaf/core/ExasolTestHelper.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.core; 2 | 3 | import org.jetbrains.annotations.NotNull; 4 | import org.jetbrains.dekaf.sql.Scriptum; 5 | 6 | 7 | 8 | public class ExasolTestHelper extends BaseTestHelper { 9 | 10 | public ExasolTestHelper(@NotNull final DBFacade db) { 11 | super(db, Scriptum.of(ExasolTestHelper.class)); 12 | } 13 | 14 | @Override 15 | public void prepareX1() { 16 | performCommand("create or replace view X1 as select 1 X"); 17 | } 18 | 19 | @Override 20 | public void prepareX1000() { 21 | performCommand(scriptum, "X1000"); 22 | } 23 | 24 | @Override 25 | public void prepareX1000000() { 26 | prepareX1000(); 27 | performCommand(scriptum, "X1000000"); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /old/dekaf-exasol-test-db/src/main/java/org/jetbrains/dekaf/core/ExasolTestHelperFactory.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.core; 2 | 3 | import org.jetbrains.annotations.NotNull; 4 | import org.jetbrains.dekaf.Exasol; 5 | import org.jetbrains.dekaf.Rdbms; 6 | 7 | import java.util.Collections; 8 | import java.util.Set; 9 | 10 | 11 | 12 | public class ExasolTestHelperFactory implements DBTestHelperFactory { 13 | 14 | private static final Set COLLECTION_OF_EXASOL = Collections.singleton(Exasol.RDBMS); 15 | 16 | 17 | @NotNull 18 | @Override 19 | public Set supportRdbms() { 20 | return COLLECTION_OF_EXASOL; 21 | } 22 | 23 | 24 | @NotNull 25 | @Override 26 | public DBTestHelper createTestHelperFor(@NotNull final DBFacade facade) { 27 | return new ExasolTestHelper(facade); 28 | } 29 | 30 | } 31 | -------------------------------------------------------------------------------- /old/dekaf-exasol-test-db/src/main/resources/META-INF/services/org.jetbrains.dekaf.core.DBTestHelperFactory: -------------------------------------------------------------------------------- 1 | org.jetbrains.dekaf.core.ExasolTestHelperFactory 2 | -------------------------------------------------------------------------------- /old/dekaf-exasol-tests/src/test/java/org/jetbrains/dekaf/ExasolIntegrationTests.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf; 2 | 3 | import org.jetbrains.dekaf.core.ExasolCommandRunnerTest; 4 | import org.jetbrains.dekaf.core.ExasolPrimaryTest; 5 | import org.jetbrains.dekaf.core.ExasolQueryRunnerTest; 6 | import org.jetbrains.dekaf.core.ExasolSessionTest; 7 | import org.jetbrains.dekaf.jdbc.ExasolExceptionRecognizingTest; 8 | import org.junit.runner.RunWith; 9 | import org.junit.runners.Suite; 10 | 11 | 12 | 13 | @RunWith(Suite.class) 14 | @Suite.SuiteClasses({ 15 | ExasolPrimaryTest.class, 16 | ExasolSessionTest.class, 17 | ExasolCommandRunnerTest.class, 18 | ExasolQueryRunnerTest.class, 19 | ExasolExceptionRecognizingTest.class 20 | }) 21 | public class ExasolIntegrationTests {} 22 | -------------------------------------------------------------------------------- /old/dekaf-exasol-tests/src/test/java/org/jetbrains/dekaf/core/ExasolCommandRunnerTest.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.core; 2 | 3 | public class ExasolCommandRunnerTest extends CommonCommandRunnerTest { 4 | 5 | 6 | 7 | 8 | } 9 | -------------------------------------------------------------------------------- /old/dekaf-exasol-tests/src/test/java/org/jetbrains/dekaf/core/ExasolPrimaryTest.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.core; 2 | 3 | import org.jetbrains.dekaf.Exasol; 4 | import org.junit.FixMethodOrder; 5 | import org.junit.Test; 6 | import org.junit.internal.AssumptionViolatedException; 7 | import org.junit.runners.MethodSorters; 8 | 9 | import static org.assertj.core.api.Assertions.assertThat; 10 | 11 | 12 | 13 | @FixMethodOrder(MethodSorters.JVM) 14 | public class ExasolPrimaryTest extends CommonPrimaryTest { 15 | 16 | @Test 17 | public void rdbms_is_Exasol() { 18 | assertThat(DB.rdbms()).isEqualTo(Exasol.RDBMS); 19 | } 20 | 21 | 22 | @Override 23 | public void getConnectionInfo_user() { 24 | throw new AssumptionViolatedException("In Exasol user can be empty"); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /old/dekaf-exasol-tests/src/test/java/org/jetbrains/dekaf/core/ExasolQueryRunnerTest.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.core; 2 | 3 | public class ExasolQueryRunnerTest extends CommonQueryRunnerTest { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /old/dekaf-exasol-tests/src/test/java/org/jetbrains/dekaf/core/ExasolSessionTest.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.core; 2 | 3 | import org.junit.FixMethodOrder; 4 | import org.junit.runners.MethodSorters; 5 | 6 | 7 | 8 | @FixMethodOrder(MethodSorters.JVM) 9 | public class ExasolSessionTest extends CommonSessionTest { 10 | 11 | 12 | } 13 | -------------------------------------------------------------------------------- /old/dekaf-exasol-tests/src/test/java/org/jetbrains/dekaf/jdbc/ExasolExceptionRecognizingTest.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.jdbc; 2 | 3 | import org.jetbrains.dekaf.core.CommonExceptionRecognizingTest; 4 | 5 | 6 | 7 | public class ExasolExceptionRecognizingTest extends CommonExceptionRecognizingTest { 8 | 9 | 10 | } 11 | -------------------------------------------------------------------------------- /old/dekaf-exasol/src/main/java/org/jetbrains/dekaf/Exasol.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf; 2 | 3 | /** 4 | * Exasol declaration class. 5 | */ 6 | public abstract class Exasol { 7 | 8 | /** 9 | * Exasol RDBMS marker. 10 | */ 11 | public final static Rdbms RDBMS = Rdbms.of("EXASOL"); 12 | 13 | } 14 | -------------------------------------------------------------------------------- /old/dekaf-exasol/src/main/java/org/jetbrains/dekaf/sql/ExasolSQL.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.sql; 2 | 3 | public class ExasolSQL { 4 | } 5 | -------------------------------------------------------------------------------- /old/dekaf-exasol/src/main/resources/META-INF/services/org.jetbrains.dekaf.intermediate.IntegralIntermediateRdbmsProvider: -------------------------------------------------------------------------------- 1 | org.jetbrains.dekaf.jdbc.ExasolIntermediateProvider 2 | -------------------------------------------------------------------------------- /old/dekaf-exasol/src/test/java/org/jetbrains/dekaf/jdbc/ExasolInterServiceProviderTest.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.jdbc; 2 | 3 | import org.junit.Before; 4 | import org.junit.Test; 5 | 6 | import java.sql.Driver; 7 | import java.sql.DriverManager; 8 | import java.sql.SQLException; 9 | 10 | import static org.assertj.core.api.Assertions.assertThat; 11 | import static org.jetbrains.dekaf.jdbc.ExasolIntermediateProvider.EXASOL_CONNECTION_STRING_EXAMPLE; 12 | 13 | 14 | 15 | public class ExasolInterServiceProviderTest { 16 | 17 | protected ExasolIntermediateProvider myProvider; 18 | 19 | @Before 20 | public void setup() { 21 | myProvider = ExasolIntermediateProvider.INSTANCE; 22 | } 23 | 24 | @Test 25 | public void driverIsLoaded() throws SQLException { 26 | final Driver driver = DriverManager.getDriver(EXASOL_CONNECTION_STRING_EXAMPLE); 27 | assertThat(driver).isNotNull(); 28 | } 29 | 30 | } -------------------------------------------------------------------------------- /old/dekaf-exasol/src/test/java/org/jetbrains/dekaf/jdbc/ExasolInterServiceProviderUnitTest.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.jdbc; 2 | 3 | import org.jetbrains.dekaf.assertions.PatternAssert; 4 | import org.junit.Test; 5 | 6 | import static org.jetbrains.dekaf.jdbc.ExasolIntermediateProvider.EXASOL_CONNECTION_STRING_EXAMPLE; 7 | import static org.jetbrains.dekaf.jdbc.ExasolIntermediateProvider.EXASOL_CONNECTION_STRING_PATTERN; 8 | 9 | 10 | 11 | public class ExasolInterServiceProviderUnitTest { 12 | 13 | @Test 14 | public void connectionStringExample_matches_connectionStringPattern() { 15 | PatternAssert.assertThat(EXASOL_CONNECTION_STRING_PATTERN) 16 | .fits(EXASOL_CONNECTION_STRING_EXAMPLE); 17 | } 18 | 19 | } -------------------------------------------------------------------------------- /old/dekaf-exasol/src/test/java/org/jetbrains/dekaf/jdbc/ExasolJdbcIntegrationTests.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.jdbc; 2 | 3 | 4 | import org.junit.runner.RunWith; 5 | import org.junit.runners.Suite; 6 | 7 | 8 | 9 | @RunWith(Suite.class) 10 | @Suite.SuiteClasses({ 11 | ExasolInterServiceProviderTest.class 12 | }) 13 | public class ExasolJdbcIntegrationTests { 14 | 15 | static { 16 | System.setProperty("java.awt.headless", "true"); 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /old/dekaf-exasol/src/test/java/org/jetbrains/dekaf/jdbc/ExasolJdbcUnitTests.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.jdbc; 2 | 3 | 4 | import org.junit.runner.RunWith; 5 | import org.junit.runners.Suite; 6 | 7 | 8 | 9 | @RunWith(Suite.class) 10 | @Suite.SuiteClasses({ 11 | ExasolInterServiceProviderTest.class 12 | }) 13 | public class ExasolJdbcUnitTests { 14 | 15 | } 16 | -------------------------------------------------------------------------------- /old/dekaf-h2db-test-db/src/main/java/org/jetbrains/dekaf/core/H2dbTestHelper.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.core; 2 | 3 | import org.jetbrains.annotations.NotNull; 4 | import org.jetbrains.dekaf.sql.Scriptum; 5 | 6 | 7 | 8 | /** 9 | * @author Leonid Bushuev from JetBrains 10 | **/ 11 | public class H2dbTestHelper extends BaseTestHelper { 12 | 13 | public H2dbTestHelper(@NotNull final DBFacade db) { 14 | super(db, Scriptum.of(H2dbTestHelper.class)); 15 | } 16 | 17 | @Override 18 | public void prepareX1() { 19 | performCommand("create or replace view X1 as select 1 as X from dual"); 20 | } 21 | 22 | @Override 23 | public void prepareX1000() { 24 | performCommand(scriptum, "X1000"); 25 | } 26 | 27 | @Override 28 | public void prepareX1000000() { 29 | prepareX1000(); 30 | performCommand(scriptum, "X1000000"); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /old/dekaf-h2db-test-db/src/main/java/org/jetbrains/dekaf/core/H2dbTestHelperFactory.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.core; 2 | 3 | import org.jetbrains.annotations.NotNull; 4 | import org.jetbrains.dekaf.H2db; 5 | import org.jetbrains.dekaf.Rdbms; 6 | 7 | import java.util.Collections; 8 | import java.util.Set; 9 | 10 | 11 | 12 | /** 13 | * @author Leonid Bushuev from JetBrains 14 | **/ 15 | public class H2dbTestHelperFactory implements DBTestHelperFactory { 16 | 17 | private static final Set COLLECTION_OF_H2DB = Collections.singleton(H2db.RDBMS); 18 | 19 | 20 | @NotNull 21 | @Override 22 | public Set supportRdbms() { 23 | return COLLECTION_OF_H2DB; 24 | } 25 | 26 | 27 | @NotNull 28 | @Override 29 | public DBTestHelper createTestHelperFor(@NotNull final DBFacade facade) { 30 | return new H2dbTestHelper(facade); 31 | } 32 | 33 | } 34 | -------------------------------------------------------------------------------- /old/dekaf-h2db-test-db/src/main/resources/META-INF/services/org.jetbrains.dekaf.core.DBTestHelperFactory: -------------------------------------------------------------------------------- 1 | org.jetbrains.dekaf.core.H2dbTestHelperFactory 2 | -------------------------------------------------------------------------------- /old/dekaf-h2db-tests/src/test/java/org/jetbrains/dekaf/H2dbIntegrationTests.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf; 2 | 3 | /** 4 | * @author Leonid Bushuev from JetBrains 5 | **/ 6 | 7 | import org.jetbrains.dekaf.core.H2dbCommandRunnerTest; 8 | import org.jetbrains.dekaf.core.H2dbPrimaryTest; 9 | import org.jetbrains.dekaf.core.H2dbQueryRunnerTest; 10 | import org.jetbrains.dekaf.core.H2dbSessionTest; 11 | import org.jetbrains.dekaf.jdbc.H2dbExceptionRecognizingTest; 12 | import org.junit.runner.RunWith; 13 | import org.junit.runners.Suite; 14 | 15 | 16 | 17 | @RunWith(Suite.class) 18 | @Suite.SuiteClasses({ 19 | H2dbPrimaryTest.class, 20 | H2dbSessionTest.class, 21 | H2dbCommandRunnerTest.class, 22 | H2dbQueryRunnerTest.class, 23 | H2dbExceptionRecognizingTest.class 24 | }) 25 | public class H2dbIntegrationTests {} 26 | -------------------------------------------------------------------------------- /old/dekaf-h2db-tests/src/test/java/org/jetbrains/dekaf/core/H2dbCommandRunnerTest.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.core; 2 | 3 | /** 4 | * @author Leonid Bushuev from JetBrains 5 | **/ 6 | public class H2dbCommandRunnerTest extends CommonCommandRunnerTest { 7 | 8 | 9 | 10 | 11 | } 12 | -------------------------------------------------------------------------------- /old/dekaf-h2db-tests/src/test/java/org/jetbrains/dekaf/core/H2dbPrimaryTest.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.core; 2 | 3 | import org.jetbrains.dekaf.H2db; 4 | import org.junit.FixMethodOrder; 5 | import org.junit.Test; 6 | import org.junit.internal.AssumptionViolatedException; 7 | import org.junit.runners.MethodSorters; 8 | 9 | import static org.assertj.core.api.Assertions.assertThat; 10 | 11 | 12 | 13 | /** 14 | * @author Leonid Bushuev from JetBrains 15 | **/ 16 | @FixMethodOrder(MethodSorters.JVM) 17 | public class H2dbPrimaryTest extends CommonPrimaryTest { 18 | 19 | @Test 20 | public void rdbms_is_H2db() { 21 | assertThat(DB.rdbms()).isEqualTo(H2db.RDBMS); 22 | } 23 | 24 | 25 | @Override 26 | public void getConnectionInfo_user() { 27 | throw new AssumptionViolatedException("In H2 user can be empty"); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /old/dekaf-h2db-tests/src/test/java/org/jetbrains/dekaf/core/H2dbQueryRunnerTest.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.core; 2 | 3 | /** 4 | * @author Leonid Bushuev from JetBrains 5 | **/ 6 | public class H2dbQueryRunnerTest extends CommonQueryRunnerTest { 7 | 8 | } 9 | -------------------------------------------------------------------------------- /old/dekaf-h2db-tests/src/test/java/org/jetbrains/dekaf/core/H2dbSessionTest.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.core; 2 | 3 | import org.junit.FixMethodOrder; 4 | import org.junit.runners.MethodSorters; 5 | 6 | 7 | 8 | /** 9 | * @author Leonid Bushuev from JetBrains 10 | **/ 11 | @FixMethodOrder(MethodSorters.JVM) 12 | public class H2dbSessionTest extends CommonSessionTest { 13 | 14 | 15 | } 16 | -------------------------------------------------------------------------------- /old/dekaf-h2db-tests/src/test/resources/org/jetbrains/dekaf/jdbc/H2dbExceptionRecognizingTest.sql: -------------------------------------------------------------------------------- 1 | ---- NoRows ---- 2 | declare 3 | x natural; 4 | begin 5 | select 1 6 | into x 7 | from dual 8 | where 42 is null; 9 | end; 10 | / 11 | 12 | -------------------------------------------------------------------------------- /old/dekaf-h2db/src/main/java/org/jetbrains/dekaf/H2db.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf; 2 | 3 | /** 4 | * H2 DB declaration class. 5 | * 6 | * @author Leonid Bushuev from JetBrains 7 | */ 8 | public abstract class H2db { 9 | 10 | /** 11 | * H2 RDBMS marker. 12 | */ 13 | public final static Rdbms RDBMS = Rdbms.of("H2"); 14 | 15 | } 16 | -------------------------------------------------------------------------------- /old/dekaf-h2db/src/main/java/org/jetbrains/dekaf/sql/H2dbSQL.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.sql; 2 | 3 | /** 4 | * @author Leonid Bushuev from JetBrains 5 | **/ 6 | public class H2dbSQL { 7 | } 8 | -------------------------------------------------------------------------------- /old/dekaf-h2db/src/main/resources/META-INF/services/org.jetbrains.dekaf.intermediate.IntegralIntermediateRdbmsProvider: -------------------------------------------------------------------------------- 1 | org.jetbrains.dekaf.jdbc.H2dbIntermediateProvider 2 | -------------------------------------------------------------------------------- /old/dekaf-h2db/src/test/java/org/jetbrains/dekaf/jdbc/H2dbInterServiceProviderTest.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.jdbc; 2 | 3 | import org.junit.Before; 4 | import org.junit.Test; 5 | 6 | import java.sql.Driver; 7 | import java.sql.DriverManager; 8 | import java.sql.SQLException; 9 | 10 | import static org.assertj.core.api.Assertions.assertThat; 11 | import static org.jetbrains.dekaf.jdbc.H2dbIntermediateProvider.H2DB_CONNECTION_STRING_EXAMPLE; 12 | 13 | 14 | 15 | /** 16 | * @author Leonid Bushuev from JetBrains 17 | */ 18 | public class H2dbInterServiceProviderTest { 19 | 20 | protected H2dbIntermediateProvider myProvider; 21 | 22 | @Before 23 | public void setup() { 24 | myProvider = H2dbIntermediateProvider.INSTANCE; 25 | } 26 | 27 | @Test 28 | public void driverIsLoaded() throws SQLException { 29 | final Driver driver = DriverManager.getDriver(H2DB_CONNECTION_STRING_EXAMPLE); 30 | assertThat(driver).isNotNull(); 31 | } 32 | 33 | } -------------------------------------------------------------------------------- /old/dekaf-h2db/src/test/java/org/jetbrains/dekaf/jdbc/H2dbInterServiceProviderUnitTest.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.jdbc; 2 | 3 | import org.jetbrains.dekaf.assertions.PatternAssert; 4 | import org.junit.Test; 5 | 6 | import static org.jetbrains.dekaf.jdbc.H2dbIntermediateProvider.H2DB_CONNECTION_STRING_EXAMPLE; 7 | import static org.jetbrains.dekaf.jdbc.H2dbIntermediateProvider.H2DB_CONNECTION_STRING_PATTERN; 8 | 9 | 10 | 11 | /** 12 | * @author Leonid Bushuev from JetBrains 13 | */ 14 | public class H2dbInterServiceProviderUnitTest { 15 | 16 | @Test 17 | public void connectionStringExample_matches_connectionStringPattern() { 18 | PatternAssert.assertThat(H2DB_CONNECTION_STRING_PATTERN) 19 | .fits(H2DB_CONNECTION_STRING_EXAMPLE); 20 | } 21 | 22 | } -------------------------------------------------------------------------------- /old/dekaf-h2db/src/test/java/org/jetbrains/dekaf/jdbc/H2dbJdbcIntegrationTests.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.jdbc; 2 | 3 | /** 4 | * @author Leonid Bushuev from JetBrains 5 | */ 6 | 7 | import org.junit.runner.RunWith; 8 | import org.junit.runners.Suite; 9 | 10 | 11 | 12 | @RunWith(Suite.class) 13 | @Suite.SuiteClasses({ 14 | H2dbInterServiceProviderTest.class 15 | }) 16 | public class H2dbJdbcIntegrationTests { 17 | 18 | static { 19 | System.setProperty("java.awt.headless", "true"); 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /old/dekaf-h2db/src/test/java/org/jetbrains/dekaf/jdbc/H2dbJdbcUnitTests.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.jdbc; 2 | 3 | /** 4 | * @author Leonid Bushuev from JetBrains 5 | */ 6 | 7 | import org.junit.runner.RunWith; 8 | import org.junit.runners.Suite; 9 | 10 | 11 | 12 | @RunWith(Suite.class) 13 | @Suite.SuiteClasses({ 14 | H2dbInterServiceProviderTest.class 15 | }) 16 | public class H2dbJdbcUnitTests { 17 | 18 | } 19 | -------------------------------------------------------------------------------- /old/dekaf-mssql-test-db/src/main/java/org/jetbrains/dekaf/core/MssqlTestHelperFactory.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.core; 2 | 3 | import org.jetbrains.annotations.NotNull; 4 | import org.jetbrains.dekaf.Mssql; 5 | import org.jetbrains.dekaf.Rdbms; 6 | 7 | import java.util.Collections; 8 | import java.util.Set; 9 | 10 | 11 | 12 | /** 13 | * @author Leonid Bushuev from JetBrains 14 | **/ 15 | public class MssqlTestHelperFactory implements DBTestHelperFactory { 16 | 17 | private static final Set COLLECTION_OF_MSSQL = Collections.singleton(Mssql.RDBMS); 18 | 19 | 20 | @NotNull 21 | @Override 22 | public Set supportRdbms() { 23 | return COLLECTION_OF_MSSQL; 24 | } 25 | 26 | 27 | @NotNull 28 | @Override 29 | public DBTestHelper createTestHelperFor(@NotNull final DBFacade facade) { 30 | return new MssqlTestHelper(facade); 31 | } 32 | 33 | } 34 | -------------------------------------------------------------------------------- /old/dekaf-mssql-test-db/src/main/resources/META-INF/services/org.jetbrains.dekaf.core.DBTestHelperFactory: -------------------------------------------------------------------------------- 1 | org.jetbrains.dekaf.core.MssqlTestHelperFactory 2 | -------------------------------------------------------------------------------- /old/dekaf-mssql-tests/src/test/java/org/jetbrains/dekaf/MssqlIntegrationTests.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf; 2 | 3 | /** 4 | * @author Leonid Bushuev from JetBrains 5 | **/ 6 | 7 | import org.jetbrains.dekaf.core.*; 8 | import org.jetbrains.dekaf.jdbc.MssqlExceptionRecognizerTest; 9 | import org.junit.runner.RunWith; 10 | import org.junit.runners.Suite; 11 | 12 | 13 | 14 | @RunWith(Suite.class) 15 | @Suite.SuiteClasses({ 16 | MssqlPrimaryTest.class, 17 | MssqlSessionTest.class, 18 | MssqlCommandRunnerTest.class, 19 | MssqlQueryRunnerTest.class, 20 | MssqlExceptionRecognizerTest.class, 21 | MssqlTestHelperTest.class 22 | }) 23 | public class MssqlIntegrationTests {} 24 | -------------------------------------------------------------------------------- /old/dekaf-mssql-tests/src/test/java/org/jetbrains/dekaf/core/MssqlCommandRunnerTest.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.core; 2 | 3 | /** 4 | * @author Leonid Bushuev from JetBrains 5 | **/ 6 | public class MssqlCommandRunnerTest extends CommonCommandRunnerTest { 7 | 8 | 9 | 10 | } 11 | -------------------------------------------------------------------------------- /old/dekaf-mssql-tests/src/test/java/org/jetbrains/dekaf/core/MssqlPrimaryTest.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.core; 2 | 3 | import org.jetbrains.dekaf.Mssql; 4 | import org.junit.FixMethodOrder; 5 | import org.junit.Test; 6 | import org.junit.runners.MethodSorters; 7 | 8 | import static org.assertj.core.api.Assertions.assertThat; 9 | 10 | 11 | 12 | /** 13 | * @author Leonid Bushuev from JetBrains 14 | **/ 15 | @FixMethodOrder(MethodSorters.JVM) 16 | public class MssqlPrimaryTest extends CommonPrimaryTest { 17 | 18 | @Test 19 | public void rdbms_is_Mssql() { 20 | assertThat(DB.rdbms()).isEqualTo(Mssql.RDBMS); 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /old/dekaf-mssql-tests/src/test/java/org/jetbrains/dekaf/core/MssqlSessionTest.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.core; 2 | 3 | import org.junit.FixMethodOrder; 4 | import org.junit.runners.MethodSorters; 5 | 6 | 7 | 8 | /** 9 | * @author Leonid Bushuev from JetBrains 10 | **/ 11 | @FixMethodOrder(MethodSorters.JVM) 12 | public class MssqlSessionTest extends CommonSessionTest { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /old/dekaf-mssql-tests/src/test/java/org/jetbrains/dekaf/jdbc/MssqlExceptionRecognizerTest.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.jdbc; 2 | 3 | import org.jetbrains.dekaf.core.CommonExceptionRecognizingTest; 4 | 5 | 6 | 7 | /** 8 | * @author Leonid Bushuev from JetBrains 9 | */ 10 | public class MssqlExceptionRecognizerTest extends CommonExceptionRecognizingTest { 11 | 12 | } 13 | -------------------------------------------------------------------------------- /old/dekaf-mssql/src/main/java/org/jetbrains/dekaf/Mssql.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf; 2 | 3 | /** 4 | * MsSQL declaration class. 5 | * 6 | * @author Leonid Bushuev from JetBrains 7 | */ 8 | public abstract class Mssql { 9 | 10 | /** 11 | * MsSQL RDBMS marker. 12 | */ 13 | public final static Rdbms RDBMS = Rdbms.of("MSSQL"); 14 | 15 | public final static String AZURE_FLAVOUR = "Azure"; 16 | } 17 | -------------------------------------------------------------------------------- /old/dekaf-mssql/src/main/java/org/jetbrains/dekaf/sql/MicrosoftSQL.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.sql; 2 | 3 | /** 4 | * @author Leonid Bushuev from JetBrains 5 | **/ 6 | public class MicrosoftSQL { 7 | } 8 | -------------------------------------------------------------------------------- /old/dekaf-mssql/src/main/resources/META-INF/services/org.jetbrains.dekaf.intermediate.IntegralIntermediateRdbmsProvider: -------------------------------------------------------------------------------- 1 | org.jetbrains.dekaf.jdbc.MssqlIntermediateProvider 2 | -------------------------------------------------------------------------------- /old/dekaf-mssql/src/test/java/org/jetbrains/dekaf/jdbc/MssqlInterServiceProviderTest.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.jdbc; 2 | 3 | import org.junit.Before; 4 | import org.junit.Test; 5 | 6 | import java.sql.Driver; 7 | import java.sql.DriverManager; 8 | import java.sql.SQLException; 9 | 10 | import static org.assertj.core.api.Assertions.assertThat; 11 | import static org.jetbrains.dekaf.jdbc.MssqlIntermediateProvider.MSSQL_CONNECTION_STRING_EXAMPLE; 12 | 13 | 14 | 15 | /** 16 | * @author Leonid Bushuev from JetBrains 17 | */ 18 | public class MssqlInterServiceProviderTest { 19 | 20 | protected MssqlIntermediateProvider myProvider; 21 | 22 | @Before 23 | public void setup() { 24 | myProvider = MssqlIntermediateProvider.INSTANCE; 25 | } 26 | 27 | @Test 28 | public void driverIsLoaded() throws SQLException { 29 | final Driver driver = DriverManager.getDriver(MSSQL_CONNECTION_STRING_EXAMPLE); 30 | assertThat(driver).isNotNull(); 31 | } 32 | 33 | } -------------------------------------------------------------------------------- /old/dekaf-mssql/src/test/java/org/jetbrains/dekaf/jdbc/MssqlInterServiceProviderUnitTest.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.jdbc; 2 | 3 | import org.jetbrains.dekaf.assertions.PatternAssert; 4 | import org.junit.Test; 5 | 6 | import static org.jetbrains.dekaf.jdbc.MssqlIntermediateProvider.MSSQL_CONNECTION_STRING_EXAMPLE; 7 | import static org.jetbrains.dekaf.jdbc.MssqlIntermediateProvider.MSSQL_CONNECTION_STRING_PATTERN; 8 | 9 | 10 | 11 | /** 12 | * @author Leonid Bushuev from JetBrains 13 | */ 14 | public class MssqlInterServiceProviderUnitTest { 15 | 16 | @Test 17 | public void connectionStringExample_matches_connectionStringPattern() { 18 | PatternAssert.assertThat(MSSQL_CONNECTION_STRING_PATTERN) 19 | .fits(MSSQL_CONNECTION_STRING_EXAMPLE); 20 | } 21 | 22 | } -------------------------------------------------------------------------------- /old/dekaf-mssql/src/test/java/org/jetbrains/dekaf/jdbc/MssqlJdbcIntegrationTests.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.jdbc; 2 | 3 | /** 4 | * @author Leonid Bushuev from JetBrains 5 | */ 6 | 7 | import org.junit.runner.RunWith; 8 | import org.junit.runners.Suite; 9 | 10 | 11 | 12 | @RunWith(Suite.class) 13 | @Suite.SuiteClasses({ 14 | MssqlInterServiceProviderTest.class 15 | }) 16 | public class MssqlJdbcIntegrationTests { 17 | 18 | static { 19 | System.setProperty("java.awt.headless", "true"); 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /old/dekaf-mssql/src/test/java/org/jetbrains/dekaf/jdbc/MssqlJdbcUnitTests.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.jdbc; 2 | 3 | /** 4 | * @author Leonid Bushuev from JetBrains 5 | */ 6 | 7 | import org.junit.runner.RunWith; 8 | import org.junit.runners.Suite; 9 | 10 | 11 | 12 | @RunWith(Suite.class) 13 | @Suite.SuiteClasses({ 14 | MssqlInterServiceProviderTest.class 15 | }) 16 | public class MssqlJdbcUnitTests { 17 | 18 | } 19 | -------------------------------------------------------------------------------- /old/dekaf-mysql-test-db/src/main/resources/META-INF/services/org.jetbrains.dekaf.core.DBTestHelperFactory: -------------------------------------------------------------------------------- 1 | org.jetbrains.dekaf.core.MysqlTestHelperFactory 2 | -------------------------------------------------------------------------------- /old/dekaf-mysql-tests/src/test/java/org/jetbrains/dekaf/MysqlIntegrationTests.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf; 2 | 3 | /** 4 | * @author Leonid Bushuev from JetBrains 5 | **/ 6 | 7 | import org.jetbrains.dekaf.core.*; 8 | import org.jetbrains.dekaf.jdbc.MysqlExceptionRecognizerTest; 9 | import org.junit.runner.RunWith; 10 | import org.junit.runners.Suite; 11 | 12 | 13 | 14 | @RunWith(Suite.class) 15 | @Suite.SuiteClasses({ 16 | MysqlPrimaryTest.class, 17 | MysqlSessionTest.class, 18 | MysqlCommandRunnerTest.class, 19 | MysqlQueryRunnerTest.class, 20 | MysqlExceptionRecognizerTest.class, 21 | MysqlTestHelperTest.class, 22 | MysqlVersionTest.class 23 | }) 24 | public class MysqlIntegrationTests {} 25 | -------------------------------------------------------------------------------- /old/dekaf-mysql-tests/src/test/java/org/jetbrains/dekaf/core/MysqlCommandRunnerTest.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.core; 2 | 3 | /** 4 | * @author Leonid Bushuev from JetBrains 5 | **/ 6 | public class MysqlCommandRunnerTest extends CommonCommandRunnerTest { 7 | 8 | 9 | 10 | } 11 | -------------------------------------------------------------------------------- /old/dekaf-mysql-tests/src/test/java/org/jetbrains/dekaf/core/MysqlPrimaryTest.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.core; 2 | 3 | import org.jetbrains.dekaf.Mysql; 4 | import org.junit.FixMethodOrder; 5 | import org.junit.Ignore; 6 | import org.junit.Test; 7 | import org.junit.internal.AssumptionViolatedException; 8 | import org.junit.runners.MethodSorters; 9 | 10 | import static org.assertj.core.api.Assertions.assertThat; 11 | 12 | 13 | 14 | /** 15 | * @author Leonid Bushuev from JetBrains 16 | **/ 17 | @FixMethodOrder(MethodSorters.JVM) 18 | public class MysqlPrimaryTest extends CommonPrimaryTest { 19 | 20 | @Test 21 | public void rdbms_is_Mysql() { 22 | assertThat(DB.rdbms()).isEqualTo(Mysql.RDBMS); 23 | } 24 | 25 | 26 | @Override 27 | public void getConnectionInfo_database() { 28 | throw new AssumptionViolatedException("For MySQL a database name is not applicable"); 29 | } 30 | 31 | @Override 32 | @Test @Ignore 33 | public void zapSchema_foreignKeys() { 34 | // http://stackoverflow.com/questions/4061293/mysql-cant-create-table-errno-150 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /old/dekaf-mysql-tests/src/test/java/org/jetbrains/dekaf/core/MysqlSessionTest.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.core; 2 | 3 | import org.junit.FixMethodOrder; 4 | import org.junit.runners.MethodSorters; 5 | 6 | 7 | 8 | /** 9 | * @author Leonid Bushuev from JetBrains 10 | **/ 11 | @FixMethodOrder(MethodSorters.JVM) 12 | public class MysqlSessionTest extends CommonSessionTest { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /old/dekaf-mysql-tests/src/test/java/org/jetbrains/dekaf/core/MysqlVersionTest.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.core; 2 | 3 | import org.jetbrains.dekaf.util.Version; 4 | import org.junit.Assert; 5 | import org.junit.Test; 6 | 7 | import static org.jetbrains.dekaf.jdbc.MysqlIntermediateFacade.parseServerVersion; 8 | 9 | 10 | 11 | public class MysqlVersionTest { 12 | @Test 13 | public void test1() { 14 | doTest( 15 | "10.1.34-MariaDB-0ubuntu0.18.04.1", 16 | 10, 1, 34); 17 | } 18 | 19 | @Test 20 | public void test2() { 21 | doTest( 22 | "10.1.31-MariaDB", 23 | 10, 1, 31); 24 | } 25 | 26 | @Test 27 | public void test3() { 28 | doTest( 29 | "5.2.14-MariaDB-mariadb122~wheezy", 30 | 5, 2, 14); 31 | } 32 | 33 | @Test 34 | public void test4() { 35 | doTest( 36 | "5.5.59-MariaDB-1~wheezy", 37 | 5, 5, 59); 38 | } 39 | 40 | private void doTest(String verStr, int... ver) { 41 | Assert.assertEquals(Version.of(ver), parseServerVersion(verStr)); 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /old/dekaf-mysql-tests/src/test/java/org/jetbrains/dekaf/jdbc/MysqlExceptionRecognizerTest.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.jdbc; 2 | 3 | import org.jetbrains.dekaf.core.CommonExceptionRecognizingTest; 4 | 5 | 6 | 7 | /** 8 | * @author Leonid Bushuev from JetBrains 9 | */ 10 | public class MysqlExceptionRecognizerTest extends CommonExceptionRecognizingTest { 11 | 12 | } 13 | -------------------------------------------------------------------------------- /old/dekaf-mysql/src/main/java/org/jetbrains/dekaf/Mysql.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf; 2 | 3 | /** 4 | * MySQL declaration class. 5 | * 6 | * @author Leonid Bushuev from JetBrains 7 | */ 8 | public abstract class Mysql { 9 | 10 | /** 11 | * MySQL RDBMS marker. 12 | */ 13 | public final static Rdbms RDBMS = Rdbms.of("MYSQL"); 14 | 15 | public final static String MYSQL_FLAVOUR = "MySQL"; 16 | public final static String MARIADB_FLAVOUR = "MariaDB"; 17 | public final static String MEMSQL_FLAVOUR = "MemSQL"; 18 | } 19 | -------------------------------------------------------------------------------- /old/dekaf-mysql/src/main/java/org/jetbrains/dekaf/jdbc/MysqlConsts.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.jdbc; 2 | 3 | /** 4 | * @author Leonid Bushuev from JetBrains 5 | **/ 6 | public interface MysqlConsts { 7 | 8 | /** 9 | * Fetching whole result set at once when non-pack mode, 10 | * fetching row by row in pack mode. 11 | */ 12 | byte FETCH_STRATEGY_AUTO = 0; 13 | 14 | /** 15 | * Always fetch row by row. 16 | */ 17 | byte FETCH_STRATEGY_ROW = 1; 18 | 19 | /** 20 | * Always fetch all at once. 21 | */ 22 | byte FETCH_STRATEGY_WHOLE = 2; 23 | 24 | } 25 | -------------------------------------------------------------------------------- /old/dekaf-mysql/src/main/java/org/jetbrains/dekaf/sql/MySQL.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.sql; 2 | 3 | /** 4 | * @author Leonid Bushuev from JetBrains 5 | **/ 6 | public class MySQL { 7 | } 8 | -------------------------------------------------------------------------------- /old/dekaf-mysql/src/main/resources/META-INF/services/org.jetbrains.dekaf.intermediate.IntegralIntermediateRdbmsProvider: -------------------------------------------------------------------------------- 1 | org.jetbrains.dekaf.jdbc.MysqlIntermediateProvider 2 | -------------------------------------------------------------------------------- /old/dekaf-mysql/src/test/java/org/jetbrains/dekaf/jdbc/MysqlInterServiceProviderTest.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.jdbc; 2 | 3 | import org.junit.Before; 4 | import org.junit.Test; 5 | 6 | import java.sql.Driver; 7 | import java.sql.DriverManager; 8 | import java.sql.SQLException; 9 | 10 | import static org.assertj.core.api.Assertions.assertThat; 11 | import static org.jetbrains.dekaf.jdbc.MysqlIntermediateProvider.MYSQL_CONNECTION_STRING_EXAMPLE; 12 | 13 | 14 | 15 | /** 16 | * @author Leonid Bushuev from JetBrains 17 | */ 18 | public class MysqlInterServiceProviderTest { 19 | 20 | protected MysqlIntermediateProvider myProvider; 21 | 22 | @Before 23 | public void setup() { 24 | myProvider = MysqlIntermediateProvider.INSTANCE; 25 | } 26 | 27 | @Test 28 | public void driverIsLoaded() throws SQLException { 29 | final Driver driver = DriverManager.getDriver(MYSQL_CONNECTION_STRING_EXAMPLE); 30 | assertThat(driver).isNotNull(); 31 | } 32 | 33 | } -------------------------------------------------------------------------------- /old/dekaf-mysql/src/test/java/org/jetbrains/dekaf/jdbc/MysqlInterServiceProviderUnitTest.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.jdbc; 2 | 3 | import org.jetbrains.dekaf.assertions.PatternAssert; 4 | import org.junit.Test; 5 | 6 | import static org.jetbrains.dekaf.jdbc.MysqlIntermediateProvider.MYSQL_CONNECTION_STRING_EXAMPLE; 7 | import static org.jetbrains.dekaf.jdbc.MysqlIntermediateProvider.MYSQL_CONNECTION_STRING_PATTERN; 8 | 9 | 10 | 11 | /** 12 | * @author Leonid Bushuev from JetBrains 13 | */ 14 | public class MysqlInterServiceProviderUnitTest { 15 | 16 | @Test 17 | public void connectionStringExample_matches_connectionStringPattern() { 18 | PatternAssert.assertThat(MYSQL_CONNECTION_STRING_PATTERN) 19 | .fits(MYSQL_CONNECTION_STRING_EXAMPLE); 20 | } 21 | 22 | } -------------------------------------------------------------------------------- /old/dekaf-mysql/src/test/java/org/jetbrains/dekaf/jdbc/MysqlJdbcIntegrationTests.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.jdbc; 2 | 3 | /** 4 | * @author Leonid Bushuev from JetBrains 5 | */ 6 | 7 | import org.junit.runner.RunWith; 8 | import org.junit.runners.Suite; 9 | 10 | 11 | 12 | @RunWith(Suite.class) 13 | @Suite.SuiteClasses({ 14 | MysqlInterServiceProviderTest.class 15 | }) 16 | public class MysqlJdbcIntegrationTests { 17 | 18 | static { 19 | System.setProperty("java.awt.headless", "true"); 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /old/dekaf-mysql/src/test/java/org/jetbrains/dekaf/jdbc/MysqlJdbcUnitTests.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.jdbc; 2 | 3 | /** 4 | * @author Leonid Bushuev from JetBrains 5 | */ 6 | 7 | import org.junit.runner.RunWith; 8 | import org.junit.runners.Suite; 9 | 10 | 11 | 12 | @RunWith(Suite.class) 13 | @Suite.SuiteClasses({ 14 | MysqlInterServiceProviderTest.class, 15 | MysqlIntermediateSessionUnitTest.class 16 | }) 17 | public class MysqlJdbcUnitTests { 18 | 19 | } 20 | -------------------------------------------------------------------------------- /old/dekaf-oracle-test-db/src/main/java/org/jetbrains/dekaf/core/OracleTestHelperFactory.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.core; 2 | 3 | import org.jetbrains.annotations.NotNull; 4 | import org.jetbrains.dekaf.Oracle; 5 | import org.jetbrains.dekaf.Rdbms; 6 | 7 | import java.util.Collections; 8 | import java.util.Set; 9 | 10 | 11 | 12 | /** 13 | * @author Leonid Bushuev from JetBrains 14 | **/ 15 | public class OracleTestHelperFactory implements DBTestHelperFactory { 16 | 17 | private static final Set COLLECTION_OF_ORACLE = Collections.singleton(Oracle.RDBMS); 18 | 19 | 20 | @NotNull 21 | @Override 22 | public Set supportRdbms() { 23 | return COLLECTION_OF_ORACLE; 24 | } 25 | 26 | 27 | @NotNull 28 | @Override 29 | public DBTestHelper createTestHelperFor(@NotNull final DBFacade facade) { 30 | return new OracleTestHelper(facade); 31 | } 32 | 33 | } 34 | -------------------------------------------------------------------------------- /old/dekaf-oracle-test-db/src/main/resources/META-INF/services/org.jetbrains.dekaf.core.DBTestHelperFactory: -------------------------------------------------------------------------------- 1 | org.jetbrains.dekaf.core.OracleTestHelperFactory 2 | -------------------------------------------------------------------------------- /old/dekaf-oracle-tests/src/test/java/org/jetbrains/dekaf/core/OracleCommandRunnerTest.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.core; 2 | 3 | /** 4 | * @author Leonid Bushuev from JetBrains 5 | **/ 6 | public class OracleCommandRunnerTest extends CommonCommandRunnerTest { 7 | 8 | 9 | 10 | 11 | } 12 | -------------------------------------------------------------------------------- /old/dekaf-oracle-tests/src/test/java/org/jetbrains/dekaf/core/OraclePrimaryTest.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.core; 2 | 3 | import org.jetbrains.dekaf.Oracle; 4 | import org.junit.FixMethodOrder; 5 | import org.junit.Test; 6 | import org.junit.runners.MethodSorters; 7 | 8 | import static org.assertj.core.api.Assertions.assertThat; 9 | 10 | 11 | 12 | /** 13 | * @author Leonid Bushuev from JetBrains 14 | **/ 15 | @FixMethodOrder(MethodSorters.JVM) 16 | public class OraclePrimaryTest extends CommonPrimaryTest { 17 | 18 | @Test 19 | public void rdbms_is_Oracle() { 20 | assertThat(DB.rdbms()).isEqualTo(Oracle.RDBMS); 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /old/dekaf-oracle-tests/src/test/java/org/jetbrains/dekaf/core/OracleQueryRunnerTest.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.core; 2 | 3 | import org.jetbrains.annotations.NotNull; 4 | 5 | 6 | 7 | /** 8 | * @author Leonid Bushuev from JetBrains 9 | **/ 10 | public class OracleQueryRunnerTest extends CommonQueryRunnerTest { 11 | 12 | 13 | @NotNull 14 | @Override 15 | protected String sqlNow() { 16 | return "sysdate"; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /old/dekaf-oracle-tests/src/test/java/org/jetbrains/dekaf/core/OracleSessionTest.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.core; 2 | 3 | import org.junit.FixMethodOrder; 4 | import org.junit.runners.MethodSorters; 5 | 6 | 7 | 8 | /** 9 | * @author Leonid Bushuev from JetBrains 10 | **/ 11 | @FixMethodOrder(MethodSorters.JVM) 12 | public class OracleSessionTest extends CommonSessionTest { 13 | 14 | 15 | } 16 | -------------------------------------------------------------------------------- /old/dekaf-oracle-tests/src/test/resources/org/jetbrains/dekaf/jdbc/OracleExceptionRecognizingTest.sql: -------------------------------------------------------------------------------- 1 | ---- NoRows ---- 2 | declare 3 | x natural; 4 | begin 5 | select 1 6 | into x 7 | from dual 8 | where 42 is null; 9 | end; 10 | / 11 | 12 | -------------------------------------------------------------------------------- /old/dekaf-oracle/src/main/java/org/jetbrains/dekaf/Oracle.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf; 2 | 3 | /** 4 | * @author Leonid Bushuev from JetBrains 5 | */ 6 | public abstract class Oracle { 7 | 8 | /** 9 | * Oracle RDBMS marker. 10 | */ 11 | public static final Rdbms RDBMS = Rdbms.of("ORACLE"); 12 | 13 | } 14 | -------------------------------------------------------------------------------- /old/dekaf-oracle/src/main/java/org/jetbrains/dekaf/exceptions/OracleTimezoneRegionNotFoundException.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.exceptions; 2 | 3 | import org.jetbrains.annotations.NotNull; 4 | import org.jetbrains.annotations.Nullable; 5 | 6 | import java.sql.SQLException; 7 | 8 | 9 | 10 | /** 11 | * @author Leonid Bushuev from JetBrains 12 | */ 13 | public class OracleTimezoneRegionNotFoundException extends DBConnectionException { 14 | 15 | public OracleTimezoneRegionNotFoundException(@NotNull final String message, 16 | @NotNull final SQLException sqle, 17 | @Nullable final String statementText) { 18 | super(message, sqle, statementText); 19 | } 20 | 21 | public OracleTimezoneRegionNotFoundException(@NotNull final SQLException sqlException, 22 | @Nullable final String statementText) { 23 | super(sqlException, statementText); 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /old/dekaf-oracle/src/main/java/org/jetbrains/dekaf/sql/OracleSQL.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.sql; 2 | 3 | /** 4 | * @author Leonid Bushuev from JetBrains 5 | **/ 6 | public class OracleSQL { 7 | } 8 | -------------------------------------------------------------------------------- /old/dekaf-oracle/src/main/resources/META-INF/services/org.jetbrains.dekaf.intermediate.IntegralIntermediateRdbmsProvider: -------------------------------------------------------------------------------- 1 | org.jetbrains.dekaf.jdbc.OracleIntermediateProvider 2 | -------------------------------------------------------------------------------- /old/dekaf-oracle/src/test/java/org/jetbrains/dekaf/jdbc/OracleJdbcIntegrationTests.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.jdbc; 2 | 3 | /** 4 | * @author Leonid Bushuev from JetBrains 5 | */ 6 | 7 | import org.junit.runner.RunWith; 8 | import org.junit.runners.Suite; 9 | 10 | 11 | 12 | @RunWith(Suite.class) 13 | @Suite.SuiteClasses({ 14 | OracleIntermediateProviderUnitTest.class 15 | }) 16 | public class OracleJdbcIntegrationTests { 17 | 18 | static { 19 | System.setProperty("java.awt.headless", "true"); 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /old/dekaf-oracle/src/test/java/org/jetbrains/dekaf/jdbc/OracleJdbcUnitTests.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.jdbc; 2 | 3 | /** 4 | * @author Leonid Bushuev from JetBrains 5 | */ 6 | 7 | import org.junit.runner.RunWith; 8 | import org.junit.runners.Suite; 9 | 10 | 11 | 12 | @RunWith(Suite.class) 13 | @Suite.SuiteClasses({ 14 | OracleIntermediateProviderUnitTest.class 15 | }) 16 | public class OracleJdbcUnitTests { 17 | } 18 | -------------------------------------------------------------------------------- /old/dekaf-postgres-test-db/src/main/java/org/jetbrains/dekaf/core/PostgresTestHelperFactory.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.core; 2 | 3 | import org.jetbrains.annotations.NotNull; 4 | import org.jetbrains.dekaf.Postgres; 5 | import org.jetbrains.dekaf.Rdbms; 6 | 7 | import java.util.Collections; 8 | import java.util.Set; 9 | 10 | 11 | 12 | /** 13 | * @author Leonid Bushuev from JetBrains 14 | **/ 15 | public class PostgresTestHelperFactory implements DBTestHelperFactory { 16 | 17 | private static final Set COLLECTION_OF_POSTGRE = Collections.singleton(Postgres.RDBMS); 18 | 19 | 20 | @NotNull 21 | @Override 22 | public Set supportRdbms() { 23 | return COLLECTION_OF_POSTGRE; 24 | } 25 | 26 | 27 | @NotNull 28 | @Override 29 | public DBTestHelper createTestHelperFor(@NotNull final DBFacade facade) { 30 | return new PostgresTestHelper(facade); 31 | } 32 | 33 | } 34 | -------------------------------------------------------------------------------- /old/dekaf-postgres-test-db/src/main/resources/META-INF/services/org.jetbrains.dekaf.core.DBTestHelperFactory: -------------------------------------------------------------------------------- 1 | org.jetbrains.dekaf.core.PostgresTestHelperFactory 2 | -------------------------------------------------------------------------------- /old/dekaf-postgres-tests/src/test/java/org/jetbrains/dekaf/PostgresIntegrationTests.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf; 2 | 3 | /** 4 | * @author Leonid Bushuev from JetBrains 5 | **/ 6 | 7 | import org.jetbrains.dekaf.core.*; 8 | import org.jetbrains.dekaf.jdbc.PostgresExceptionRecognizerTest; 9 | import org.junit.runner.RunWith; 10 | import org.junit.runners.Suite; 11 | 12 | 13 | 14 | @RunWith(Suite.class) 15 | @Suite.SuiteClasses({ 16 | PostgresPrimaryTest.class, 17 | PostgresSessionTest.class, 18 | PostgresCommandRunnerTest.class, 19 | PostgresQueryRunnerTest.class, 20 | PostgresExceptionRecognizerTest.class, 21 | SudokuTest.class, 22 | PostgresTestHelperTest.class 23 | }) 24 | public class PostgresIntegrationTests {} 25 | -------------------------------------------------------------------------------- /old/dekaf-postgres-tests/src/test/java/org/jetbrains/dekaf/core/PostgresCommandRunnerTest.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.core; 2 | 3 | /** 4 | * @author Leonid Bushuev from JetBrains 5 | **/ 6 | public class PostgresCommandRunnerTest extends CommonCommandRunnerTest { 7 | 8 | 9 | 10 | } 11 | -------------------------------------------------------------------------------- /old/dekaf-postgres-tests/src/test/java/org/jetbrains/dekaf/core/PostgresPrimaryTest.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.core; 2 | 3 | import org.jetbrains.dekaf.Postgres; 4 | import org.junit.FixMethodOrder; 5 | import org.junit.Test; 6 | import org.junit.runners.MethodSorters; 7 | 8 | import static org.assertj.core.api.Assertions.assertThat; 9 | 10 | 11 | 12 | /** 13 | * @author Leonid Bushuev from JetBrains 14 | **/ 15 | @FixMethodOrder(MethodSorters.JVM) 16 | public class PostgresPrimaryTest extends CommonPrimaryTest { 17 | 18 | @Test 19 | public void rdbms_is_Postgres() { 20 | assertThat(DB.rdbms()).isEqualTo(Postgres.RDBMS); 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /old/dekaf-postgres-tests/src/test/java/org/jetbrains/dekaf/core/PostgresSessionTest.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.core; 2 | 3 | import org.junit.FixMethodOrder; 4 | import org.junit.runners.MethodSorters; 5 | 6 | 7 | 8 | /** 9 | * @author Leonid Bushuev from JetBrains 10 | **/ 11 | @FixMethodOrder(MethodSorters.JVM) 12 | public class PostgresSessionTest extends CommonSessionTest { 13 | 14 | 15 | } 16 | -------------------------------------------------------------------------------- /old/dekaf-postgres-tests/src/test/java/org/jetbrains/dekaf/jdbc/PostgresExceptionRecognizerTest.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.jdbc; 2 | 3 | import org.jetbrains.dekaf.core.CommonExceptionRecognizingTest; 4 | 5 | 6 | 7 | /** 8 | * @author Leonid Bushuev from JetBrains 9 | */ 10 | public class PostgresExceptionRecognizerTest extends CommonExceptionRecognizingTest { 11 | 12 | } 13 | -------------------------------------------------------------------------------- /old/dekaf-postgres-tests/src/test/resources/org/jetbrains/dekaf/core/SudokuTest.sql: -------------------------------------------------------------------------------- 1 | ---- create-table-sudoku ---- 2 | create table Sudoku 3 | ( 4 | Id integer not null 5 | constraint Sudoku_pk primary key, 6 | Rebus smallint[9][9], 7 | Solution smallint[9][9] 8 | ); 9 | 10 | ---- populate-table-sudoku ---- 11 | insert into Sudoku 12 | values (1, e'{{0,0,0,2,6,0,7,0,1}, {6,8,0,0,7,0,0,9,0}, {1,9,0,0,0,4,5,0,0}}', 13 | e'{{4,3,5,2,6,9,7,8,1}, {6,8,2,5,7,1,4,9,3}, {1,9,7,8,3,4,5,6,2}}'), 14 | (2, e'{{0,0,0,2,6,0,7,0,1}, {6,8,0,0,7,0,0,9,0}, {1,9,0,0,0,4,5,0,0}}', 15 | e'{{4,3,5,2,6,9,7,8,1}, {6,8,2,5,7,1,4,9,3}, {1,9,7,8,3,4,5,6,2}}'); 16 | 17 | ---- retrieve-one-sudoku ---- 18 | select Rebus 19 | from Sudoku 20 | where Rebus is not null 21 | limit 1; 22 | 23 | ---- retrieve-couple-of-sudoku ---- 24 | select Rebus, Solution 25 | from Sudoku 26 | where Rebus is not null 27 | limit 1; 28 | 29 | ---- retrieve-super-matrix ---- 30 | select Rebus, Solution 31 | from Sudoku 32 | order by Id; 33 | -------------------------------------------------------------------------------- /old/dekaf-postgres/src/main/java/org/jetbrains/dekaf/Postgres.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf; 2 | 3 | /** 4 | * PostgreSQL declaration class. 5 | * 6 | * @author Leonid Bushuev from JetBrains 7 | */ 8 | public abstract class Postgres { 9 | 10 | /** 11 | * PostgreSQL RDBMS marker. 12 | */ 13 | public final static Rdbms RDBMS = Rdbms.of("POSTGRES"); 14 | 15 | } 16 | -------------------------------------------------------------------------------- /old/dekaf-postgres/src/main/java/org/jetbrains/dekaf/sql/PostgreSQL.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.sql; 2 | 3 | /** 4 | * @author Leonid Bushuev from JetBrains 5 | **/ 6 | public class PostgreSQL { 7 | } 8 | -------------------------------------------------------------------------------- /old/dekaf-postgres/src/main/resources/META-INF/services/org.jetbrains.dekaf.intermediate.IntegralIntermediateRdbmsProvider: -------------------------------------------------------------------------------- 1 | org.jetbrains.dekaf.jdbc.PostgresIntermediateProvider 2 | -------------------------------------------------------------------------------- /old/dekaf-postgres/src/test/java/org/jetbrains/dekaf/jdbc/PostgresInterServiceProviderTest.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.jdbc; 2 | 3 | import org.junit.Before; 4 | import org.junit.Test; 5 | 6 | import java.sql.Driver; 7 | import java.sql.DriverManager; 8 | import java.sql.SQLException; 9 | 10 | import static org.assertj.core.api.Assertions.assertThat; 11 | import static org.jetbrains.dekaf.jdbc.PostgresIntermediateProvider.POSTGRES_CONNECTION_STRING_EXAMPLE; 12 | 13 | 14 | 15 | /** 16 | * @author Leonid Bushuev from JetBrains 17 | */ 18 | public class PostgresInterServiceProviderTest { 19 | 20 | protected PostgresIntermediateProvider myProvider; 21 | 22 | @Before 23 | public void setup() { 24 | myProvider = PostgresIntermediateProvider.INSTANCE; 25 | } 26 | 27 | @Test 28 | public void driverIsLoaded() throws SQLException { 29 | final Driver driver = DriverManager.getDriver(POSTGRES_CONNECTION_STRING_EXAMPLE); 30 | assertThat(driver).isNotNull(); 31 | } 32 | 33 | } -------------------------------------------------------------------------------- /old/dekaf-postgres/src/test/java/org/jetbrains/dekaf/jdbc/PostgresInterServiceProviderUnitTest.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.jdbc; 2 | 3 | import org.jetbrains.dekaf.assertions.PatternAssert; 4 | import org.junit.Test; 5 | 6 | import static org.jetbrains.dekaf.jdbc.PostgresIntermediateProvider.POSTGRES_CONNECTION_STRING_EXAMPLE; 7 | import static org.jetbrains.dekaf.jdbc.PostgresIntermediateProvider.POSTGRES_CONNECTION_STRING_PATTERN; 8 | 9 | 10 | 11 | /** 12 | * @author Leonid Bushuev from JetBrains 13 | */ 14 | public class PostgresInterServiceProviderUnitTest { 15 | 16 | @Test 17 | public void connectionStringExample_matches_connectionStringPattern() { 18 | PatternAssert.assertThat(POSTGRES_CONNECTION_STRING_PATTERN) 19 | .fits(POSTGRES_CONNECTION_STRING_EXAMPLE); 20 | } 21 | 22 | } -------------------------------------------------------------------------------- /old/dekaf-postgres/src/test/java/org/jetbrains/dekaf/jdbc/PostgresJdbcIntegrationTests.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.jdbc; 2 | 3 | /** 4 | * @author Leonid Bushuev from JetBrains 5 | */ 6 | 7 | import org.junit.runner.RunWith; 8 | import org.junit.runners.Suite; 9 | 10 | 11 | 12 | @RunWith(Suite.class) 13 | @Suite.SuiteClasses({ 14 | PostgresInterServiceProviderTest.class 15 | }) 16 | public class PostgresJdbcIntegrationTests { 17 | 18 | static { 19 | System.setProperty("java.awt.headless", "true"); 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /old/dekaf-postgres/src/test/java/org/jetbrains/dekaf/jdbc/PostgresJdbcUnitTests.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.jdbc; 2 | 3 | /** 4 | * @author Leonid Bushuev from JetBrains 5 | */ 6 | 7 | import org.junit.runner.RunWith; 8 | import org.junit.runners.Suite; 9 | 10 | 11 | 12 | @RunWith(Suite.class) 13 | @Suite.SuiteClasses({ 14 | PostgresInterServiceProviderTest.class 15 | }) 16 | public class PostgresJdbcUnitTests { 17 | 18 | } 19 | -------------------------------------------------------------------------------- /old/dekaf-redshift-test-db/src/main/java/org/jetbrains/dekaf/core/RedshiftTestHelper.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.core; 2 | 3 | import org.jetbrains.annotations.NotNull; 4 | import org.jetbrains.dekaf.sql.Scriptum; 5 | 6 | 7 | 8 | public class RedshiftTestHelper extends BaseTestHelper { 9 | 10 | public RedshiftTestHelper(@NotNull DBFacade db) { 11 | super(db, Scriptum.of(RedshiftTestHelper.class)); 12 | } 13 | 14 | @Override 15 | public void prepareX1() { 16 | performCommand("create or replace view X1 as select 1"); 17 | } 18 | 19 | @Override 20 | public void prepareX1000() { 21 | performCommand(scriptum, "X1000"); 22 | } 23 | 24 | @Override 25 | public void prepareX1000000() { 26 | performCommand(scriptum, "X1000000"); 27 | } 28 | 29 | } 30 | -------------------------------------------------------------------------------- /old/dekaf-redshift-test-db/src/main/java/org/jetbrains/dekaf/core/RedshiftTestHelperFactory.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.core; 2 | 3 | import org.jetbrains.annotations.NotNull; 4 | import org.jetbrains.dekaf.Rdbms; 5 | import org.jetbrains.dekaf.Redshift; 6 | 7 | import java.util.Collections; 8 | import java.util.Set; 9 | 10 | 11 | 12 | public class RedshiftTestHelperFactory implements DBTestHelperFactory { 13 | 14 | private static final Set COLLECTION_OF_REDSHIFT = Collections.singleton(Redshift.RDBMS); 15 | 16 | @NotNull 17 | @Override 18 | public Set supportRdbms() { 19 | return COLLECTION_OF_REDSHIFT; 20 | } 21 | 22 | @NotNull 23 | @Override 24 | public DBTestHelper createTestHelperFor(@NotNull final DBFacade facade) { 25 | return new RedshiftTestHelper(facade); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /old/dekaf-redshift-test-db/src/main/resources/META-INF/services/org.jetbrains.dekaf.core.DBTestHelperFactory: -------------------------------------------------------------------------------- 1 | org.jetbrains.dekaf.core.RedshiftTestHelperFactory 2 | -------------------------------------------------------------------------------- /old/dekaf-redshift-tests/src/test/java/org/jetbrains/dekaf/RedshiftIntegrationTests.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf; 2 | 3 | 4 | import org.jetbrains.dekaf.core.RedshiftCommandRunnerTest; 5 | import org.jetbrains.dekaf.core.RedshiftPrimaryTest; 6 | import org.jetbrains.dekaf.core.RedshiftQueryRunnerTest; 7 | import org.jetbrains.dekaf.core.RedshiftSessionTest; 8 | import org.jetbrains.dekaf.jdbc.RedshiftExceptionRecognizingTest; 9 | import org.junit.runner.RunWith; 10 | import org.junit.runners.Suite; 11 | 12 | 13 | 14 | @RunWith(Suite.class) 15 | @Suite.SuiteClasses({ 16 | RedshiftPrimaryTest.class, 17 | RedshiftSessionTest.class, 18 | RedshiftCommandRunnerTest.class, 19 | RedshiftQueryRunnerTest.class, 20 | RedshiftExceptionRecognizingTest.class 21 | }) 22 | public class RedshiftIntegrationTests {} 23 | -------------------------------------------------------------------------------- /old/dekaf-redshift-tests/src/test/java/org/jetbrains/dekaf/core/RedshiftCommandRunnerTest.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.core; 2 | 3 | 4 | 5 | public class RedshiftCommandRunnerTest extends CommonCommandRunnerTest { 6 | 7 | } -------------------------------------------------------------------------------- /old/dekaf-redshift-tests/src/test/java/org/jetbrains/dekaf/core/RedshiftPrimaryTest.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.core; 2 | 3 | import org.jetbrains.dekaf.Redshift; 4 | import org.junit.FixMethodOrder; 5 | import org.junit.Test; 6 | import org.junit.runners.MethodSorters; 7 | 8 | import static org.assertj.core.api.Assertions.assertThat; 9 | 10 | 11 | 12 | @FixMethodOrder(MethodSorters.JVM) 13 | public class RedshiftPrimaryTest extends CommonPrimaryTest { 14 | 15 | @Test 16 | public void rdbms_is_Redshift() { 17 | assertThat(DB.rdbms()).isEqualTo(Redshift.RDBMS); 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /old/dekaf-redshift-tests/src/test/java/org/jetbrains/dekaf/core/RedshiftSessionTest.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.core; 2 | 3 | import org.junit.FixMethodOrder; 4 | import org.junit.runners.MethodSorters; 5 | 6 | 7 | 8 | @FixMethodOrder(MethodSorters.JVM) 9 | public class RedshiftSessionTest extends CommonSessionTest { 10 | 11 | } 12 | -------------------------------------------------------------------------------- /old/dekaf-redshift-tests/src/test/java/org/jetbrains/dekaf/jdbc/RedshiftExceptionRecognizingTest.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.jdbc; 2 | 3 | import org.jetbrains.dekaf.core.CommonExceptionRecognizingTest; 4 | 5 | 6 | 7 | public class RedshiftExceptionRecognizingTest extends CommonExceptionRecognizingTest { 8 | 9 | } 10 | -------------------------------------------------------------------------------- /old/dekaf-redshift/src/main/java/org/jetbrains/dekaf/Redshift.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf; 2 | 3 | public final class Redshift { 4 | 5 | public static final Rdbms RDBMS = Rdbms.of("REDSHIFT"); 6 | 7 | } 8 | -------------------------------------------------------------------------------- /old/dekaf-redshift/src/main/java/org/jetbrains/dekaf/sql/RedshiftSQL.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.sql; 2 | 3 | public class RedshiftSQL { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /old/dekaf-redshift/src/main/resources/META-INF/services/org.jetbrains.dekaf.intermediate.IntegralIntermediateRdbmsProvider: -------------------------------------------------------------------------------- 1 | org.jetbrains.dekaf.jdbc.RedshiftIntermediateProvider 2 | -------------------------------------------------------------------------------- /old/dekaf-redshift/src/test/java/org/jetbrains/dekaf/jdbc/RedshiftInterServiceProviderTest.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.jdbc; 2 | 3 | import org.junit.Before; 4 | import org.junit.Test; 5 | 6 | import java.sql.Driver; 7 | import java.sql.DriverManager; 8 | import java.sql.SQLException; 9 | 10 | import static org.assertj.core.api.Assertions.assertThat; 11 | import static org.jetbrains.dekaf.jdbc.RedshiftIntermediateProvider.REDSHIFT_CONNECTION_STRING_EXAMPLE; 12 | 13 | 14 | 15 | public class RedshiftInterServiceProviderTest { 16 | protected RedshiftIntermediateProvider myProvider; 17 | 18 | @Before 19 | public void setup() { 20 | myProvider = RedshiftIntermediateProvider.INSTANCE; 21 | } 22 | 23 | @Test 24 | public void driverIsLoaded() throws SQLException { 25 | Driver driver = DriverManager.getDriver(REDSHIFT_CONNECTION_STRING_EXAMPLE); 26 | assertThat(driver).isNotNull(); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /old/dekaf-redshift/src/test/java/org/jetbrains/dekaf/jdbc/RedshiftInterServiceProviderUnitTest.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.jdbc; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.assertj.core.api.Assertions.assertThat; 6 | import static org.jetbrains.dekaf.jdbc.RedshiftIntermediateProvider.REDSHIFT_CONNECTION_STRING_EXAMPLE; 7 | import static org.jetbrains.dekaf.jdbc.RedshiftIntermediateProvider.REDSHIFT_CONNECTION_STRING_PATTERN; 8 | 9 | 10 | 11 | public class RedshiftInterServiceProviderUnitTest { 12 | 13 | @Test 14 | public void connectionStringExample_matches_connectionStringPattern() { 15 | assertThat(REDSHIFT_CONNECTION_STRING_EXAMPLE).matches(REDSHIFT_CONNECTION_STRING_PATTERN); 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /old/dekaf-redshift/src/test/java/org/jetbrains/dekaf/jdbc/RedshiftJdbcIntegrationTests.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.jdbc; 2 | 3 | import org.junit.runner.RunWith; 4 | import org.junit.runners.Suite; 5 | 6 | 7 | 8 | @RunWith(Suite.class) 9 | @Suite.SuiteClasses({ 10 | RedshiftInterServiceProviderTest.class 11 | }) 12 | public class RedshiftJdbcIntegrationTests { 13 | 14 | static { 15 | System.setProperty("java.awt.headless", "true"); 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /old/dekaf-redshift/src/test/java/org/jetbrains/dekaf/jdbc/RedshiftJdbcUnitTests.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.jdbc; 2 | 3 | import org.junit.runner.RunWith; 4 | import org.junit.runners.Suite; 5 | 6 | 7 | 8 | @RunWith(Suite.class) 9 | @Suite.SuiteClasses({ 10 | RedshiftInterServiceProviderTest.class 11 | }) 12 | public class RedshiftJdbcUnitTests { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /old/dekaf-single-test-db/src/main/resources/META-INF/services/org.jetbrains.dekaf.core.DBTestHelperFactory: -------------------------------------------------------------------------------- 1 | org.jetbrains.dekaf.core.PostgresTestHelperFactory 2 | org.jetbrains.dekaf.core.OracleTestHelperFactory 3 | org.jetbrains.dekaf.core.MssqlTestHelperFactory 4 | org.jetbrains.dekaf.core.SybaseTestHelperFactory 5 | org.jetbrains.dekaf.core.MysqlTestHelperFactory 6 | org.jetbrains.dekaf.core.H2dbTestHelperFactory 7 | org.jetbrains.dekaf.core.SqliteTestHelperFactory 8 | org.jetbrains.dekaf.core.ExasolTestHelperFactory 9 | org.jetbrains.dekaf.core.RedshiftTestHelperFactory 10 | org.jetbrains.dekaf.core.CHouseTestHelperFactory 11 | org.jetbrains.dekaf.core.CassandraTestHelperFactory 12 | -------------------------------------------------------------------------------- /old/dekaf-single/src/main/resources/META-INF/services/org.jetbrains.dekaf.core.DBFederatedProvider: -------------------------------------------------------------------------------- 1 | org.jetbrains.dekaf.core.BaseFederatedProvider 2 | -------------------------------------------------------------------------------- /old/dekaf-single/src/main/resources/META-INF/services/org.jetbrains.dekaf.intermediate.IntegralIntermediateFederatedProvider: -------------------------------------------------------------------------------- 1 | org.jetbrains.dekaf.jdbc.JdbcIntermediateFederatedProvider 2 | -------------------------------------------------------------------------------- /old/dekaf-single/src/main/resources/META-INF/services/org.jetbrains.dekaf.intermediate.IntegralIntermediateRdbmsProvider: -------------------------------------------------------------------------------- 1 | org.jetbrains.dekaf.jdbc.PostgresIntermediateProvider 2 | org.jetbrains.dekaf.jdbc.OracleIntermediateProvider 3 | org.jetbrains.dekaf.jdbc.MssqlIntermediateProvider 4 | org.jetbrains.dekaf.jdbc.SybaseIntermediateProvider 5 | org.jetbrains.dekaf.jdbc.MysqlIntermediateProvider 6 | org.jetbrains.dekaf.jdbc.H2dbIntermediateProvider 7 | org.jetbrains.dekaf.jdbc.SqliteIntermediateProvider 8 | org.jetbrains.dekaf.jdbc.ExasolIntermediateProvider 9 | org.jetbrains.dekaf.jdbc.RedshiftIntermediateProvider 10 | org.jetbrains.dekaf.jdbc.CHouseIntermediateProvider 11 | org.jetbrains.dekaf.jdbc.CassandraIntermediateProvider 12 | org.jetbrains.dekaf.jdbc.UnknownDatabaseProvider 13 | -------------------------------------------------------------------------------- /old/dekaf-single/src/main/resources/META-INF/services/org.jetbrains.dekaf.intermediate.PrimeIntermediateFederatedProvider: -------------------------------------------------------------------------------- 1 | org.jetbrains.dekaf.jdbc.JdbcIntermediateFederatedProvider 2 | -------------------------------------------------------------------------------- /old/dekaf-sqlite-test-db/src/main/java/org/jetbrains/dekaf/core/SqliteTestHelper.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.core; 2 | 3 | import org.jetbrains.annotations.NotNull; 4 | import org.jetbrains.dekaf.sql.Scriptum; 5 | 6 | 7 | 8 | /** 9 | * @author Leonid Bushuev from JetBrains 10 | **/ 11 | public class SqliteTestHelper extends BaseTestHelper { 12 | 13 | public SqliteTestHelper(@NotNull final DBFacade db) { 14 | super(db, Scriptum.of(SqliteTestHelper.class)); 15 | } 16 | 17 | @Override 18 | public void prepareX1() { 19 | performCommand("create view X1 as select 1"); 20 | } 21 | 22 | @Override 23 | public void prepareX1000() { 24 | performCommand(scriptum, "X1000"); 25 | } 26 | 27 | @Override 28 | public void prepareX1000000() { 29 | prepareX1000(); 30 | performCommand(scriptum, "X1000000"); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /old/dekaf-sqlite-test-db/src/main/java/org/jetbrains/dekaf/core/SqliteTestHelperFactory.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.core; 2 | 3 | import org.jetbrains.annotations.NotNull; 4 | import org.jetbrains.dekaf.Sqlite; 5 | import org.jetbrains.dekaf.Rdbms; 6 | 7 | import java.util.Collections; 8 | import java.util.Set; 9 | 10 | 11 | 12 | /** 13 | * @author Leonid Bushuev from JetBrains 14 | **/ 15 | public class SqliteTestHelperFactory implements DBTestHelperFactory { 16 | 17 | private static final Set COLLECTION_OF_SQLITE = Collections.singleton(Sqlite.RDBMS); 18 | 19 | 20 | @NotNull 21 | @Override 22 | public Set supportRdbms() { 23 | return COLLECTION_OF_SQLITE; 24 | } 25 | 26 | 27 | @NotNull 28 | @Override 29 | public DBTestHelper createTestHelperFor(@NotNull final DBFacade facade) { 30 | return new SqliteTestHelper(facade); 31 | } 32 | 33 | } 34 | -------------------------------------------------------------------------------- /old/dekaf-sqlite-test-db/src/main/resources/META-INF/services/org.jetbrains.dekaf.core.DBTestHelperFactory: -------------------------------------------------------------------------------- 1 | org.jetbrains.dekaf.core.SqliteTestHelperFactory 2 | -------------------------------------------------------------------------------- /old/dekaf-sqlite-tests/src/test/java/org/jetbrains/dekaf/SqliteIntegrationTests.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf; 2 | 3 | /** 4 | * @author Leonid Bushuev from JetBrains 5 | **/ 6 | 7 | import org.jetbrains.dekaf.core.SqliteCommandRunnerTest; 8 | import org.jetbrains.dekaf.core.SqlitePrimaryTest; 9 | import org.jetbrains.dekaf.core.SqliteQueryRunnerTest; 10 | import org.jetbrains.dekaf.core.SqliteSessionTest; 11 | import org.jetbrains.dekaf.jdbc.SqliteExceptionRecognizingTest; 12 | import org.junit.runner.RunWith; 13 | import org.junit.runners.Suite; 14 | 15 | 16 | 17 | @RunWith(Suite.class) 18 | @Suite.SuiteClasses({ 19 | SqlitePrimaryTest.class, 20 | SqliteSessionTest.class, 21 | SqliteCommandRunnerTest.class, 22 | SqliteQueryRunnerTest.class, 23 | SqliteExceptionRecognizingTest.class 24 | }) 25 | public class SqliteIntegrationTests {} 26 | -------------------------------------------------------------------------------- /old/dekaf-sqlite-tests/src/test/java/org/jetbrains/dekaf/core/SqliteCommandRunnerTest.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.core; 2 | 3 | /** 4 | * @author Leonid Bushuev from JetBrains 5 | **/ 6 | public class SqliteCommandRunnerTest extends CommonCommandRunnerTest { 7 | 8 | 9 | 10 | 11 | } 12 | -------------------------------------------------------------------------------- /old/dekaf-sqlite-tests/src/test/java/org/jetbrains/dekaf/core/SqlitePrimaryTest.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.core; 2 | 3 | import org.jetbrains.dekaf.Sqlite; 4 | import org.junit.FixMethodOrder; 5 | import org.junit.Test; 6 | import org.junit.internal.AssumptionViolatedException; 7 | import org.junit.runners.MethodSorters; 8 | 9 | import static org.assertj.core.api.Assertions.assertThat; 10 | 11 | 12 | 13 | /** 14 | * @author Leonid Bushuev from JetBrains 15 | **/ 16 | @FixMethodOrder(MethodSorters.JVM) 17 | public class SqlitePrimaryTest extends CommonPrimaryTest { 18 | 19 | @Test 20 | public void rdbms_is_Sqlite() { 21 | assertThat(DB.rdbms()).isEqualTo(Sqlite.RDBMS); 22 | } 23 | 24 | 25 | @Override 26 | public void getConnectionInfo_user() { 27 | throw new AssumptionViolatedException("In Sqlite user can be empty"); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /old/dekaf-sqlite-tests/src/test/java/org/jetbrains/dekaf/core/SqliteQueryRunnerTest.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.core; 2 | 3 | /** 4 | * @author Leonid Bushuev from JetBrains 5 | **/ 6 | public class SqliteQueryRunnerTest extends CommonQueryRunnerTest { 7 | 8 | } 9 | -------------------------------------------------------------------------------- /old/dekaf-sqlite-tests/src/test/java/org/jetbrains/dekaf/core/SqliteSessionTest.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.core; 2 | 3 | import org.junit.FixMethodOrder; 4 | import org.junit.runners.MethodSorters; 5 | 6 | 7 | 8 | /** 9 | * @author Leonid Bushuev from JetBrains 10 | **/ 11 | @FixMethodOrder(MethodSorters.JVM) 12 | public class SqliteSessionTest extends CommonSessionTest { 13 | 14 | 15 | } 16 | -------------------------------------------------------------------------------- /old/dekaf-sqlite-tests/src/test/java/org/jetbrains/dekaf/jdbc/SqliteExceptionRecognizingTest.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.jdbc; 2 | 3 | import org.jetbrains.dekaf.core.CommonExceptionRecognizingTest; 4 | 5 | 6 | 7 | /** 8 | * @author Leonid Bushuev from JetBrains 9 | */ 10 | public class SqliteExceptionRecognizingTest extends CommonExceptionRecognizingTest { 11 | 12 | 13 | } 14 | -------------------------------------------------------------------------------- /old/dekaf-sqlite/src/main/java/org/jetbrains/dekaf/Sqlite.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf; 2 | 3 | /** 4 | * Sqlite declaration class. 5 | * 6 | * @author Leonid Bushuev from JetBrains 7 | */ 8 | public abstract class Sqlite { 9 | 10 | /** 11 | * Sqlite RDBMS marker. 12 | */ 13 | public final static Rdbms RDBMS = Rdbms.of("SQLITE"); 14 | 15 | } 16 | -------------------------------------------------------------------------------- /old/dekaf-sqlite/src/main/java/org/jetbrains/dekaf/jdbc/SqliteExceptionRecognizer.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.jdbc; 2 | 3 | /** 4 | * @author Leonid Bushuev from JetBrains 5 | */ 6 | @SuppressWarnings("ThrowableResultOfMethodCallIgnored") 7 | public class SqliteExceptionRecognizer extends BaseExceptionRecognizer { 8 | 9 | public static final SqliteExceptionRecognizer INSTANCE = new SqliteExceptionRecognizer(); 10 | 11 | } 12 | -------------------------------------------------------------------------------- /old/dekaf-sqlite/src/main/java/org/jetbrains/dekaf/jdbc/SqliteIntermediateSession.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.jdbc; 2 | 3 | import org.jetbrains.annotations.NotNull; 4 | import org.jetbrains.annotations.Nullable; 5 | import org.jetbrains.dekaf.intermediate.DBExceptionRecognizer; 6 | 7 | import java.sql.Connection; 8 | 9 | public class SqliteIntermediateSession extends JdbcIntermediateSession { 10 | 11 | SqliteIntermediateSession(@Nullable JdbcIntermediateFacade facade, 12 | @NotNull DBExceptionRecognizer exceptionRecognizer, 13 | @NotNull Connection connection, boolean ownConnection) { 14 | super(facade, exceptionRecognizer, connection, ownConnection); 15 | } 16 | 17 | @NotNull 18 | @Override 19 | protected JdbcIntermediateSimpleSeance openSimpleStatementSeance(@NotNull String statementText) { 20 | return new SqliteIntermediateSimpleSeance(this, statementText); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /old/dekaf-sqlite/src/main/java/org/jetbrains/dekaf/sql/SqliteSQL.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.sql; 2 | 3 | /** 4 | * @author Leonid Bushuev from JetBrains 5 | **/ 6 | public class SqliteSQL { 7 | } 8 | -------------------------------------------------------------------------------- /old/dekaf-sqlite/src/main/resources/META-INF/services/org.jetbrains.dekaf.intermediate.IntegralIntermediateRdbmsProvider: -------------------------------------------------------------------------------- 1 | org.jetbrains.dekaf.jdbc.SqliteIntermediateProvider 2 | -------------------------------------------------------------------------------- /old/dekaf-sqlite/src/test/java/org/jetbrains/dekaf/jdbc/SqliteInterServiceProviderTest.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.jdbc; 2 | 3 | import org.junit.Before; 4 | import org.junit.Test; 5 | 6 | import java.sql.Driver; 7 | import java.sql.DriverManager; 8 | import java.sql.SQLException; 9 | 10 | import static org.assertj.core.api.Assertions.assertThat; 11 | import static org.jetbrains.dekaf.jdbc.SqliteIntermediateProvider.SQLITE_CONNECTION_STRING_EXAMPLE; 12 | 13 | 14 | 15 | /** 16 | * @author Leonid Bushuev from JetBrains 17 | */ 18 | public class SqliteInterServiceProviderTest { 19 | 20 | protected SqliteIntermediateProvider myProvider; 21 | 22 | @Before 23 | public void setup() { 24 | myProvider = SqliteIntermediateProvider.INSTANCE; 25 | } 26 | 27 | @Test 28 | public void driverIsLoaded() throws SQLException { 29 | final Driver driver = DriverManager.getDriver(SQLITE_CONNECTION_STRING_EXAMPLE); 30 | assertThat(driver).isNotNull(); 31 | } 32 | 33 | } -------------------------------------------------------------------------------- /old/dekaf-sqlite/src/test/java/org/jetbrains/dekaf/jdbc/SqliteInterServiceProviderUnitTest.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.jdbc; 2 | 3 | import org.jetbrains.dekaf.assertions.PatternAssert; 4 | import org.junit.Test; 5 | 6 | import static org.jetbrains.dekaf.jdbc.SqliteIntermediateProvider.SQLITE_CONNECTION_STRING_EXAMPLE; 7 | import static org.jetbrains.dekaf.jdbc.SqliteIntermediateProvider.SQLITE_CONNECTION_STRING_PATTERN; 8 | 9 | 10 | 11 | /** 12 | * @author Leonid Bushuev from JetBrains 13 | */ 14 | public class SqliteInterServiceProviderUnitTest { 15 | 16 | @Test 17 | public void connectionStringExample_matches_connectionStringPattern() { 18 | PatternAssert.assertThat(SQLITE_CONNECTION_STRING_PATTERN) 19 | .fits(SQLITE_CONNECTION_STRING_EXAMPLE); 20 | } 21 | 22 | } -------------------------------------------------------------------------------- /old/dekaf-sqlite/src/test/java/org/jetbrains/dekaf/jdbc/SqliteJdbcIntegrationTests.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.jdbc; 2 | 3 | /** 4 | * @author Leonid Bushuev from JetBrains 5 | */ 6 | 7 | import org.junit.runner.RunWith; 8 | import org.junit.runners.Suite; 9 | 10 | 11 | 12 | @RunWith(Suite.class) 13 | @Suite.SuiteClasses({ 14 | SqliteInterServiceProviderTest.class 15 | }) 16 | public class SqliteJdbcIntegrationTests { 17 | 18 | static { 19 | System.setProperty("java.awt.headless", "true"); 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /old/dekaf-sqlite/src/test/java/org/jetbrains/dekaf/jdbc/SqliteJdbcUnitTests.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.jdbc; 2 | 3 | /** 4 | * @author Leonid Bushuev from JetBrains 5 | */ 6 | 7 | import org.junit.runner.RunWith; 8 | import org.junit.runners.Suite; 9 | 10 | 11 | 12 | @RunWith(Suite.class) 13 | @Suite.SuiteClasses({ 14 | SqliteInterServiceProviderTest.class 15 | }) 16 | public class SqliteJdbcUnitTests { 17 | 18 | } 19 | -------------------------------------------------------------------------------- /old/dekaf-sybase-test-db/src/main/java/org/jetbrains/dekaf/core/SybaseTestHelperFactory.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.core; 2 | 3 | import org.jetbrains.annotations.NotNull; 4 | import org.jetbrains.dekaf.Rdbms; 5 | import org.jetbrains.dekaf.Sybase; 6 | 7 | import java.util.Collections; 8 | import java.util.Set; 9 | 10 | 11 | 12 | /** 13 | * @author Leonid Bushuev from JetBrains 14 | **/ 15 | public class SybaseTestHelperFactory implements DBTestHelperFactory { 16 | 17 | private static final Set COLLECTION_OF_SYBASE = Collections.singleton(Sybase.RDBMS); 18 | 19 | 20 | @NotNull 21 | @Override 22 | public Set supportRdbms() { 23 | return COLLECTION_OF_SYBASE; 24 | } 25 | 26 | 27 | @NotNull 28 | @Override 29 | public DBTestHelper createTestHelperFor(@NotNull final DBFacade facade) { 30 | return new SybaseTestHelper(facade); 31 | } 32 | 33 | } 34 | -------------------------------------------------------------------------------- /old/dekaf-sybase-test-db/src/main/resources/META-INF/services/org.jetbrains.dekaf.core.DBTestHelperFactory: -------------------------------------------------------------------------------- 1 | org.jetbrains.dekaf.core.SybaseTestHelperFactory 2 | -------------------------------------------------------------------------------- /old/dekaf-sybase-tests/src/test/java/org/jetbrains/dekaf/SybaseIntegrationTests.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf; 2 | 3 | /** 4 | * @author Leonid Bushuev from JetBrains 5 | **/ 6 | 7 | import org.jetbrains.dekaf.core.*; 8 | import org.jetbrains.dekaf.jdbc.SybaseExceptionRecognizerTest; 9 | import org.junit.runner.RunWith; 10 | import org.junit.runners.Suite; 11 | 12 | 13 | 14 | @RunWith(Suite.class) 15 | @Suite.SuiteClasses({ 16 | SybasePrimaryTest.class, 17 | SybaseSessionTest.class, 18 | SybaseCommandRunnerTest.class, 19 | SybaseQueryRunnerTest.class, 20 | SybaseExceptionRecognizerTest.class, 21 | SybaseTestHelperTest.class, 22 | SybaseVersionTest.class, 23 | }) 24 | public class SybaseIntegrationTests {} 25 | -------------------------------------------------------------------------------- /old/dekaf-sybase-tests/src/test/java/org/jetbrains/dekaf/core/SybaseCommandRunnerTest.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.core; 2 | 3 | /** 4 | * @author Leonid Bushuev from JetBrains 5 | **/ 6 | public class SybaseCommandRunnerTest extends CommonCommandRunnerTest { 7 | 8 | 9 | 10 | } 11 | -------------------------------------------------------------------------------- /old/dekaf-sybase-tests/src/test/java/org/jetbrains/dekaf/core/SybasePrimaryTest.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.core; 2 | 3 | import org.jetbrains.dekaf.Sybase; 4 | import org.junit.FixMethodOrder; 5 | import org.junit.Test; 6 | import org.junit.runners.MethodSorters; 7 | 8 | import static org.assertj.core.api.Assertions.assertThat; 9 | 10 | 11 | 12 | /** 13 | * @author Leonid Bushuev from JetBrains 14 | **/ 15 | @FixMethodOrder(MethodSorters.JVM) 16 | public class SybasePrimaryTest extends CommonPrimaryTest { 17 | 18 | @Test 19 | public void rdbms_is_Sybase() { 20 | assertThat(DB.rdbms()).isEqualTo(Sybase.RDBMS); 21 | } 22 | 23 | @Test @Override 24 | public void getConnectionInfo_versions() { 25 | DB.connect(); 26 | ConnectionInfo info = DB.getConnectionInfo(); 27 | assertThat(info.serverVersion.isOrGreater(15)).isTrue(); 28 | assertThat(info.driverVersion.isOrGreater(1,2,5)).isTrue(); 29 | } 30 | 31 | } 32 | -------------------------------------------------------------------------------- /old/dekaf-sybase-tests/src/test/java/org/jetbrains/dekaf/core/SybaseSessionTest.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.core; 2 | 3 | import org.junit.FixMethodOrder; 4 | import org.junit.runners.MethodSorters; 5 | 6 | 7 | 8 | /** 9 | * @author Leonid Bushuev from JetBrains 10 | **/ 11 | @FixMethodOrder(MethodSorters.JVM) 12 | public class SybaseSessionTest extends CommonSessionTest { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /old/dekaf-sybase-tests/src/test/java/org/jetbrains/dekaf/core/SybaseVersionTest.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.core; 2 | 3 | import org.jetbrains.dekaf.util.Version; 4 | import org.junit.Assert; 5 | import org.junit.Test; 6 | 7 | import static org.jetbrains.dekaf.jdbc.SybaseIntermediateFacade.parseServerVersion; 8 | 9 | 10 | 11 | public class SybaseVersionTest { 12 | @Test 13 | public void test1() { 14 | doTest( 15 | "Adaptive Server Enterprise/15.7.0/EBF 19805 SMP ESD#01 /P/x86_64/Enterprise Linux/aseasap/2918/64-bit/FBO/Wed Feb 8 07:50:28 2012", 16 | 15, 7); 17 | } 18 | 19 | @Test 20 | public void test2() { 21 | doTest( 22 | "Adaptive Server Enterprise/16.0 SP02 PL02/EBF 25320 SMP/P/x86_64/Enterprise Linux/ase160sp02plx/2492/64-bit/FBO/Sat Nov 21 04:05:39 2015", 23 | 16, 0); 24 | } 25 | 26 | private void doTest(String verStr, int... ver) { 27 | Assert.assertEquals(Version.of(ver), parseServerVersion(verStr)); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /old/dekaf-sybase/src/main/java/org/jetbrains/dekaf/Sybase.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf; 2 | 3 | /** 4 | * Sybase ASE declaration class. 5 | * 6 | * @author Leonid Bushuev from JetBrains 7 | */ 8 | public abstract class Sybase { 9 | 10 | /** 11 | * Sybase ASE RDBMS marker. 12 | */ 13 | public final static Rdbms RDBMS = Rdbms.of("SYBASE"); 14 | 15 | } 16 | -------------------------------------------------------------------------------- /old/dekaf-sybase/src/main/java/org/jetbrains/dekaf/sql/SybaseSQL.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.sql; 2 | 3 | /** 4 | * @author Leonid Bushuev from JetBrains 5 | **/ 6 | public class SybaseSQL { 7 | } 8 | -------------------------------------------------------------------------------- /old/dekaf-sybase/src/main/resources/META-INF/services/org.jetbrains.dekaf.intermediate.IntegralIntermediateRdbmsProvider: -------------------------------------------------------------------------------- 1 | org.jetbrains.dekaf.jdbc.SybaseIntermediateProvider 2 | -------------------------------------------------------------------------------- /old/dekaf-sybase/src/test/java/org/jetbrains/dekaf/jdbc/SybaseInterServiceProviderTest.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.jdbc; 2 | 3 | import org.junit.Before; 4 | import org.junit.Test; 5 | 6 | import java.sql.Driver; 7 | import java.sql.DriverManager; 8 | import java.sql.SQLException; 9 | 10 | import static org.assertj.core.api.Assertions.assertThat; 11 | import static org.jetbrains.dekaf.jdbc.SybaseIntermediateProvider.SYBASE_JTDS_CONNECTION_STRING_EXAMPLE; 12 | 13 | 14 | 15 | /** 16 | * @author Leonid Bushuev from JetBrains 17 | */ 18 | public class SybaseInterServiceProviderTest { 19 | 20 | protected SybaseIntermediateProvider myProvider; 21 | 22 | @Before 23 | public void setup() { 24 | myProvider = SybaseIntermediateProvider.INSTANCE; 25 | } 26 | 27 | @Test 28 | public void driverIsLoaded() throws SQLException { 29 | final Driver driver = DriverManager.getDriver(SYBASE_JTDS_CONNECTION_STRING_EXAMPLE); 30 | assertThat(driver).isNotNull(); 31 | } 32 | 33 | } -------------------------------------------------------------------------------- /old/dekaf-sybase/src/test/java/org/jetbrains/dekaf/jdbc/SybaseInterServiceProviderUnitTest.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.jdbc; 2 | 3 | import org.jetbrains.dekaf.assertions.PatternAssert; 4 | import org.junit.Test; 5 | 6 | import static org.jetbrains.dekaf.jdbc.SybaseIntermediateProvider.*; 7 | 8 | 9 | 10 | /** 11 | * @author Leonid Bushuev from JetBrains 12 | */ 13 | public class SybaseInterServiceProviderUnitTest { 14 | 15 | @Test 16 | public void connectionStringExample_matches_connectionStringPattern() { 17 | PatternAssert.assertThat(SYBASE_CONNECTION_STRING_PATTERN) 18 | .fits(SYBASE_JTDS_CONNECTION_STRING_EXAMPLE) 19 | .fits(SYBASE_NATIVE_CONNECTION_STRING_EXAMPLE); 20 | } 21 | 22 | } -------------------------------------------------------------------------------- /old/dekaf-sybase/src/test/java/org/jetbrains/dekaf/jdbc/SybaseJdbcIntegrationTests.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.jdbc; 2 | 3 | /** 4 | * @author Leonid Bushuev from JetBrains 5 | */ 6 | 7 | import org.junit.runner.RunWith; 8 | import org.junit.runners.Suite; 9 | 10 | 11 | 12 | @RunWith(Suite.class) 13 | @Suite.SuiteClasses({ 14 | SybaseInterServiceProviderTest.class 15 | }) 16 | public class SybaseJdbcIntegrationTests { 17 | 18 | static { 19 | System.setProperty("java.awt.headless", "true"); 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /old/dekaf-sybase/src/test/java/org/jetbrains/dekaf/jdbc/SybaseJdbcUnitTests.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.jdbc; 2 | 3 | /** 4 | * @author Leonid Bushuev from JetBrains 5 | */ 6 | 7 | import org.junit.runner.RunWith; 8 | import org.junit.runners.Suite; 9 | 10 | 11 | 12 | @RunWith(Suite.class) 13 | @Suite.SuiteClasses({ 14 | SybaseInterServiceProviderTest.class 15 | }) 16 | public class SybaseJdbcUnitTests { 17 | 18 | } 19 | -------------------------------------------------------------------------------- /old/fine-junit/src/main/java/org/jetbrains/dekaf/junitft/SimpleTestMethod.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.junitft; 2 | 3 | import org.junit.runner.Description; 4 | 5 | import java.lang.reflect.Method; 6 | 7 | 8 | 9 | /** 10 | * @author Leonid Bushuev from JetBrains 11 | */ 12 | public class SimpleTestMethod extends TestMethod { 13 | 14 | 15 | public SimpleTestMethod(Class javaClass, Method javaMethod) { 16 | super(javaClass, javaMethod); 17 | } 18 | 19 | 20 | @Override 21 | Description getDescription() { 22 | return Description.createTestDescription(javaClass, javaMethod.getName()); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /old/fine-junit/src/main/java/org/jetbrains/dekaf/junitft/TestMethod.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.junitft; 2 | 3 | import org.junit.runner.Description; 4 | import org.junit.runners.model.FrameworkMethod; 5 | 6 | import java.lang.reflect.Method; 7 | 8 | 9 | 10 | /** 11 | * @author Leonid Bushuev from JetBrains 12 | */ 13 | public abstract class TestMethod extends FrameworkMethod { 14 | 15 | protected final Class javaClass; 16 | protected final Method javaMethod; 17 | 18 | 19 | public TestMethod(Class javaClass, Method javaMethod) { 20 | super(javaMethod); 21 | this.javaClass = javaClass; 22 | this.javaMethod = javaMethod; 23 | } 24 | 25 | 26 | abstract Description getDescription(); 27 | 28 | } 29 | -------------------------------------------------------------------------------- /old/fine-junit/src/main/java/org/jetbrains/dekaf/junitft/TestWithParams.java: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.junitft; 2 | 3 | import java.lang.annotation.ElementType; 4 | import java.lang.annotation.Retention; 5 | import java.lang.annotation.RetentionPolicy; 6 | import java.lang.annotation.Target; 7 | 8 | 9 | 10 | /** 11 | * @author Leonid Bushuev from JetBrains 12 | */ 13 | @Retention(RetentionPolicy.RUNTIME) 14 | @Target({ElementType.METHOD}) 15 | public @interface TestWithParams { 16 | 17 | 18 | String params() default ""; 19 | 20 | } 21 | -------------------------------------------------------------------------------- /old/fine-junit/src/main/java/testing/categories/ForEveryRdbms.java: -------------------------------------------------------------------------------- 1 | package testing.categories; 2 | 3 | /** 4 | * Tests that should be performed for every RDBMS. 5 | */ 6 | public interface ForEveryRdbms extends ForPostgres, ForOracle, ForMSSQL, ForMySQL 7 | {} 8 | -------------------------------------------------------------------------------- /old/fine-junit/src/main/java/testing/categories/ForMSSQL.java: -------------------------------------------------------------------------------- 1 | package testing.categories; 2 | 3 | /** 4 | * Microsoft SQL related tests. 5 | */ 6 | public interface ForMSSQL {} 7 | -------------------------------------------------------------------------------- /old/fine-junit/src/main/java/testing/categories/ForMySQL.java: -------------------------------------------------------------------------------- 1 | package testing.categories; 2 | 3 | /** 4 | * MySQL related tests. 5 | */ 6 | public interface ForMySQL {} 7 | -------------------------------------------------------------------------------- /old/fine-junit/src/main/java/testing/categories/ForOracle.java: -------------------------------------------------------------------------------- 1 | package testing.categories; 2 | 3 | /** 4 | * Oracle related tests. 5 | */ 6 | public interface ForOracle {} 7 | -------------------------------------------------------------------------------- /old/fine-junit/src/main/java/testing/categories/ForPostgres.java: -------------------------------------------------------------------------------- 1 | package testing.categories; 2 | 3 | /** 4 | * PostgreSLQ related tests. 5 | */ 6 | public interface ForPostgres {} 7 | -------------------------------------------------------------------------------- /old/fine-junit/src/main/java/testing/categories/NotForMSSQL.java: -------------------------------------------------------------------------------- 1 | package testing.categories; 2 | 3 | /** 4 | * Microsoft SQL related tests. 5 | */ 6 | public interface NotForMSSQL {} 7 | -------------------------------------------------------------------------------- /old/fine-junit/src/main/java/testing/categories/NotForMySQL.java: -------------------------------------------------------------------------------- 1 | package testing.categories; 2 | 3 | /** 4 | * MySQL related tests. 5 | */ 6 | public interface NotForMySQL {} 7 | -------------------------------------------------------------------------------- /old/fine-junit/src/main/java/testing/categories/NotForOracle.java: -------------------------------------------------------------------------------- 1 | package testing.categories; 2 | 3 | /** 4 | * Oracle related tests. 5 | */ 6 | public interface NotForOracle {} 7 | -------------------------------------------------------------------------------- /old/fine-junit/src/main/java/testing/categories/NotForPostgres.java: -------------------------------------------------------------------------------- 1 | package testing.categories; 2 | 3 | /** 4 | * PostgreSLQ related tests. 5 | */ 6 | public interface NotForPostgres {} 7 | -------------------------------------------------------------------------------- /old/fine-junit/src/main/java/testing/categories/UnitTest.java: -------------------------------------------------------------------------------- 1 | package testing.categories; 2 | 3 | /** 4 | * A unit test, that doesn't require running servers and even JDBC drivers. 5 | */ 6 | public interface UnitTest 7 | {} 8 | -------------------------------------------------------------------------------- /old/public-pack/assembly-tools.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | tools 11 | 12 | zip 13 | 14 | false 15 | false 16 | 17 | 18 | 19 | 20 | / 21 | ../tools 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /old/test-pack/src/test/java/UnitTests.java: -------------------------------------------------------------------------------- 1 | import org.jetbrains.dekaf.CoreUnitTests; 2 | import org.jetbrains.dekaf.jdbc.*; 3 | import org.junit.runner.RunWith; 4 | import org.junit.runners.Suite; 5 | 6 | 7 | 8 | /** 9 | * @author Leonid Bushuev from JetBrains 10 | **/ 11 | 12 | 13 | @RunWith(Suite.class) 14 | @Suite.SuiteClasses({ 15 | CoreUnitTests.class, 16 | JdbcUnitTests.class, 17 | OracleJdbcUnitTests.class, 18 | PostgresJdbcUnitTests.class, 19 | MssqlJdbcUnitTests.class, 20 | SybaseJdbcUnitTests.class, 21 | MysqlJdbcUnitTests.class, 22 | H2dbJdbcUnitTests.class, 23 | //RedshiftJdbcUnitTests.class, 24 | SqliteJdbcUnitTests.class, 25 | ExasolJdbcUnitTests.class 26 | }) 27 | public class UnitTests {} 28 | -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'dekaf' 2 | 3 | include 'dekaf-inter' 4 | include 'dekaf-inter-test' 5 | 6 | include 'dekaf-jdbc' 7 | include 'dekaf-jdbc-test' 8 | 9 | include 'dekaf-main' 10 | include 'dekaf-main-test' 11 | 12 | include 'test-utils' 13 | 14 | include 'tests-basic' 15 | 16 | -------------------------------------------------------------------------------- /test-utils/src/FileFun.kt: -------------------------------------------------------------------------------- 1 | @file:JvmName("FileFun") 2 | 3 | package org.jetbrains.dekaf.test.utils 4 | 5 | import java.nio.file.Files 6 | import java.nio.file.Path 7 | 8 | 9 | fun Path.exists() = Files.exists(this) 10 | 11 | fun Path.isDirectory() = Files.isDirectory(this) 12 | 13 | fun Path.isFile() = Files.isRegularFile(this) 14 | 15 | fun Path.isReadable() = Files.isReadable(this) 16 | 17 | -------------------------------------------------------------------------------- /test-utils/src/NumberConsts.kt: -------------------------------------------------------------------------------- 1 | @file:Suppress("ObjectPropertyName") 2 | 3 | package org.jetbrains.dekaf.test.utils 4 | 5 | 6 | const val `0`: Byte = 0 7 | const val `1`: Byte = 1 8 | const val `2`: Byte = 2 9 | const val `3`: Byte = 3 10 | const val `4`: Byte = 4 11 | const val `5`: Byte = 5 12 | const val `6`: Byte = 6 13 | const val `7`: Byte = 7 14 | const val `8`: Byte = 8 15 | const val `9`: Byte = 9 16 | 17 | 18 | -------------------------------------------------------------------------------- /test-utils/src/TestConsoleFun.kt: -------------------------------------------------------------------------------- 1 | @file:JvmName("TestConsoleFun") 2 | package org.jetbrains.dekaf.test.utils 3 | 4 | 5 | private val printLock = Object() 6 | 7 | 8 | fun say(text: String) { 9 | synchronized(printLock) { 10 | System.out.println(text) 11 | System.out.flush() 12 | } 13 | } 14 | 15 | fun blame(text: String, exception: Throwable? = null) { 16 | synchronized(printLock) { 17 | System.err.println(text) 18 | exception?.printStackTrace(System.err) 19 | System.err.flush() 20 | } 21 | } 22 | 23 | fun halt(text: String, errorCode: Int): Nothing { 24 | blame(text) 25 | say("FAILED with error code: $errorCode") 26 | halt(errorCode) 27 | } 28 | 29 | fun halt(errorCode: Int): Nothing { 30 | Thread.sleep(40L) 31 | System.exit(errorCode) 32 | throw Exception("Must be halted with exit code: $errorCode") 33 | } 34 | 35 | 36 | -------------------------------------------------------------------------------- /test-utils/src/UnitTest.kt: -------------------------------------------------------------------------------- 1 | package org.jetbrains.dekaf.test.utils 2 | 3 | 4 | import org.junit.jupiter.api.Tag 5 | import org.junit.jupiter.api.TestInstance 6 | 7 | 8 | @Tag("UnitTest") 9 | @TestInstance(TestInstance.Lifecycle.PER_CLASS) 10 | interface UnitTest 11 | -------------------------------------------------------------------------------- /test-utils/test-utils.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /tests-basic/tests-basic.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | --------------------------------------------------------------------------------