This is an automated email from the ASF dual-hosted git repository.
ilgrosso pushed a commit to branch 4_0_X
in repository https://gitbox.apache.org/repos/asf/syncope.git
The following commit(s) were added to refs/heads/4_0_X by this push:
new 132880ccfb [SYNCOPE-1930] Finally exploiting MariaDB with JSON (#1238)
132880ccfb is described below
commit 132880ccfbb131b23819552eb60f0314937d095f
Author: Francesco Chicchiriccò <[email protected]>
AuthorDate: Fri Nov 14 16:00:19 2025 +0100
[SYNCOPE-1930] Finally exploiting MariaDB with JSON (#1238)
---
.../jpa/dao/MariaDBJPAAnySearchDAO.java | 102 +----------------
.../persistence/jpa/dao/MySQLJPAAnySearchDAO.java | 4 +-
.../src/main/resources/META-INF/mariadb/views.xml | 125 +++++----------------
.../syncope/core/persistence/jpa/AbstractTest.java | 6 -
.../src/main/resources/core-mariadb.properties | 7 +-
.../docker-compose/docker-compose-mariadb.yml | 2 +-
.../src/main/resources/core-mariadb.properties | 10 +-
pom.xml | 4 +-
.../reference-guide/configuration/dbms.adoc | 8 +-
9 files changed, 46 insertions(+), 222 deletions(-)
diff --git
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/MariaDBJPAAnySearchDAO.java
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/MariaDBJPAAnySearchDAO.java
index 858496ee4a..7e627b7e3f 100644
---
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/MariaDBJPAAnySearchDAO.java
+++
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/MariaDBJPAAnySearchDAO.java
@@ -20,9 +20,6 @@ package org.apache.syncope.core.persistence.jpa.dao;
import jakarta.persistence.EntityManager;
import jakarta.persistence.EntityManagerFactory;
-import java.time.format.DateTimeFormatter;
-import java.util.List;
-import java.util.Optional;
import
org.apache.syncope.core.persistence.api.attrvalue.PlainAttrValidationManager;
import org.apache.syncope.core.persistence.api.dao.AnyObjectDAO;
import org.apache.syncope.core.persistence.api.dao.DynRealmDAO;
@@ -30,15 +27,10 @@ import org.apache.syncope.core.persistence.api.dao.GroupDAO;
import org.apache.syncope.core.persistence.api.dao.PlainSchemaDAO;
import org.apache.syncope.core.persistence.api.dao.RealmSearchDAO;
import org.apache.syncope.core.persistence.api.dao.UserDAO;
-import org.apache.syncope.core.persistence.api.dao.search.AttrCond;
import org.apache.syncope.core.persistence.api.entity.AnyUtilsFactory;
import org.apache.syncope.core.persistence.api.entity.EntityFactory;
-import org.apache.syncope.core.persistence.api.entity.PlainAttr;
-import org.apache.syncope.core.persistence.api.entity.PlainSchema;
-import org.apache.syncope.core.provisioning.api.serialization.POJOHelper;
-import org.springframework.data.domain.Sort;
-public class MariaDBJPAAnySearchDAO extends AbstractJPAAnySearchDAO {
+public class MariaDBJPAAnySearchDAO extends MySQLJPAAnySearchDAO {
public MariaDBJPAAnySearchDAO(
final RealmSearchDAO realmSearchDAO,
@@ -66,96 +58,4 @@ public class MariaDBJPAAnySearchDAO extends
AbstractJPAAnySearchDAO {
entityManagerFactory,
entityManager);
}
-
- @Override
- protected void parseOrderByForPlainSchema(
- final SearchSupport svs,
- final OrderBySupport obs,
- final OrderBySupport.Item item,
- final Sort.Order clause,
- final PlainSchema schema,
- final String fieldName) {
-
- // keep track of involvement of non-mandatory schemas in the order by
clauses
- obs.nonMandatorySchemas =
!"true".equals(schema.getMandatoryCondition());
-
- obs.views.add(svs.field());
-
- item.select = new StringBuilder().
- append("( SELECT
usa").append('.').append(key(schema.getType())).
- append(" FROM ").append(schema.isUniqueConstraint()
- ? svs.asSearchViewSupport().uniqueAttr().name()
- : svs.asSearchViewSupport().attr().name()).
- append(" usa WHERE usa.any_id = ").
- append(defaultSV(svs).alias()).
- append(".any_id").
- append(" AND usa.schema_id ='").append(fieldName).append("'").
- append(" LIMIT 1").
- append(") AS ").append(fieldName).toString();
- item.where = "plainSchema = '" + fieldName + '\'';
- item.orderBy = fieldName + ' ' + clause.getDirection().name();
- }
-
- @Override
- protected AttrCondQuery getQuery(
- final AttrCond cond,
- final boolean not,
- final CheckResult<AttrCond> checked,
- final List<Object> parameters,
- final SearchSupport svs) {
-
- // normalize NULL / NOT NULL checks
- if (not) {
- if (cond.getType() == AttrCond.Type.ISNULL) {
- cond.setType(AttrCond.Type.ISNOTNULL);
- } else if (cond.getType() == AttrCond.Type.ISNOTNULL) {
- cond.setType(AttrCond.Type.ISNULL);
- }
- }
-
- switch (cond.getType()) {
- case ISNOTNULL -> {
- return new AttrCondQuery(true, new AnySearchNode.Leaf(
- svs.field(),
- "JSON_SEARCH("
- + "plainAttrs, 'one', '" + checked.schema().getKey() +
"', NULL, '$[*].schema'"
- + ") IS NOT NULL"));
- }
-
- case ISNULL -> {
- return new AttrCondQuery(true, new AnySearchNode.Leaf(
- svs.field(),
- "JSON_SEARCH("
- + "plainAttrs, 'one', '" + checked.schema().getKey() +
"', NULL, '$[*].schema'"
- + ") IS NULL"));
- }
-
- default -> {
- if (!not && cond.getType() == AttrCond.Type.EQ) {
- PlainAttr container = new PlainAttr();
- container.setPlainSchema(checked.schema());
- if (checked.schema().isUniqueConstraint()) {
- container.setUniqueValue(checked.value());
- } else {
- container.add(checked.value());
- }
-
- return new AttrCondQuery(true, new AnySearchNode.Leaf(
- svs.field(),
- "JSON_CONTAINS("
- + "plainAttrs, '" +
POJOHelper.serialize(List.of(container)).replace("'", "''")
- + "')"));
- } else {
- Optional.ofNullable(checked.value().getDateValue()).
-
map(DateTimeFormatter.ISO_OFFSET_DATE_TIME::format).
- ifPresent(formatted -> {
- checked.value().setDateValue(null);
- checked.value().setStringValue(formatted);
- });
-
- return super.getQuery(cond, not, checked, parameters, svs);
- }
- }
- }
- }
}
diff --git
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/MySQLJPAAnySearchDAO.java
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/MySQLJPAAnySearchDAO.java
index 9f9e62302a..31f8cebd69 100644
---
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/MySQLJPAAnySearchDAO.java
+++
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/MySQLJPAAnySearchDAO.java
@@ -84,7 +84,7 @@ public class MySQLJPAAnySearchDAO extends
AbstractJPAAnySearchDAO {
obs.views.add(svs.field());
item.select = new StringBuilder().append(schema.isUniqueConstraint()
- ? "( SELECT JSON_UNQUOTE(JSON_EXTRACT(usa.attrUniqueValue, '$.
" + key(schema.getType()) + "')) "
+ ? "( SELECT JSON_UNQUOTE(JSON_EXTRACT(usa.attrUniqueValue,
'$." + key(schema.getType()) + "')) "
: "( SELECT usa." + key(schema.getType())).
append(" FROM ").
append(svs.field().name()).
@@ -119,7 +119,7 @@ public class MySQLJPAAnySearchDAO extends
AbstractJPAAnySearchDAO {
append(" AND ").
append(lower ? "LOWER(" : "").
append(schema.isUniqueConstraint()
- ? "attrUniqueValue ->> '$." + key + '\''
+ ? "JSON_UNQUOTE(JSON_EXTRACT(attrUniqueValue, '$." +
key + "'))"
: key).
append(lower ? ')' : "");
diff --git a/core/persistence-jpa/src/main/resources/META-INF/mariadb/views.xml
b/core/persistence-jpa/src/main/resources/META-INF/mariadb/views.xml
index b61d54e922..00af8ffba2 100644
--- a/core/persistence-jpa/src/main/resources/META-INF/mariadb/views.xml
+++ b/core/persistence-jpa/src/main/resources/META-INF/mariadb/views.xml
@@ -49,40 +49,19 @@ under the License.
<!-- user -->
<entry key="user_search">
CREATE VIEW user_search AS
-
- SELECT u.id as any_id, u.* FROM SyncopeUser u
- </entry>
- <entry key="user_search_unique_attr">
- CREATE VIEW user_search_unique_attr AS
-
- SELECT u.id as any_id, attrs.*
- FROM SyncopeUser u LEFT OUTER JOIN JSON_TABLE(COALESCE(plainAttrs, '[]'),
'$[*]' COLUMNS (
- schema_id VARCHAR(255) PATH '$.schema',
- NESTED PATH '$.uniqueValue' COLUMNS (
- booleanvalue INT PATH '$.booleanValue',
- datevalue VARCHAR(32) PATH '$.dateValue',
- doublevalue DOUBLE PATH '$.doubleValue',
- longvalue BIGINT(20) PATH '$.longValue',
- stringvalue VARCHAR(255) PATH '$.stringValue'))
- ) AS attrs ON 1=1
- WHERE schema_id IS NOT NULL
- AND (booleanvalue IS NOT NULL OR datevalue IS NOT NULL OR doublevalue IS
NOT NULL OR longvalue IS NOT NULL OR stringvalue IS NOT NULL)
- </entry>
- <entry key="user_search_attr">
- CREATE VIEW user_search_attr AS
-
- SELECT u.id as any_id, attrs.*
- FROM SyncopeUser u LEFT OUTER JOIN JSON_TABLE(COALESCE(plainAttrs, '[]'),
'$[*]' COLUMNS (
- schema_id VARCHAR(255) PATH '$.schema',
+
+ SELECT u.id as any_id, u.*, attrs.*
+ FROM SyncopeUser u LEFT OUTER JOIN JSON_TABLE(COALESCE(plainAttrs,
'[{}]'), '$[*]' COLUMNS (
+ plainSchema VARCHAR(255) PATH '$.schema',
NESTED PATH '$.values[*]' COLUMNS (
- booleanvalue INT PATH '$.booleanValue',
- datevalue VARCHAR(32) PATH '$.dateValue',
- doublevalue DOUBLE PATH '$.doubleValue',
- longvalue BIGINT(20) PATH '$.longValue',
- stringvalue VARCHAR(255) PATH '$.stringValue'))
+ binaryValue LONGBLOB PATH '$.binaryValue',
+ booleanValue INT PATH '$.booleanValue',
+ dateValue VARCHAR(32) PATH '$.dateValue',
+ doubleValue DOUBLE PATH '$.doubleValue',
+ longValue BIGINT(20) PATH '$.longValue',
+ stringValue VARCHAR(255) PATH '$.stringValue'),
+ attrUniqueValue JSON PATH '$.uniqueValue')
) AS attrs ON 1=1
- WHERE schema_id IS NOT NULL
- AND (booleanvalue IS NOT NULL OR datevalue IS NOT NULL OR doublevalue IS
NOT NULL OR longvalue IS NOT NULL OR stringvalue IS NOT NULL)
</entry>
<entry key="user_search_urelationship">
CREATE VIEW user_search_urelationship AS
@@ -127,39 +106,18 @@ under the License.
<entry key="anyObject_search">
CREATE VIEW anyObject_search AS
- SELECT a.id as any_id, a.* FROM AnyObject a
- </entry>
- <entry key="anyObject_search_unique_attr">
- CREATE VIEW anyObject_search_unique_attr AS
-
- SELECT u.id as any_id, attrs.*
- FROM AnyObject u LEFT OUTER JOIN JSON_TABLE(COALESCE(plainAttrs, '[]'),
'$[*]' COLUMNS (
- schema_id VARCHAR(255) PATH '$.schema',
- NESTED PATH '$.uniqueValue' COLUMNS (
- booleanvalue INT PATH '$.booleanValue',
- datevalue VARCHAR(32) PATH '$.dateValue',
- doublevalue DOUBLE PATH '$.doubleValue',
- longvalue BIGINT(20) PATH '$.longValue',
- stringvalue VARCHAR(255) PATH '$.stringValue'))
- ) AS attrs ON 1=1
- WHERE schema_id IS NOT NULL
- AND (booleanvalue IS NOT NULL OR datevalue IS NOT NULL OR doublevalue IS
NOT NULL OR longvalue IS NOT NULL OR stringvalue IS NOT NULL)
- </entry>
- <entry key="anyObject_search_attr">
- CREATE VIEW anyObject_search_attr AS
-
- SELECT u.id as any_id, attrs.*
- FROM AnyObject u LEFT OUTER JOIN JSON_TABLE(COALESCE(plainAttrs, '[]'),
'$[*]' COLUMNS (
- schema_id VARCHAR(255) PATH '$.schema',
+ SELECT a.id as any_id, a.*, attrs.*
+ FROM AnyObject a LEFT OUTER JOIN JSON_TABLE(COALESCE(plainAttrs, '[{}]'),
'$[*]' COLUMNS (
+ plainSchema VARCHAR(255) PATH '$.schema',
NESTED PATH '$.values[*]' COLUMNS (
- booleanvalue INT PATH '$.booleanValue',
- datevalue VARCHAR(32) PATH '$.dateValue',
- doublevalue DOUBLE PATH '$.doubleValue',
- longvalue BIGINT(20) PATH '$.longValue',
- stringvalue VARCHAR(255) PATH '$.stringValue'))
+ binaryValue LONGBLOB PATH '$.binaryValue',
+ booleanValue INT PATH '$.booleanValue',
+ dateValue VARCHAR(32) PATH '$.dateValue',
+ doubleValue DOUBLE PATH '$.doubleValue',
+ longValue BIGINT(20) PATH '$.longValue',
+ stringValue VARCHAR(255) PATH '$.stringValue'),
+ attrUniqueValue JSON PATH '$.uniqueValue')
) AS attrs ON 1=1
- WHERE schema_id IS NOT NULL
- AND (booleanvalue IS NOT NULL OR datevalue IS NOT NULL OR doublevalue IS
NOT NULL OR longvalue IS NOT NULL OR stringvalue IS NOT NULL)
</entry>
<entry key="anyObject_search_arelationship">
CREATE VIEW anyObject_search_arelationship AS
@@ -198,39 +156,18 @@ under the License.
<entry key="group_search">
CREATE VIEW group_search AS
- SELECT r.id as any_id, r.* FROM SyncopeGroup r
- </entry>
- <entry key="group_search_unique_attr">
- CREATE VIEW group_search_unique_attr AS
-
- SELECT u.id as any_id, attrs.*
- FROM SyncopeGroup u LEFT OUTER JOIN JSON_TABLE(COALESCE(plainAttrs, '[]'),
'$[*]' COLUMNS (
- schema_id VARCHAR(255) PATH '$.schema',
- NESTED PATH '$.uniqueValue' COLUMNS (
- booleanvalue INT PATH '$.booleanValue',
- datevalue VARCHAR(32) PATH '$.dateValue',
- doublevalue DOUBLE PATH '$.doubleValue',
- longvalue BIGINT(20) PATH '$.longValue',
- stringvalue VARCHAR(255) PATH '$.stringValue'))
- ) AS attrs ON 1=1
- WHERE schema_id IS NOT NULL
- AND (booleanvalue IS NOT NULL OR datevalue IS NOT NULL OR doublevalue IS
NOT NULL OR longvalue IS NOT NULL OR stringvalue IS NOT NULL)
- </entry>
- <entry key="group_search_attr">
- CREATE VIEW group_search_attr AS
-
- SELECT u.id as any_id, attrs.*
- FROM SyncopeGroup u LEFT OUTER JOIN JSON_TABLE(COALESCE(plainAttrs, '[]'),
'$[*]' COLUMNS (
- schema_id VARCHAR(255) PATH '$.schema',
+ SELECT g.id as any_id, g.*, attrs.*
+ FROM SyncopeGroup g LEFT OUTER JOIN JSON_TABLE(COALESCE(plainAttrs,
'[{}]'), '$[*]' COLUMNS (
+ plainSchema VARCHAR(255) PATH '$.schema',
NESTED PATH '$.values[*]' COLUMNS (
- booleanvalue INT PATH '$.booleanValue',
- datevalue VARCHAR(32) PATH '$.dateValue',
- doublevalue DOUBLE PATH '$.doubleValue',
- longvalue BIGINT(20) PATH '$.longValue',
- stringvalue VARCHAR(255) PATH '$.stringValue'))
+ binaryValue LONGBLOB PATH '$.binaryValue',
+ booleanValue INT PATH '$.booleanValue',
+ dateValue VARCHAR(32) PATH '$.dateValue',
+ doubleValue DOUBLE PATH '$.doubleValue',
+ longValue BIGINT(20) PATH '$.longValue',
+ stringValue VARCHAR(255) PATH '$.stringValue'),
+ attrUniqueValue JSON PATH '$.uniqueValue')
) AS attrs ON 1=1
- WHERE schema_id IS NOT NULL
- AND (booleanvalue IS NOT NULL OR datevalue IS NOT NULL OR doublevalue IS
NOT NULL OR longvalue IS NOT NULL OR stringvalue IS NOT NULL)
</entry>
<entry key="group_search_grelationship">
CREATE VIEW group_search_grelationship AS
diff --git
a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/AbstractTest.java
b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/AbstractTest.java
index 5f26de86bc..3f7cff474b 100644
---
a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/AbstractTest.java
+++
b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/AbstractTest.java
@@ -164,12 +164,6 @@ public abstract class AbstractTest {
withReuse(true);
twoDomain.start();
JDBC2_URL_SUPPLIER = twoDomain::getJdbcUrl;
-
- // https://jira.mariadb.org/browse/MDEV-27898
- DB_USER_SUPPLIER = () -> "root";
- DB_PWD_SUPPLIER = () -> "syncope";
- DB2_USER_SUPPLIER = () -> "root";
- DB2_PWD_SUPPLIER = () -> "syncope";
} else if (classExists("oracle.jdbc.OracleDriver")) {
JDBC_DRIVER = "oracle.jdbc.OracleDriver";
DATABASE_PLATFORM = "org.apache.openjpa.jdbc.sql.OracleDictionary";
diff --git a/docker/core/src/main/resources/core-mariadb.properties
b/docker/core/src/main/resources/core-mariadb.properties
index 0705e23302..928f6589db 100644
--- a/docker/core/src/main/resources/core-mariadb.properties
+++ b/docker/core/src/main/resources/core-mariadb.properties
@@ -21,11 +21,8 @@ persistence.viewsXML=classpath:META-INF/mariadb/views.xml
persistence.domain[0].key=Master
persistence.domain[0].jdbcDriver=org.mariadb.jdbc.Driver
persistence.domain[0].jdbcURL=${DB_URL}
-# keep the next two lines until https://jira.mariadb.org/browse/MDEV-27898 is
fixed
-persistence.domain[0].dbUsername=root
-persistence.domain[0].dbPassword=password
-#persistence.domain[0].dbUsername=${DB_USER}
-#persistence.domain[0].dbPassword=${DB_PASSWORD}
+persistence.domain[0].dbUsername=${DB_USER}
+persistence.domain[0].dbPassword=${DB_PASSWORD}
persistence.domain[0].databasePlatform=org.apache.openjpa.jdbc.sql.MariaDBDictionary(blobTypeName=LONGBLOB,dateFractionDigits=3)
persistence.domain[0].orm=META-INF/mariadb/spring-orm.xml
persistence.domain[0].poolMaxActive=${DB_POOL_MAX}
diff --git
a/docker/src/main/resources/docker-compose/docker-compose-mariadb.yml
b/docker/src/main/resources/docker-compose/docker-compose-mariadb.yml
index f11b50a13b..792f41b22d 100644
--- a/docker/src/main/resources/docker-compose/docker-compose-mariadb.yml
+++ b/docker/src/main/resources/docker-compose/docker-compose-mariadb.yml
@@ -19,7 +19,7 @@
services:
db:
- image: mariadb:12
+ image: mariadb:11
restart: always
command: ['--character-set-server=utf8mb4',
'--collation-server=utf8mb4_bin']
environment:
diff --git a/fit/core-reference/src/main/resources/core-mariadb.properties
b/fit/core-reference/src/main/resources/core-mariadb.properties
index 50bb11fb73..b435aca104 100644
--- a/fit/core-reference/src/main/resources/core-mariadb.properties
+++ b/fit/core-reference/src/main/resources/core-mariadb.properties
@@ -23,9 +23,8 @@ persistence.viewsXML=classpath:META-INF/mariadb/views.xml
persistence.domain[0].key=Master
persistence.domain[0].jdbcDriver=org.mariadb.jdbc.Driver
persistence.domain[0].jdbcURL=jdbc:mariadb://${DB_CONTAINER_IP}:3306/syncope?characterEncoding=UTF-8
-# keep the next two lines until https://jira.mariadb.org/browse/MDEV-27898 is
fixed
-persistence.domain[0].dbUsername=root
-persistence.domain[0].dbPassword=password
+persistence.domain[0].dbUsername=syncope
+persistence.domain[0].dbPassword=syncope
persistence.domain[0].databasePlatform=org.apache.openjpa.jdbc.sql.MariaDBDictionary(blobTypeName=LONGBLOB,dateFractionDigits=3)
persistence.domain[0].orm=META-INF/mariadb/spring-orm.xml
persistence.domain[0].poolMaxActive=10
@@ -34,9 +33,8 @@ persistence.domain[0].poolMinIdle=2
persistence.domain[1].key=Two
persistence.domain[1].jdbcDriver=org.mariadb.jdbc.Driver
persistence.domain[1].jdbcURL=jdbc:mariadb://${DB_CONTAINER_IP}:3306/syncopetwo?characterEncoding=UTF-8
-# keep the next two lines until https://jira.mariadb.org/browse/MDEV-27898 is
fixed
-persistence.domain[1].dbUsername=root
-persistence.domain[1].dbPassword=password
+persistence.domain[1].dbUsername=syncopetwo
+persistence.domain[1].dbPassword=syncopetwo
persistence.domain[1].databasePlatform=org.apache.openjpa.jdbc.sql.MariaDBDictionary(blobTypeName=LONGBLOB,dateFractionDigits=3)
persistence.domain[1].orm=META-INF/mariadb/spring-orm.xml
persistence.domain[1].poolMaxActive=20
diff --git a/pom.xml b/pom.xml
index 105dacc371..5487d7bde7 100644
--- a/pom.xml
+++ b/pom.xml
@@ -533,7 +533,7 @@ under the License.
<docker.postgresql.version>17-alpine</docker.postgresql.version>
<docker.mysql.version>9.0</docker.mysql.version>
- <docker.mariadb.version>12</docker.mariadb.version>
+ <docker.mariadb.version>11</docker.mariadb.version>
<docker.oracle.version>23-slim-faststart</docker.oracle.version>
<docker.neo4j.version>5.26</docker.neo4j.version>
@@ -1839,7 +1839,7 @@ under the License.
<plugin>
<groupId>io.fabric8</groupId>
<artifactId>docker-maven-plugin</artifactId>
- <version>0.47.0</version>
+ <version>0.48-SNAPSHOT</version>
</plugin>
<plugin>
diff --git a/src/main/asciidoc/reference-guide/configuration/dbms.adoc
b/src/main/asciidoc/reference-guide/configuration/dbms.adoc
index bf3dd003e4..d1eaf1f812 100644
--- a/src/main/asciidoc/reference-guide/configuration/dbms.adoc
+++ b/src/main/asciidoc/reference-guide/configuration/dbms.adoc
@@ -98,9 +98,8 @@ persistence.viewsXML=classpath:META-INF/mariadb/views.xml
persistence.domain[0].key=Master
persistence.domain[0].jdbcDriver=org.mariadb.jdbc.Driver
persistence.domain[0].jdbcURL=jdbc:mariadb://localhost:3306/syncope?characterEncoding=UTF-8
-# keep the next two lines until https://jira.mariadb.org/browse/MDEV-27898 is
fixed
-persistence.domain[0].dbUsername=root
-persistence.domain[0].dbPassword=password
+persistence.domain[0].dbUsername=syncope
+persistence.domain[0].dbPassword=syncope
persistence.domain[0].databasePlatform=org.apache.openjpa.jdbc.sql.MariaDBDictionary(blobTypeName=LONGBLOB,dateFractionDigits=3,useSetStringForClobs=true)
persistence.domain[0].orm=META-INF/mariadb/spring-orm.xml
persistence.domain[0].poolMaxActive=20
@@ -129,8 +128,7 @@
https://mariadb.com/kb/en/configuring-mariadb-with-option-files/[option file^].
[WARNING]
This assumes that you have a MariaDB instance running on localhost, listening
on its default port 3306 with a database
-`syncope` and super-admin user `root` with password `password`. +
-Super-admin user is required until
https://jira.mariadb.org/browse/MDEV-27898[this bug^] is fixed.
+`syncope` fully accessible by user `syncope` with password `syncope`.
==== Oracle Database