On Mon, Dec 7, 2009 at 13:19, Sergiu Dumitriu <sergiu(a)xwiki.com> wrote:
On 12/06/2009 03:17 PM, tmortagne (SVN) wrote:
Author: tmortagne
Date: 2009-12-06 15:17:45 +0100 (Sun, 06 Dec 2009)
New Revision: 25574
Modified:
platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/store/DatabaseProduct.java
platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/store/XWikiHibernateStore.java
Log:
XWIKI-4076: Database for a newly created wiki does not support utf8
Modified:
platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/store/DatabaseProduct.java
===================================================================
--- platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/store/DatabaseProduct.java
2009-12-06 14:04:05 UTC (rev 25573)
+++ platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/store/DatabaseProduct.java
2009-12-06 14:17:45 UTC (rev 25574)
@@ -61,6 +61,11 @@
public static final DatabaseProduct DB2 = new DatabaseProduct("DB2/");
/**
+ * The product name for MySQL databases.
+ */
+ public static final DatabaseProduct MYSQL = new DatabaseProduct("MySQL");
+
+ /**
* Represents an unknown database for which we were not able to find the product
name.
*/
public static final DatabaseProduct UNKNOWN = new
DatabaseProduct("Unknown");
@@ -127,6 +132,8 @@
} else if (productNameAsString.startsWith(DB2.getProductName())) {
// See documentation above on why we check starts with for DB2
product = DB2;
+ } else if (productNameAsString.equalsIgnoreCase(MYSQL.getProductName())) {
+ product = MYSQL;
} else {
product = UNKNOWN;
}
Modified:
platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/store/XWikiHibernateStore.java
===================================================================
---
platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/store/XWikiHibernateStore.java
2009-12-06 14:04:05 UTC (rev 25573)
+++
platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/store/XWikiHibernateStore.java
2009-12-06 14:17:45 UTC (rev 25574)
@@ -241,6 +241,13 @@
stmt.execute("CREATE SCHEMA " + schema + " AUTHORIZATION
DBA");
} else if (DatabaseProduct.DB2 == databaseProduct) {
stmt.execute("CREATE SCHEMA " + schema);
+ } else if (DatabaseProduct.MYSQL == databaseProduct) {
+ // TODO: find a proper java lib to convert from java encoding to mysql
charset name and collation
+ if (context.getWiki().getEncoding().equals("UTF-8")) {
+ stmt.execute("create database " + schema + "
CHARACTER SET utf8 COLLATE utf8_bin");
utf8_bin also means that mysql becomes case sensitive.
Yes i made it on purpose since we have this issue also.
+ } else {
+ stmt.execute("create database " + schema);
+ }
} else {
stmt.execute("create database " + schema);
}
Q: Does this also affect the main database, or just virtual wikis?
No it only affect wikis creation so not the main one which is not
created by XWiki.
--
Sergiu Dumitriu
http://purl.org/net/sergiu/
_______________________________________________
devs mailing list
devs(a)xwiki.org
http://lists.xwiki.org/mailman/listinfo/devs
--
Thomas Mortagne