[Libreoffice-commits] core.git: Branch 'aoo/trunk' - 2 commits - connectivity/java

Damjan Jovanovic damjan at apache.org
Tue Oct 24 06:11:47 UTC 2017


 connectivity/java/sdbc_postgresql/src/com/sun/star/sdbcx/comp/postgresql/PostgresqlCatalog.java                     |    6 
 connectivity/java/sdbc_postgresql/src/com/sun/star/sdbcx/comp/postgresql/PostgresqlTables.java                      |   15 
 connectivity/java/sdbc_postgresql/src/com/sun/star/sdbcx/comp/postgresql/PostgresqlViews.java                       |  163 ++++++++++
 connectivity/java/sdbc_postgresql/src/com/sun/star/sdbcx/comp/postgresql/sdbcx/OContainer.java                      |    9 
 connectivity/java/sdbc_postgresql/src/com/sun/star/sdbcx/comp/postgresql/sdbcx/OView.java                           |  131 ++++++++
 connectivity/java/sdbc_postgresql/src/com/sun/star/sdbcx/comp/postgresql/sdbcx/descriptors/SdbcxViewDescriptor.java |  125 +++++++
 connectivity/java/sdbc_postgresql/src/com/sun/star/sdbcx/comp/postgresql/util/PropertyIds.java                      |    8 
 7 files changed, 449 insertions(+), 8 deletions(-)

New commits:
commit a4621f906e51b07b4052dc6eac3b1210408e19e8
Author: Damjan Jovanovic <damjan at apache.org>
Date:   Tue Oct 24 04:34:26 2017 +0000

    Implement views in the PostgreSQL driver.
    
    Patch by: me

diff --git a/connectivity/java/sdbc_postgresql/src/com/sun/star/sdbcx/comp/postgresql/PostgresqlCatalog.java b/connectivity/java/sdbc_postgresql/src/com/sun/star/sdbcx/comp/postgresql/PostgresqlCatalog.java
index ad66cf6de697..1845ec849033 100644
--- a/connectivity/java/sdbc_postgresql/src/com/sun/star/sdbcx/comp/postgresql/PostgresqlCatalog.java
+++ b/connectivity/java/sdbc_postgresql/src/com/sun/star/sdbcx/comp/postgresql/PostgresqlCatalog.java
@@ -71,7 +71,7 @@ public class PostgresqlCatalog extends OCatalog {
                 String name = buildName(row);
                 names.add(name);
             }
-            return new PostgresqlTables(this, metadata, this, names);
+            return new PostgresqlViews(this, metadata, this, names);
         } catch (ElementExistException | SQLException exception) {
             throw new com.sun.star.uno.RuntimeException("Error", exception);
         } finally {
@@ -88,4 +88,8 @@ public class PostgresqlCatalog extends OCatalog {
     public OContainer refreshUsers() {
         return null;
     }
+
+    synchronized OContainer getTablesInternal() {
+        return tables;
+    }
 }
diff --git a/connectivity/java/sdbc_postgresql/src/com/sun/star/sdbcx/comp/postgresql/PostgresqlTables.java b/connectivity/java/sdbc_postgresql/src/com/sun/star/sdbcx/comp/postgresql/PostgresqlTables.java
index 885cca5cdc3b..f2cc5c88fd8f 100644
--- a/connectivity/java/sdbc_postgresql/src/com/sun/star/sdbcx/comp/postgresql/PostgresqlTables.java
+++ b/connectivity/java/sdbc_postgresql/src/com/sun/star/sdbcx/comp/postgresql/PostgresqlTables.java
@@ -26,6 +26,7 @@ import java.util.List;
 import com.sun.star.beans.UnknownPropertyException;
 import com.sun.star.beans.XPropertySet;
 import com.sun.star.container.ElementExistException;
+import com.sun.star.container.NoSuchElementException;
 import com.sun.star.lang.IllegalArgumentException;
 import com.sun.star.lang.WrappedTargetException;
 import com.sun.star.sdbc.SQLException;
@@ -33,6 +34,7 @@ import com.sun.star.sdbc.XDatabaseMetaData;
 import com.sun.star.sdbc.XResultSet;
 import com.sun.star.sdbc.XRow;
 import com.sun.star.sdbc.XStatement;
+import com.sun.star.sdbcx.XDrop;
 import com.sun.star.sdbcx.comp.postgresql.comphelper.CompHelper;
 import com.sun.star.sdbcx.comp.postgresql.sdbcx.OContainer;
 import com.sun.star.sdbcx.comp.postgresql.sdbcx.descriptors.SdbcxTableDescriptor;
@@ -95,7 +97,15 @@ public class PostgresqlTables extends OContainer {
 
             String composedName = DbTools.composeTableName(metadata, nameComponents.getCatalog(), nameComponents.getSchema(), nameComponents.getTable(),
                     true, ComposeRule.InDataManipulation);
-            String sql = String.format("DROP %s %s", isView ? "VIEW" : "TABLE", composedName);
+            if (isView) {
+                XDrop dropView = UnoRuntime.queryInterface(XDrop.class, catalog.getViews());
+                String unquotedName = DbTools.composeTableName(metadata, nameComponents.getCatalog(), nameComponents.getSchema(), nameComponents.getTable(),
+                        false, ComposeRule.InDataManipulation);
+                dropView.dropByName(unquotedName);
+                return;
+            }
+
+            String sql = "DROP TABLE " + composedName;
 
             XStatement statement = null;
             try {
@@ -104,8 +114,7 @@ public class PostgresqlTables extends OContainer {
             } finally {
                 CompHelper.disposeComponent(statement);
             }
-            // FIXME: delete it from our views
-        } catch (IllegalArgumentException | UnknownPropertyException | WrappedTargetException wrappedTargetException) {
+        } catch (IllegalArgumentException | UnknownPropertyException | WrappedTargetException | NoSuchElementException wrappedTargetException) {
             throw new SQLException("Error", this, StandardSQLState.SQL_GENERAL_ERROR.text(), 0, wrappedTargetException);
         }
     }
diff --git a/connectivity/java/sdbc_postgresql/src/com/sun/star/sdbcx/comp/postgresql/PostgresqlViews.java b/connectivity/java/sdbc_postgresql/src/com/sun/star/sdbcx/comp/postgresql/PostgresqlViews.java
new file mode 100644
index 000000000000..767536e89cec
--- /dev/null
+++ b/connectivity/java/sdbc_postgresql/src/com/sun/star/sdbcx/comp/postgresql/PostgresqlViews.java
@@ -0,0 +1,163 @@
+/**************************************************************
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ *************************************************************/
+package com.sun.star.sdbcx.comp.postgresql;
+
+import java.util.List;
+
+import com.sun.star.beans.UnknownPropertyException;
+import com.sun.star.beans.XPropertySet;
+import com.sun.star.container.ElementExistException;
+import com.sun.star.lang.WrappedTargetException;
+import com.sun.star.sdbc.SQLException;
+import com.sun.star.sdbc.XDatabaseMetaData;
+import com.sun.star.sdbc.XParameters;
+import com.sun.star.sdbc.XPreparedStatement;
+import com.sun.star.sdbc.XResultSet;
+import com.sun.star.sdbc.XRow;
+import com.sun.star.sdbc.XStatement;
+import com.sun.star.sdbcx.CheckOption;
+import com.sun.star.sdbcx.comp.postgresql.comphelper.CompHelper;
+import com.sun.star.sdbcx.comp.postgresql.sdbcx.OContainer;
+import com.sun.star.sdbcx.comp.postgresql.sdbcx.OView;
+import com.sun.star.sdbcx.comp.postgresql.sdbcx.descriptors.SdbcxViewDescriptor;
+import com.sun.star.sdbcx.comp.postgresql.util.ComposeRule;
+import com.sun.star.sdbcx.comp.postgresql.util.DbTools;
+import com.sun.star.sdbcx.comp.postgresql.util.DbTools.NameComponents;
+import com.sun.star.sdbcx.comp.postgresql.util.Osl;
+import com.sun.star.sdbcx.comp.postgresql.util.PropertyIds;
+import com.sun.star.sdbcx.comp.postgresql.util.StandardSQLState;
+import com.sun.star.uno.UnoRuntime;
+
+public class PostgresqlViews extends OContainer {
+    private PostgresqlCatalog catalog;
+    private XDatabaseMetaData metadata;
+
+    public PostgresqlViews(Object lock, XDatabaseMetaData metadata, PostgresqlCatalog catalog, List<String> names) throws ElementExistException {
+        super(lock, true, names);
+        this.metadata = metadata;
+        this.catalog = catalog;
+    }
+
+    @Override
+    protected XPropertySet createObject(String name) throws SQLException {
+        NameComponents nameComponents = DbTools.qualifiedNameComponents(metadata, name, ComposeRule.InDataManipulation);
+
+        String sql = "SELECT view_definition,check_option FROM INFORMATION_SCHEMA.views WHERE ";
+        if (!nameComponents.getCatalog().isEmpty()) {
+            sql += "table_catalog=? AND ";
+        }
+        if (!nameComponents.getSchema().isEmpty()) {
+            sql += "table_schema=? AND ";
+        }
+        sql += "table_name=?";
+
+        final String command;
+        final String checkOption;
+        XPreparedStatement statement = null;
+        XResultSet results = null;
+        try {
+            statement = metadata.getConnection().prepareStatement(sql);
+            XParameters parameters = UnoRuntime.queryInterface(XParameters.class, statement);
+            int next = 1;
+            if (!nameComponents.getCatalog().isEmpty()) {
+                parameters.setString(next++, nameComponents.getCatalog());
+            }
+            if (!nameComponents.getSchema().isEmpty()) {
+                parameters.setString(next++, nameComponents.getSchema());
+            }
+            parameters.setString(next, nameComponents.getTable());
+            results = statement.executeQuery();
+            if (results.next()) {
+                XRow row = UnoRuntime.queryInterface(XRow.class, results);
+                command = row.getString(1);
+                checkOption = row.getString(2);
+            } else {
+                throw new SQLException("View not found", this, StandardSQLState.SQL_TABLE_OR_VIEW_NOT_FOUND.text(), 0, null);
+            }
+        } finally {
+            CompHelper.disposeComponent(results);
+            CompHelper.disposeComponent(statement);
+        }
+
+        final int checkOptionInt;
+        if (checkOption.equals("NONE")) {
+            checkOptionInt = CheckOption.NONE;
+        } else if (checkOption.equals("LOCAL")) {
+            checkOptionInt = CheckOption.LOCAL;
+        } else if (checkOption.equals("CASCADED")) {
+            checkOptionInt = CheckOption.CASCADE;
+        } else {
+            throw new SQLException("Unsupported check option '" + checkOption + "'", this,
+                    StandardSQLState.SQL_FEATURE_NOT_IMPLEMENTED.text(), 0, null);
+        }
+
+        return new OView(nameComponents.getCatalog(), nameComponents.getSchema(), nameComponents.getTable(), isCaseSensitive(),
+                command, checkOptionInt);
+    }
+
+    @Override
+    protected void dropObject(int index, String name) throws SQLException {
+        XStatement statement = null;
+        try {
+            Object object = getObject(index);
+            XPropertySet propertySet = UnoRuntime.queryInterface(XPropertySet.class, object);
+            Osl.ensure(propertySet != null, "Object returned from view collection isn't an XPropertySet");
+            String sql = String.format("DROP VIEW %s", DbTools.composeTableName(metadata, propertySet, ComposeRule.InTableDefinitions,
+                    false, false, true));
+
+            statement = metadata.getConnection().createStatement();
+            statement.execute(sql);
+        } catch (WrappedTargetException exception) {
+            throw new SQLException("Error", this, StandardSQLState.SQL_GENERAL_ERROR.text(), 0, exception);
+        } finally {
+            CompHelper.disposeComponent(statement);
+        }
+    }
+
+    @Override
+    protected XPropertySet createDescriptor() {
+        return new SdbcxViewDescriptor(isCaseSensitive());
+    }
+
+    @Override
+    protected XPropertySet appendObject(String _rForName, XPropertySet descriptor) throws SQLException {
+        XStatement statement = null;
+        try {
+            String sql = String.format("CREATE VIEW %s AS %s",
+                    DbTools.composeTableName(metadata, descriptor, ComposeRule.InTableDefinitions, false, false, true),
+                    descriptor.getPropertyValue(PropertyIds.COMMAND.name));
+            statement = metadata.getConnection().createStatement();
+            statement.execute(sql);
+        } catch (WrappedTargetException | UnknownPropertyException exception) {
+            throw new SQLException("Error", this, StandardSQLState.SQL_GENERAL_ERROR.text(), 0, exception);
+        } finally {
+            CompHelper.disposeComponent(statement);
+        }
+        // Append it to the tables container too:
+        catalog.getTablesInternal().insertElement(_rForName, null);
+        return createObject(_rForName);
+    }
+
+    @Override
+    protected void impl_refresh() {
+        catalog.refreshObjects();
+    }
+}
diff --git a/connectivity/java/sdbc_postgresql/src/com/sun/star/sdbcx/comp/postgresql/sdbcx/OContainer.java b/connectivity/java/sdbc_postgresql/src/com/sun/star/sdbcx/comp/postgresql/sdbcx/OContainer.java
index 69c18bf885c3..3be4e5fe9b3f 100644
--- a/connectivity/java/sdbc_postgresql/src/com/sun/star/sdbcx/comp/postgresql/sdbcx/OContainer.java
+++ b/connectivity/java/sdbc_postgresql/src/com/sun/star/sdbcx/comp/postgresql/sdbcx/OContainer.java
@@ -280,6 +280,15 @@ public abstract class OContainer extends WeakBase implements
 
     }
 
+    public void insertElement(String name, XPropertySet element) {
+        synchronized (lock) {
+            if (!entriesByName.containsKey(name)) {
+                entriesByName.put(name, element);
+                namesByIndex.add(name);
+            }
+        }
+    }
+
     // XDrop
 
     @Override
diff --git a/connectivity/java/sdbc_postgresql/src/com/sun/star/sdbcx/comp/postgresql/sdbcx/OView.java b/connectivity/java/sdbc_postgresql/src/com/sun/star/sdbcx/comp/postgresql/sdbcx/OView.java
new file mode 100644
index 000000000000..afe52aac4fe8
--- /dev/null
+++ b/connectivity/java/sdbc_postgresql/src/com/sun/star/sdbcx/comp/postgresql/sdbcx/OView.java
@@ -0,0 +1,131 @@
+/**************************************************************
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ *************************************************************/
+package com.sun.star.sdbcx.comp.postgresql.sdbcx;
+
+import com.sun.star.beans.PropertyAttribute;
+import com.sun.star.container.XNamed;
+import com.sun.star.lang.XServiceInfo;
+import com.sun.star.sdbcx.comp.postgresql.comphelper.PropertySetAdapter.PropertyGetter;
+import com.sun.star.sdbcx.comp.postgresql.comphelper.PropertySetAdapter.PropertySetter;
+import com.sun.star.sdbcx.comp.postgresql.util.PropertyIds;
+import com.sun.star.uno.Type;
+
+public class OView extends ODescriptor
+        implements XNamed, XServiceInfo {
+
+    private static String[] services = {
+            "com.sun.star.sdbcx.View"
+    };
+
+    protected String catalogName;
+    protected String schemaName;
+    protected String command;
+    protected int checkOption;
+
+    public OView(String catalog, String schema, String name, boolean isCaseSensitive, String command, int checkOption) {
+        super(name, isCaseSensitive, true);
+        this.catalogName = catalog;
+        this.schemaName = schema;
+        this.command = command;
+        this.checkOption = checkOption;
+        registerProperties();
+    }
+
+    private void registerProperties() {
+        registerProperty(PropertyIds.CATALOGNAME.name, PropertyIds.CATALOGNAME.id, Type.STRING, PropertyAttribute.READONLY,
+                new PropertyGetter() {
+                    @Override
+                    public Object getValue() {
+                        return catalogName;
+
+                    }
+                },
+                new PropertySetter() {
+                    @Override
+                    public void setValue(Object value) {
+                        catalogName = (String) value;
+                    }
+                });
+        registerProperty(PropertyIds.SCHEMANAME.name, PropertyIds.SCHEMANAME.id, Type.STRING, PropertyAttribute.READONLY,
+                new PropertyGetter() {
+                    @Override
+                    public Object getValue() {
+                        return schemaName;
+
+                    }
+                },
+                new PropertySetter() {
+                    @Override
+                    public void setValue(Object value) {
+                        schemaName = (String) value;
+                    }
+                });
+        registerProperty(PropertyIds.COMMAND.name, PropertyIds.COMMAND.id, Type.STRING, PropertyAttribute.READONLY,
+                new PropertyGetter() {
+                    @Override
+                    public Object getValue() {
+                        return command;
+
+                    }
+                },
+                new PropertySetter() {
+                    @Override
+                    public void setValue(Object value) {
+                        command = (String) value;
+                    }
+                });
+        registerProperty(PropertyIds.CHECKOPTION.name, PropertyIds.CHECKOPTION.id, Type.LONG, PropertyAttribute.READONLY,
+                new PropertyGetter() {
+                    @Override
+                    public Object getValue() {
+                        return checkOption;
+
+                    }
+                },
+                new PropertySetter() {
+                    @Override
+                    public void setValue(Object value) {
+                        checkOption = (int) value;
+                    }
+                });
+    }
+
+    // XServiceInfo
+
+    public String getImplementationName() {
+        return getClass().getName();
+    }
+
+    @Override
+    public String[] getSupportedServiceNames() {
+        return services.clone();
+    }
+
+    @Override
+    public boolean supportsService(String serviceName) {
+        for (String service : getSupportedServiceNames()) {
+            if (service.equals(serviceName)) {
+                return true;
+            }
+        }
+        return false;
+    }
+}
diff --git a/connectivity/java/sdbc_postgresql/src/com/sun/star/sdbcx/comp/postgresql/sdbcx/descriptors/SdbcxViewDescriptor.java b/connectivity/java/sdbc_postgresql/src/com/sun/star/sdbcx/comp/postgresql/sdbcx/descriptors/SdbcxViewDescriptor.java
new file mode 100644
index 000000000000..51b64ccdf07f
--- /dev/null
+++ b/connectivity/java/sdbc_postgresql/src/com/sun/star/sdbcx/comp/postgresql/sdbcx/descriptors/SdbcxViewDescriptor.java
@@ -0,0 +1,125 @@
+/**************************************************************
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ *************************************************************/
+package com.sun.star.sdbcx.comp.postgresql.sdbcx.descriptors;
+
+import com.sun.star.lang.XServiceInfo;
+import com.sun.star.sdbcx.comp.postgresql.comphelper.PropertySetAdapter.PropertyGetter;
+import com.sun.star.sdbcx.comp.postgresql.comphelper.PropertySetAdapter.PropertySetter;
+import com.sun.star.sdbcx.comp.postgresql.sdbcx.ODescriptor;
+import com.sun.star.sdbcx.comp.postgresql.util.PropertyIds;
+import com.sun.star.uno.Type;
+
+public class SdbcxViewDescriptor extends ODescriptor implements XServiceInfo {
+
+    private static final String[] services = {
+            "com.sun.star.sdbcx.ViewDescriptor"
+    };
+
+    protected String catalogName;
+    protected String schemaName;
+    protected String command;
+    protected int checkOption;
+
+    public SdbcxViewDescriptor(boolean isCaseSensitive) {
+        super("", isCaseSensitive, false);
+        registerProperties();
+    }
+
+    private void registerProperties() {
+        registerProperty(PropertyIds.CATALOGNAME.name, PropertyIds.CATALOGNAME.id, Type.STRING, (short)0,
+                new PropertyGetter() {
+                    @Override
+                    public Object getValue() {
+                        return catalogName;
+
+                    }
+                },
+                new PropertySetter() {
+                    @Override
+                    public void setValue(Object value) {
+                        catalogName = (String) value;
+                    }
+                });
+        registerProperty(PropertyIds.SCHEMANAME.name, PropertyIds.SCHEMANAME.id, Type.STRING, (short)0,
+                new PropertyGetter() {
+                    @Override
+                    public Object getValue() {
+                        return schemaName;
+
+                    }
+                },
+                new PropertySetter() {
+                    @Override
+                    public void setValue(Object value) {
+                        schemaName = (String) value;
+                    }
+                });
+        registerProperty(PropertyIds.COMMAND.name, PropertyIds.COMMAND.id, Type.STRING, (short)0,
+                new PropertyGetter() {
+                    @Override
+                    public Object getValue() {
+                        return command;
+
+                    }
+                },
+                new PropertySetter() {
+                    @Override
+                    public void setValue(Object value) {
+                        command = (String) value;
+                    }
+                });
+        registerProperty(PropertyIds.CHECKOPTION.name, PropertyIds.CHECKOPTION.id, Type.LONG, (short)0,
+                new PropertyGetter() {
+                    @Override
+                    public Object getValue() {
+                        return checkOption;
+
+                    }
+                },
+                new PropertySetter() {
+                    @Override
+                    public void setValue(Object value) {
+                        checkOption = (int) value;
+                    }
+                });
+    }
+
+    // XServiceInfo
+
+    public String getImplementationName() {
+        return getClass().getName();
+    }
+
+    @Override
+    public String[] getSupportedServiceNames() {
+        return services.clone();
+    }
+
+    @Override
+    public boolean supportsService(String serviceName) {
+        for (String service : getSupportedServiceNames()) {
+            if (service.equals(serviceName)) {
+                return true;
+            }
+        }
+        return false;
+    }
+}
commit 5a9482b784d1cdbf2a0c6b7331a86881320e5a95
Author: Damjan Jovanovic <damjan at apache.org>
Date:   Tue Oct 24 04:29:04 2017 +0000

    Fix a serious bug in naming PropertyIds variables of the PostgreSQL
    
    database driver.
    
    Patch by: me

diff --git a/connectivity/java/sdbc_postgresql/src/com/sun/star/sdbcx/comp/postgresql/util/PropertyIds.java b/connectivity/java/sdbc_postgresql/src/com/sun/star/sdbcx/comp/postgresql/util/PropertyIds.java
index 0e59e0d9b8d4..0a096e36c6a6 100644
--- a/connectivity/java/sdbc_postgresql/src/com/sun/star/sdbcx/comp/postgresql/util/PropertyIds.java
+++ b/connectivity/java/sdbc_postgresql/src/com/sun/star/sdbcx/comp/postgresql/util/PropertyIds.java
@@ -53,10 +53,10 @@ public enum PropertyIds {
     ISASCENDING (28, "IsAscending"),
     SCHEMANAME (29, "SchemaName"),
     CATALOGNAME (30, "CatalogName"),
-    COMMAND (31, "CheckOption"),
-    CHECKOPTION (32, "Password"),
-    PASSWORD (33, "RelatedColumn"),
-    RELATEDCOLUMN (34, ""),
+    COMMAND (31, "Command"),
+    CHECKOPTION (32, "CheckOption"),
+    PASSWORD (33, "Password"),
+    RELATEDCOLUMN (34, "RelatedColumn"),
     FUNCTION (35, "Function"),
     TABLENAME (36, "TableName"),
     REALNAME (37, "RealName"),


More information about the Libreoffice-commits mailing list