On Wed, Feb 16, 2011 at 11:36, Sergiu Dumitriu <[email protected]> wrote:
> On 02/16/2011 10:09 AM, tmortagne (SVN) wrote:
>> Author: tmortagne
>> Date: 2011-02-16 10:09:31 +0100 (Wed, 16 Feb 2011)
>> New Revision: 34718
>>
>> Modified:
>>
>> platform/core/branches/xwiki-core-2.7/xwiki-core/src/main/java/com/xpn/xwiki/store/XWikiHibernateBaseStore.java
>>
>> platform/core/branches/xwiki-core-2.7/xwiki-core/src/main/java/com/xpn/xwiki/store/XWikiHibernateStore.java
>> Log:
>> XWIKI-5976: Cannot create subwiki named "lines"
>> Better (but a lot less elegant...) fix
>>
>> Modified:
>> platform/core/branches/xwiki-core-2.7/xwiki-core/src/main/java/com/xpn/xwiki/store/XWikiHibernateBaseStore.java
>> ===================================================================
>> ---
>> platform/core/branches/xwiki-core-2.7/xwiki-core/src/main/java/com/xpn/xwiki/store/XWikiHibernateBaseStore.java
>> 2011-02-16 09:09:21 UTC (rev 34717)
>> +++
>> platform/core/branches/xwiki-core-2.7/xwiki-core/src/main/java/com/xpn/xwiki/store/XWikiHibernateBaseStore.java
>> 2011-02-16 09:09:31 UTC (rev 34718)
>> @@ -504,7 +504,6 @@
>> }
>> } catch (Exception e) {
>> }
>> - ;
>> try {
>> if (bTransaction) {
>> endTransaction(context, true);
>> @@ -600,13 +599,14 @@
>>
>> if (context.getDatabase() != null) {
>> String schemaName = getSchemaFromWikiName(context);
>> + String escapedSchemaName = escapeSchema(schemaName,
>> context);
>>
>> DatabaseProduct databaseProduct =
>> getDatabaseProductName(context);
>> if (DatabaseProduct.ORACLE == databaseProduct) {
>> Statement stmt = null;
>> try {
>> stmt = session.connection().createStatement();
>> - stmt.execute("alter session set current_schema
>> = " + schemaName);
>> + stmt.execute("alter session set current_schema
>> = " + escapedSchemaName);
>> } finally {
>> try {
>> if (stmt != null) {
>> @@ -620,7 +620,7 @@
>> Statement stmt = null;
>> try {
>> stmt = session.connection().createStatement();
>> - stmt.execute("SET SCHEMA " + schemaName);
>> + stmt.execute("SET SCHEMA " + escapedSchemaName);
>> } finally {
>> try {
>> if (stmt != null) {
>> @@ -648,6 +648,29 @@
>> }
>>
>> /**
>> + * Escape schema name depending of the database engine.
>> + *
>> + * @param schema the schema name to escape
>> + * @param context the XWiki context to get database engine identifier
>> + * @return the escaped version
>> + */
>> + protected String escapeSchema(String schema, XWikiContext context)
>> + {
>> + DatabaseProduct databaseProduct = getDatabaseProductName(context);
>> +
>> + String escapedSchema;
>
> You should use this instead:
>
> escapedSchema = dialect.openQuote() + schema + dialect.closeQuote();
Ok thanks
>
> I think nobody wants to use ` or " in the wiki name, so there shouldn't
> be a need for doubling them.
No sure about that. We have to do something, either remove or properly
escape then otherwise it's not very safe
>
> BTW, SQLServer uses [ ] for quoting.
You mean DB2 ?
>
>> + if (DatabaseProduct.MYSQL == databaseProduct) {
>> + // MySQL does not use SQL92 escaping syntax by default
>> + escapedSchema = "`" + schema.replace("`", "``") + "`";
>> + } else {
>> + // Use SQL92 escape syntax
>> + escapedSchema = "\"" + schema.replace("\"", "\"\"") + "\"";
>> + }
>> +
>> + return escapedSchema;
>> + }
>> +
>> + /**
>> * Begins a transaction
>> *
>> * @param context
>
>
> --
> Sergiu Dumitriu
> http://purl.org/net/sergiu/
> _______________________________________________
> devs mailing list
> [email protected]
> http://lists.xwiki.org/mailman/listinfo/devs
>
--
Thomas Mortagne
_______________________________________________
devs mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/devs