in jdbc/src/main/scala/org/apache/pekko/projection/jdbc/internal/Dialect.scala [371:433]
def this(tableName: String, managementTableName: String) = this(None, tableName, managementTableName)
private val table = schema.map(s => s"""$s.$tableName""").getOrElse(s"""$tableName""")
private val managementTable = schema.map(s => s"""$s.$managementTableName""").getOrElse(s"""$managementTableName""")
override val createTableStatements =
immutable.Seq(
s"""IF NOT EXISTS (SELECT 1 FROM sys.objects WHERE object_id = OBJECT_ID(N'$table') AND type in (N'U'))
|begin
| create table $table (
| projection_name VARCHAR(255) NOT NULL,
| projection_key VARCHAR(255) NOT NULL,
| current_offset VARCHAR(255) NOT NULL,
| manifest VARCHAR(4) NOT NULL,
| mergeable BIT NOT NULL,
| last_updated BIGINT NOT NULL
| )
|
| alter table $table add constraint pk_projection_id primary key(projection_name, projection_key)
|
| create index projection_name_index on $table (projection_name)
|end""".stripMargin)
override val dropTableStatement: String = DialectDefaults.dropTableStatement(table)
override val readOffsetQuery: String = DialectDefaults.readOffsetQuery(table)
override val clearOffsetStatement: String = DialectDefaults.clearOffsetStatement(table)
override def insertStatement(): String = DialectDefaults.insertStatement(table)
override def updateStatement(): String = DialectDefaults.updateStatement(table)
override val createManagementTableStatements =
immutable.Seq(
s"""IF NOT EXISTS (SELECT 1 FROM sys.objects WHERE object_id = OBJECT_ID(N'$managementTable') AND type in (N'U'))
|begin
| create table $managementTable (
| projection_name VARCHAR(255) NOT NULL,
| projection_key VARCHAR(255) NOT NULL,
| paused BIT NOT NULL,
| last_updated BIGINT NOT NULL
| )
|
| alter table $managementTable add constraint pk_projection_management_id primary key(projection_name, projection_key)
|end""".stripMargin)
override val dropManagementTableStatement: String = DialectDefaults.dropManagementTableStatement(managementTable)
override val readManagementStateQuery: String = DialectDefaults.readManagementStateQuery(managementTable)
override def insertManagementStatement(): String = DialectDefaults.insertManagementStatement(managementTable)
override def updateManagementStatement(): String = DialectDefaults.updateManagementStatement(managementTable)
}
/**
* INTERNAL API
*/
@InternalApi
private[projection] case class OracleDialect(_schema: Option[String], _tableName: String, _managementTableName: String)
extends Dialect {