diff --git a/geoserver/latest/JDBCConfig_readme.md b/geoserver/latest/JDBCConfig_readme.md new file mode 100644 index 0000000..8a5b2cf --- /dev/null +++ b/geoserver/latest/JDBCConfig_readme.md @@ -0,0 +1,83 @@ +# Instructions + +Instructions to install GS with the JDBCConfig family of plugins: + +1. Install GS with plugins using our helm chart with following custom_values.yaml: + +(Adjust the version in URLs to match the GS version image that you use) + +```yaml +geoserver: + plugins: "https://build.geoserver.org/geoserver/2.26.x/ext-latest/geoserver-2.26-SNAPSHOT-wps-plugin.zip https://build.geoserver.org/geoserver/2.26.x/ext-latest/geoserver-2.26-SNAPSHOT-wps-cluster-hazelcast-plugin.zip https://build.geoserver.org/geoserver/2.26.x/community-latest/geoserver-2.26-SNAPSHOT-jdbcconfig-plugin.zip https://build.geoserver.org/geoserver/2.26.x/community-latest/geoserver-2.26-SNAPSHOT-jdbcstore-plugin.zip https://build.geoserver.org/geoserver/2.26.x/community-latest/geoserver-2.26-SNAPSHOT-hz-cluster-plugin.zip" +``` + +```sh +helm install geoserver . --values custom_values.yaml +``` + +2. Edit the following configmaps and ensure correct DB string and credentials in all of them: + +```sh +kubectl edit configmap/cm-jdbc-init-import +kubectl edit configmap/cm-jdbc-enabled +kubectl edit configmap/cm-jdbcstore-init-import +kubectl edit configmap/cm-jdbcstore-enabled +``` + +Also edit `kubectl edit configmap/hazelcast-xml` and adjust the namespace of the FQDN string `standalone-hz.default.svc.cluster.local` as necessary. (For example, If you installed this helm chart in a different namespace) + +3. Patch the geoserver statefulset to mount the "cm-jdbc-init-import" and "cm-jdbcstore-init-import" configmap and replicaCount is set to 1: + +```sh +kubectl patch statefulset geoserver --type='json' -p='[ + { + "op": "replace", + "path": "/spec/template/spec/containers/0/volumeMounts/0/name", + "value": "cm-jdbc-init-import" + }, + { + "op": "replace", + "path": "/spec/template/spec/containers/0/volumeMounts/1/name", + "value": "cm-jdbcstore-init-import" + }, + { + "op": "replace", + "path": "/spec/replicas", + "value": 1 + } +]' +``` + +4. At this point, geoserver pod will restart and the jdbcstore import to the DB will take place. Monitor the logs and wait for the process to complete. You can check the DB and see if "objects" and "resources" relations are created in the public namespace. + +```sh +kubectl logs -f statefulsets/geoserver +``` + +5. Patch the geoserver statefulset to use the "cm-jdbc-enabled" and "cm-jdbcstore-enabled" configmap and to your desired replica count: + +```sh +kubectl patch statefulset geoserver --type='json' -p='[ + { + "op": "replace", + "path": "/spec/template/spec/containers/0/volumeMounts/0/name", + "value": "cm-jdbc-enabled" + }, + { + "op": "replace", + "path": "/spec/template/spec/containers/0/volumeMounts/1/name", + "value": "cm-jdbcstore-enabled" + }, + { + "op": "replace", + "path": "/spec/replicas", + "value": 2 + } +]' +``` + +6. Ensure geoserver is restarted + +--- + +NB: Repeat step 2 and 5 if helm chart is upgraded. \ No newline at end of file diff --git a/geoserver/latest/templates/jdbcconfig/cm-cluster_properties.yaml b/geoserver/latest/templates/jdbcconfig/cm-cluster_properties.yaml new file mode 100644 index 0000000..1a47714 --- /dev/null +++ b/geoserver/latest/templates/jdbcconfig/cm-cluster_properties.yaml @@ -0,0 +1,18 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: cluster-properties +data: + cluster.properties: | + enabled = true + sync_method = event + sync_delay = 5 + session_sharing = true + session_sticky = false + acktimeout = 2000 + #Disabling the hazelcast shutdown hook + shutdown_hook_enable = false + #Setting the hazelcast logging type to log4j + logging_type = "log4j" + logger.com-hazelcast.name = com.hazelcast + logger.com-hazelcast.level = ERROR diff --git a/geoserver/latest/templates/jdbcconfig/cm-hazelcast_xml.yaml b/geoserver/latest/templates/jdbcconfig/cm-hazelcast_xml.yaml new file mode 100644 index 0000000..5d44750 --- /dev/null +++ b/geoserver/latest/templates/jdbcconfig/cm-hazelcast_xml.yaml @@ -0,0 +1,423 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: hazelcast-xml +data: + hazelcast.xml: | + + + + + + + + + + geoserver-cluster1 + + + + + 5702 + + + + + + standalone-hz.default.svc.cluster.local + + + + + + + + 0 + 16 + true + + + 100 + 1 + 16 + true + + + 100 + 1 + 16 + com.hazelcast.spi.merge.PutIfAbsentMergePolicy + true + + + true + + + + 0 + + 1 + + + 0 + + -1 + + com.hazelcast.spi.merge.PutIfAbsentMergePolicy + + + + + tiered-store + + 4096 + 4 + 4 + + + + + BINARY + + + CREATE_ON_UPDATE + + + 1 + + 0 + + 0 + + 0 + + + + com.hazelcast.spi.merge.PutIfAbsentMergePolicy + + + INDEX-ONLY + + + true + + + false + + + + + + + + + + + + + + + + 1 + SET + com.hazelcast.spi.merge.PutIfAbsentMergePolicy + + + + OBJECT + true + true + com.hazelcast.spi.merge.PutIfAbsentMergePolicy + + + + 1 + com.hazelcast.spi.merge.PutIfAbsentMergePolicy + + + + 1 + com.hazelcast.spi.merge.PutIfAbsentMergePolicy + + + + 10 + BLOCK + true + + + + 10000 + 1 + 0 + 0 + BINARY + com.hazelcast.spi.merge.PutIfAbsentMergePolicy + + + + + 100 + + 600000 + + 1514764800000 + + 0 + + 6 + + 16 + + 15000 + + true + + + + + 0 + + + + + + + 1 + 0 + HyperLogLogMergePolicy + + + + 1000 + 1 + + + + 2147483647 + true + + + + 0 + 0 + 300 + 5 + 14400 + false + 0 + + 2000 + 5000 + 5 + 100 + 10000 + 100 + 100 + + + + + + 5 + + + 5 + + + + 0 + false + + + + + 100 + + 1 + + 10000 + + false + + 9223372036854775807 + + + 1024 + + + 16384 + + + 3 + + + + diff --git a/geoserver/latest/templates/jdbcconfig/cm-jdbc-enabled.yaml b/geoserver/latest/templates/jdbcconfig/cm-jdbc-enabled.yaml new file mode 100644 index 0000000..09bc56e --- /dev/null +++ b/geoserver/latest/templates/jdbcconfig/cm-jdbc-enabled.yaml @@ -0,0 +1,24 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: cm-jdbc-enabled +data: + jdbc.properties: | + initdb=false + import=false + enabled=true + username=docker + password=docker + jdbcUrl=jdbc\:postgresql\://postgis.db.svc.cluster.local\:5432/gis1 + pool.poolPreparedStatements=false + pool.testWhileIdle=false + pool.timeBetweenEvictionRunsMillis=-1L + pool.validationQuery=SELECT now() + pool.minIdle=4 + ignoreDirs=.git,data,jdbcstore,jdbcconfig,temp,tmp,logs,wps_data,cluster,gwc-layers + pool.maxOpenPreparedStatements=50 + driverClassName=org.postgresql.Driver + pool.maxActive=10 + initScript=jdbcconfig/scripts/initdb.postgres.sql + debugMode=false + pool.testOnBorrow=true \ No newline at end of file diff --git a/geoserver/latest/templates/jdbcconfig/cm-jdbc-init-import.yaml b/geoserver/latest/templates/jdbcconfig/cm-jdbc-init-import.yaml new file mode 100644 index 0000000..ca418f8 --- /dev/null +++ b/geoserver/latest/templates/jdbcconfig/cm-jdbc-init-import.yaml @@ -0,0 +1,24 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: cm-jdbc-init-import +data: + jdbc.properties: | + initdb=true + import=true + enabled=true + username=docker + password=docker + jdbcUrl=jdbc\:postgresql\://postgis.db.svc.cluster.local\:5432/gis1 + pool.poolPreparedStatements=false + pool.testWhileIdle=false + pool.validationQuery=SELECT now() + pool.timeBetweenEvictionRunsMillis=-1L + pool.minIdle=4 + ignoreDirs=.git,data,jdbcstore,jdbcconfig,temp,tmp,logs,wps_data,cluster,gwc-layers + pool.maxOpenPreparedStatements=50 + driverClassName=org.postgresql.Driver + pool.maxActive=10 + initScript=jdbcconfig/scripts/initdb.postgres.sql + debugMode=true + pool.testOnBorrow=true \ No newline at end of file diff --git a/geoserver/latest/templates/jdbcconfig/cm-jdbc-initial.yaml b/geoserver/latest/templates/jdbcconfig/cm-jdbc-initial.yaml new file mode 100644 index 0000000..f006135 --- /dev/null +++ b/geoserver/latest/templates/jdbcconfig/cm-jdbc-initial.yaml @@ -0,0 +1,24 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: cm-jdbc-initial +data: + jdbc.properties: | + initdb=true + import=true + enabled=false + username=docker + password=docker + jdbcUrl=jdbc\:postgresql\://postgis.db.svc.cluster.local\:5432/gis1 + pool.poolPreparedStatements=false + pool.testWhileIdle=false + pool.validationQuery=SELECT now() + pool.timeBetweenEvictionRunsMillis=-1L + pool.minIdle=4 + ignoreDirs=.git,data,jdbcstore,jdbcconfig,temp,tmp,logs,wps_data,cluster,gwc-layers + pool.maxOpenPreparedStatements=50 + driverClassName=org.postgresql.Driver + pool.maxActive=10 + initScript=jdbcconfig/scripts/initdb.postgres.sql + debugMode=true + pool.testOnBorrow=true \ No newline at end of file diff --git a/geoserver/latest/templates/jdbcconfig/cm-jdbcstore-enabled.yaml b/geoserver/latest/templates/jdbcconfig/cm-jdbcstore-enabled.yaml new file mode 100644 index 0000000..36cc094 --- /dev/null +++ b/geoserver/latest/templates/jdbcconfig/cm-jdbcstore-enabled.yaml @@ -0,0 +1,24 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: cm-jdbcstore-enabled +data: + jdbc.properties: | + initdb=false + import=false + enabled=true + username=docker + password=docker + jdbcUrl=jdbc\:postgresql\://postgis.db.svc.cluster.local\:5432/gis1 + pool.poolPreparedStatements=false + pool.testWhileIdle=false + pool.timeBetweenEvictionRunsMillis=-1L + pool.validationQuery=SELECT now() + pool.minIdle=4 + ignoreDirs=.git,data,jdbcstore,jdbcconfig,temp,tmp,logs,wps_data,cluster,gwc-layers + pool.maxOpenPreparedStatements=50 + driverClassName=org.postgresql.Driver + pool.maxActive=10 + initScript=jdbcstore/scripts/init.postgres.sql + debugMode=false + pool.testOnBorrow=true \ No newline at end of file diff --git a/geoserver/latest/templates/jdbcconfig/cm-jdbcstore-init-import.yaml b/geoserver/latest/templates/jdbcconfig/cm-jdbcstore-init-import.yaml new file mode 100644 index 0000000..a39b207 --- /dev/null +++ b/geoserver/latest/templates/jdbcconfig/cm-jdbcstore-init-import.yaml @@ -0,0 +1,24 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: cm-jdbcstore-init-import +data: + jdbc.properties: | + initdb=true + import=true + enabled=true + username=docker + password=docker + jdbcUrl=jdbc\:postgresql\://postgis.db.svc.cluster.local\:5432/gis1 + pool.poolPreparedStatements=false + pool.testWhileIdle=false + pool.validationQuery=SELECT now() + pool.timeBetweenEvictionRunsMillis=-1L + pool.minIdle=4 + ignoreDirs=.git,data,jdbcstore,jdbcconfig,temp,tmp,logs,wps_data,cluster,gwc-layers + pool.maxOpenPreparedStatements=50 + driverClassName=org.postgresql.Driver + pool.maxActive=10 + initScript=jdbcstore/scripts/init.postgres.sql + debugMode=true + pool.testOnBorrow=true \ No newline at end of file diff --git a/geoserver/latest/templates/jdbcconfig/cm-jdbcstore-initial.yaml b/geoserver/latest/templates/jdbcconfig/cm-jdbcstore-initial.yaml new file mode 100644 index 0000000..4c23463 --- /dev/null +++ b/geoserver/latest/templates/jdbcconfig/cm-jdbcstore-initial.yaml @@ -0,0 +1,24 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: cm-jdbcstore-initial +data: + jdbc.properties: | + initdb=true + import=true + enabled=false + username=docker + password=docker + jdbcUrl=jdbc\:postgresql\://postgis.db.svc.cluster.local\:5432/gis1 + pool.poolPreparedStatements=false + pool.testWhileIdle=false + pool.validationQuery=SELECT now() + pool.timeBetweenEvictionRunsMillis=-1L + pool.minIdle=4 + ignoreDirs=.git,data,jdbcstore,jdbcconfig,temp,tmp,logs,wps_data,cluster,gwc-layers + pool.maxOpenPreparedStatements=50 + driverClassName=org.postgresql.Driver + pool.maxActive=10 + initScript=jdbcstore/scripts/init.postgres.sql + debugMode=true + pool.testOnBorrow=true \ No newline at end of file diff --git a/geoserver/latest/templates/jdbcconfig/jdbcconfig-scripts.yaml b/geoserver/latest/templates/jdbcconfig/jdbcconfig-scripts.yaml new file mode 100644 index 0000000..037f498 --- /dev/null +++ b/geoserver/latest/templates/jdbcconfig/jdbcconfig-scripts.yaml @@ -0,0 +1,1434 @@ +apiVersion: v1 +data: + dropdb.h2.sql: | + DROP VIEW IF EXISTS service; + DROP VIEW IF EXISTS settings; + DROP VIEW IF EXISTS global; + DROP VIEW IF EXISTS layergroup_style; + DROP VIEW IF EXISTS layergroup_layer; + DROP VIEW IF EXISTS layergroup; + DROP VIEW IF EXISTS layer_style; + DROP VIEW IF EXISTS layer; + DROP VIEW IF EXISTS style; + DROP VIEW IF EXISTS wmslayer; + DROP VIEW IF EXISTS wmsstore; + DROP VIEW IF EXISTS wmtslayer; + DROP VIEW IF EXISTS wmtsstore; + DROP VIEW IF EXISTS coverage; + DROP VIEW IF EXISTS coveragestore; + DROP VIEW IF EXISTS featuretype; + DROP VIEW IF EXISTS datastore; + DROP VIEW IF EXISTS workspace; + + ? ALTER TABLE object_property DROP CONSTRAINT fk_object_property; + ? ALTER TABLE property_type DROP CONSTRAINT fk_type_property_type; + ? ALTER TABLE object DROP CONSTRAINT fk_object_type; + ? ALTER TABLE property_type DROP CONSTRAINT fk_property_type_target_property; + ? ALTER TABLE object_property DROP CONSTRAINT fk_object_property_property_type; + + DROP TABLE object IF EXISTS; + DROP TABLE object_property IF EXISTS; + DROP TABLE type IF EXISTS; + DROP TABLE property_type IF EXISTS; + DROP TABLE default_object IF EXISTS; + dropdb.mssql.sql: | + ALTER TABLE OBJECT_PROPERTY DROP CONSTRAINT FK_OBJECT_PROPERTY; + ALTER TABLE PROPERTY_TYPE DROP CONSTRAINT FK_TYPE_PROPERTY_TYPE; + ALTER TABLE OBJECT DROP CONSTRAINT FK_OBJECT_TYPE; + ALTER TABLE PROPERTY_TYPE DROP CONSTRAINT FK_PROPERTY_TYPE_TARGET_PROPERTY; + ALTER TABLE OBJECT_PROPERTY DROP CONSTRAINT FK_OBJECT_PROPERTY_PROPERTY_TYPE; + DROP TABLE OBJECT; + DROP TABLE OBJECT_PROPERTY; + DROP TABLE TYPE; + DROP TABLE PROPERTY_TYPE; + DROP TABLE DEFAULT_OBJECT; + dropdb.mysql.sql: | + ALTER TABLE OBJECT_PROPERTY DROP FOREIGN KEY FK_OBJECT_PROPERTY; + ALTER TABLE PROPERTY_TYPE DROP FOREIGN KEY FK_TYPE_PROPERTY_TYPE; + ALTER TABLE OBJECT DROP FOREIGN KEY FK_OBJECT_TYPE; + ALTER TABLE PROPERTY_TYPE DROP FOREIGN KEY FK_PROPERTY_TYPE_TARGET_PROPERTY; + ALTER TABLE OBJECT_PROPERTY DROP FOREIGN KEY FK_OBJECT_PROPERTY_PROPERTY_TYPE; + DROP TABLE IF EXISTS OBJECT; + DROP TABLE IF EXISTS OBJECT_PROPERTY; + DROP TABLE IF EXISTS TYPE; + DROP TABLE IF EXISTS PROPERTY_TYPE; + DROP TABLE IF EXISTS DEFAULT_OBJECT; + dropdb.oracle.sql: | + DROP VIEW service; + DROP VIEW settings; + DROP VIEW global; + DROP VIEW layergroup_style; + DROP VIEW layergroup_layer; + DROP VIEW layergroup; + DROP VIEW layer_style; + DROP VIEW layer; + DROP VIEW style; + DROP VIEW wmslayer; + DROP VIEW wmsstore; + DROP VIEW coverage; + DROP VIEW coveragestore; + DROP VIEW featuretype; + DROP VIEW datastore; + DROP VIEW workspace; + + DROP TABLE OBJECT CASCADE CONSTRAINTS; + DROP TABLE OBJECT_PROPERTY CASCADE CONSTRAINTS; + DROP TABLE TYPE CASCADE CONSTRAINTS; + DROP TABLE PROPERTY_TYPE CASCADE CONSTRAINTS; + DROP TABLE DEFAULT_OBJECT CASCADE CONSTRAINTS; + DROP SEQUENCE SEQ_OBJECT; + DROP SEQUENCE SEQ_TYPE; + DROP SEQUENCE SEQ_PROPERTY_TYPE; + dropdb.postgres.sql: | + DROP VIEW IF EXISTS service; + DROP VIEW IF EXISTS settings; + DROP VIEW IF EXISTS global; + DROP VIEW IF EXISTS layergroup_style; + DROP VIEW IF EXISTS layergroup_layer; + DROP VIEW IF EXISTS layergroup; + DROP VIEW IF EXISTS layer_style; + DROP VIEW IF EXISTS layer; + DROP VIEW IF EXISTS style; + DROP VIEW IF EXISTS wmslayer; + DROP VIEW IF EXISTS wmsstore; + DROP VIEW IF EXISTS wmtslayer; + DROP VIEW IF EXISTS wmtsstore; + DROP VIEW IF EXISTS coverage; + DROP VIEW IF EXISTS coveragestore; + DROP VIEW IF EXISTS featuretype; + DROP VIEW IF EXISTS datastore; + DROP VIEW IF EXISTS workspace; + + ? ALTER TABLE object_property DROP CONSTRAINT fk_object_property; + ? ALTER TABLE property_type DROP CONSTRAINT fk_type_property_type; + ? ALTER TABLE object DROP CONSTRAINT fk_object_type; + ? ALTER TABLE property_type DROP CONSTRAINT fk_property_type_target_property; + ? ALTER TABLE object_property DROP CONSTRAINT fk_object_property_property_type; + + DROP TABLE IF EXISTS object CASCADE; + DROP TABLE IF EXISTS object_property CASCADE; + DROP TABLE IF EXISTS type CASCADE; + DROP TABLE IF EXISTS property_type CASCADE; + DROP TABLE IF EXISTS default_object CASCADE; + initdb.h2.sql: "-- tables\nCREATE TABLE OBJECT (\n oid int GENERATED BY DEFAULT + AS IDENTITY, \n type_id int NOT NULL, \n id varchar(255) NOT NULL, \n blob + text NOT NULL,\n PRIMARY KEY (OID)\n);\n\nCREATE TABLE OBJECT_PROPERTY (\n oid + int NOT NULL, \n property_type int NOT NULL, \n id varchar(255) NOT NULL, \n + \ related_oid int, \n related_property_type int, \n colindex int NOT NULL, \n + \ value varchar(1023), \n PRIMARY KEY (oid, property_type, colindex)\n);\n\nCREATE + TABLE type (\n oid int GENERATED BY DEFAULT AS IDENTITY, \n typename varchar(255) + NOT NULL, \n PRIMARY KEY (oid)\n);\n\nCREATE TABLE property_type (\n oid int + GENERATED BY DEFAULT AS IDENTITY, \n target_property int, \n type_id int NOT + NULL, \n name varchar(255) NOT NULL, \n collection bit NOT NULL, \n text bit + NOT NULL, \n PRIMARY KEY (oid)\n);\n\nCREATE TABLE default_object (\n def_key + varchar(255) NOT NULL, \n id varchar(255) NOT NULL\n);\n\n-- foriegn keys\nALTER + TABLE object_property ADD CONSTRAINT \n fk_object_property FOREIGN KEY (oid) + REFERENCES object (oid) ON DELETE CASCADE;\n \nALTER TABLE property_type ADD + CONSTRAINT \n fk_type_property_type FOREIGN KEY (type_id) REFERENCES type (oid);\n + \ \nALTER TABLE object ADD CONSTRAINT \n FK_OBJECT_TYPE FOREIGN KEY (TYPE_ID) + REFERENCES TYPE (OID);\n \nALTER TABLE property_type ADD CONSTRAINT \n fk_property_type_target_property + FOREIGN KEY (target_property) REFERENCES property_type (oid);\n \nALTER TABLE + object_property ADD CONSTRAINT \n fk_object_property_property_type FOREIGN KEY + (property_type) REFERENCES property_type (oid);\n\n-- indexes\nCREATE UNIQUE INDEX + object_oid_idx ON object (oid);\nCREATE INDEX object_type_id_idx ON object (type_id);\nCREATE + UNIQUE INDEX object_id_idx ON object (id);\n\nCREATE INDEX object_property_oid_idx + ON object_property (oid);\nCREATE INDEX object_property_property_type_idx ON object_property + (property_type);\nCREATE INDEX object_property_id_idx ON object_property (id);\nCREATE + INDEX object_property_related_oid_idx ON object_property (related_oid);\nCREATE + INDEX object_property_related_property_type_idx ON object_property (related_property_type);\nCREATE + INDEX object_property_colindex_idx ON object_property (colindex);\nCREATE INDEX + object_property_value_idx ON object_property (value);\n\nCREATE UNIQUE INDEX type_oid_idx + ON type (oid);\nCREATE UNIQUE INDEX type_typename_idx ON type (typename);\n\nCREATE + UNIQUE INDEX property_type_oid_idx ON property_type (oid);\nCREATE INDEX property_type_target_property_idx + ON property_type (target_property);\nCREATE INDEX property_type_type_id_idx ON + property_type (type_id);\nCREATE INDEX property_type_name_idx ON property_type + (name);\nCREATE INDEX property_type_collection_idx ON property_type (collection);\n\nCREATE + UNIQUE INDEX default_object_def_key_idx ON default_object (def_key);\nCREATE INDEX + default_object_id_idx ON default_object (id);\n\n-- views - note these views are + not used at all in code\n-- workspace view \nCREATE VIEW workspace AS\nSELECT + a.oid, \n a.id, \n (SELECT c.value \n FROM object_property + c, property_type d \n WHERE c.oid = a.oid\n AND c.property_type + = d.oid\n AND d.name = 'name') as name, \n (SELECT e.value\n FROM + object_property e, property_type f\n WHERE e.property_type = f.oid\n AND + e.oid = (SELECT g.oid \n FROM object_property g, property_type + h \n WHERE g.property_type = h.oid\n AND + g.value = (SELECT i.value\n FROM object_property + i, property_type j\n WHERE i.oid = a.oid\n + \ AND i.property_type = j.oid\n AND + j.name = 'name')\n AND h.name = 'prefix')\n AND + f.name = 'URI') as uri\n FROM object a, type b\n WHERE a.type_id = b.oid\n AND + b.typename = 'org.geoserver.catalog.WorkspaceInfo'; \n \n-- datastore view\nCREATE + VIEW datastore AS\nSELECT a.oid, \n a.id,\n (SELECT c.value\n FROM + object_property c, property_type d\n WHERE c.oid = a.oid\n AND + c.property_type = d.oid\n AND d.name = 'name') as name,\n (SELECT + c.value\n FROM object_property c, property_type d\n WHERE c.oid + = a.oid\n AND c.property_type = d.oid\n AND d.name = 'description') + as description,\n (SELECT c.value\n FROM object_property c, property_type + d\n WHERE c.oid = a.oid\n AND c.property_type = d.oid\n AND + d.name = 'type') as type,\n (SELECT c.value\n FROM object_property + c, property_type d\n WHERE c.oid = a.oid\n AND c.property_type + = d.oid\n AND d.name = 'enabled') as enabled,\n (SELECT c.related_oid\n + \ FROM object_property c, property_type d\n WHERE c.oid = a.oid\n + \ AND c.property_type = d.oid\n AND d.name = 'workspace.id') + workspace\n FROM object a, type b \n WHERE a.type_id = b.oid\n AND b.typename + = 'org.geoserver.catalog.DataStoreInfo';\n\n-- feature type view\nCREATE VIEW + featuretype AS\nSELECT a.oid, \n a.id,\n (SELECT c.value\n FROM + object_property c, property_type d\n WHERE c.oid = a.oid\n AND + c.property_type = d.oid\n AND d.name = 'name') as name,\n (SELECT + c.value\n FROM object_property c, property_type d\n WHERE c.oid + = a.oid\n AND c.property_type = d.oid\n AND d.name = 'nativeName') + as native_name,\n (SELECT c.value\n FROM object_property c, property_type + d\n WHERE c.oid = a.oid\n AND c.property_type = d.oid\n AND + d.name = 'prefixedName') as prefixed_name,\n (SELECT c.value\n FROM + object_property c, property_type d\n WHERE c.oid = a.oid\n AND + c.property_type = d.oid\n AND d.name = 'title') as title,\n (SELECT + c.value\n FROM object_property c, property_type d\n WHERE c.oid + = a.oid\n AND c.property_type = d.oid\n AND d.name = 'abstract') + as abstract,\n (SELECT c.value\n FROM object_property c, property_type + d\n WHERE c.oid = a.oid\n AND c.property_type = d.oid\n AND + d.name = 'SRS') as srs,\n (SELECT c.value\n FROM object_property + c, property_type d\n WHERE c.oid = a.oid\n AND c.property_type + = d.oid\n AND d.name = 'projectionPolicy') as projection_policy,\n (SELECT + c.value\n FROM object_property c, property_type d\n WHERE c.oid + = a.oid\n AND c.property_type = d.oid\n AND d.name = 'enabled') + as enabled,\n (SELECT c.related_oid\n FROM object_property c, property_type + d\n WHERE c.oid = a.oid\n AND c.property_type = d.oid\n AND + d.name = 'store.id') store,\n (SELECT c.related_oid\n FROM object_property + c, property_type d\n WHERE c.oid = a.oid\n AND c.property_type + = d.oid\n AND d.name = 'namespace.id') namespace\n FROM object a, type + b \n WHERE a.type_id = b.oid\n AND b.typename = 'org.geoserver.catalog.FeatureTypeInfo';\n\n-- + coveragestore view\nCREATE VIEW coveragestore AS\nSELECT a.oid, \n a.id,\n + \ (SELECT c.value\n FROM object_property c, property_type d\n WHERE + c.oid = a.oid\n AND c.property_type = d.oid\n AND d.name = + 'name') as name,\n (SELECT c.value\n FROM object_property c, property_type + d\n WHERE c.oid = a.oid\n AND c.property_type = d.oid\n AND + d.name = 'description') as description,\n (SELECT c.value\n FROM + object_property c, property_type d\n WHERE c.oid = a.oid\n AND + c.property_type = d.oid\n AND d.name = 'type') as type,\n (SELECT + c.value\n FROM object_property c, property_type d\n WHERE c.oid + = a.oid\n AND c.property_type = d.oid\n AND d.name = 'enabled') + as enabled,\n (SELECT c.related_oid\n FROM object_property c, property_type + d\n WHERE c.oid = a.oid\n AND c.property_type = d.oid\n AND + d.name = 'workspace.id') workspace\n FROM object a, type b \n WHERE a.type_id + = b.oid\n AND b.typename = 'org.geoserver.catalog.CoverageStoreInfo';\n\n-- + coverage view\nCREATE VIEW coverage AS\nSELECT a.oid, \n a.id,\n (SELECT + c.value\n FROM object_property c, property_type d\n WHERE c.oid + = a.oid\n AND c.property_type = d.oid\n AND d.name = 'name') + as name,\n (SELECT c.value\n FROM object_property c, property_type + d\n WHERE c.oid = a.oid\n AND c.property_type = d.oid\n AND + d.name = 'nativeName') as native_name,\n (SELECT c.value\n FROM + object_property c, property_type d\n WHERE c.oid = a.oid\n AND + c.property_type = d.oid\n AND d.name = 'prefixedName') as prefixed_name,\n + \ (SELECT c.value\n FROM object_property c, property_type d\n WHERE + c.oid = a.oid\n AND c.property_type = d.oid\n AND d.name = + 'title') as title,\n (SELECT c.value\n FROM object_property c, + property_type d\n WHERE c.oid = a.oid\n AND c.property_type + = d.oid\n AND d.name = 'abstract') as abstract,\n (SELECT c.value\n + \ FROM object_property c, property_type d\n WHERE c.oid = a.oid\n + \ AND c.property_type = d.oid\n AND d.name = 'SRS') as srs,\n + \ (SELECT c.value\n FROM object_property c, property_type d\n WHERE + c.oid = a.oid\n AND c.property_type = d.oid\n AND d.name = + 'projectionPolicy') as projection_policy,\n (SELECT c.value\n FROM + object_property c, property_type d\n WHERE c.oid = a.oid\n AND + c.property_type = d.oid\n AND d.name = 'enabled') as enabled,\n (SELECT + c.related_oid\n FROM object_property c, property_type d\n WHERE + c.oid = a.oid\n AND c.property_type = d.oid\n AND d.name = + 'store.id') store,\n (SELECT c.related_oid\n FROM object_property + c, property_type d\n WHERE c.oid = a.oid\n AND c.property_type + = d.oid\n AND d.name = 'namespace.id') namespace\n FROM object a, type + b \n WHERE a.type_id = b.oid\n AND b.typename = 'org.geoserver.catalog.CoverageInfo';\n\n-- + wmsstore view\nCREATE VIEW wmsstore AS\nSELECT a.oid, \n a.id,\n (SELECT + c.value\n FROM object_property c, property_type d\n WHERE c.oid + = a.oid\n AND c.property_type = d.oid\n AND d.name = 'name') + as name,\n (SELECT c.value\n FROM object_property c, property_type + d\n WHERE c.oid = a.oid\n AND c.property_type = d.oid\n AND + d.name = 'description') as description,\n (SELECT c.value\n FROM + object_property c, property_type d\n WHERE c.oid = a.oid\n AND + c.property_type = d.oid\n AND d.name = 'capabilitiesURL') as capabilities_url,\n + \ (SELECT c.value\n FROM object_property c, property_type d\n WHERE + c.oid = a.oid\n AND c.property_type = d.oid\n AND d.name = + 'type') as type,\n (SELECT c.value\n FROM object_property c, property_type + d\n WHERE c.oid = a.oid\n AND c.property_type = d.oid\n AND + d.name = 'enabled') as enabled,\n (SELECT c.related_oid\n FROM + object_property c, property_type d\n WHERE c.oid = a.oid\n AND + c.property_type = d.oid\n AND d.name = 'workspace.id') workspace\n FROM + object a, type b \n WHERE a.type_id = b.oid\n AND b.typename = 'org.geoserver.catalog.WMSStoreInfo';\n\n-- + wms layer view\nCREATE VIEW wmslayer AS\nSELECT a.oid, \n a.id,\n (SELECT + c.value\n FROM object_property c, property_type d\n WHERE c.oid + = a.oid\n AND c.property_type = d.oid\n AND d.name = 'name') + as name,\n (SELECT c.value\n FROM object_property c, property_type + d\n WHERE c.oid = a.oid\n AND c.property_type = d.oid\n AND + d.name = 'nativeName') as native_name,\n (SELECT c.value\n FROM + object_property c, property_type d\n WHERE c.oid = a.oid\n AND + c.property_type = d.oid\n AND d.name = 'prefixedName') as prefixed_name,\n + \ (SELECT c.value\n FROM object_property c, property_type d\n WHERE + c.oid = a.oid\n AND c.property_type = d.oid\n AND d.name = + 'title') as title,\n (SELECT c.value\n FROM object_property c, + property_type d\n WHERE c.oid = a.oid\n AND c.property_type + = d.oid\n AND d.name = 'abstract') as abstract,\n (SELECT c.value\n + \ FROM object_property c, property_type d\n WHERE c.oid = a.oid\n + \ AND c.property_type = d.oid\n AND d.name = 'SRS') as srs,\n + \ (SELECT c.value\n FROM object_property c, property_type d\n WHERE + c.oid = a.oid\n AND c.property_type = d.oid\n AND d.name = + 'projectionPolicy') as projection_policy,\n (SELECT c.value\n FROM + object_property c, property_type d\n WHERE c.oid = a.oid\n AND + c.property_type = d.oid\n AND d.name = 'enabled') as enabled,\n (SELECT + c.related_oid\n FROM object_property c, property_type d\n WHERE + c.oid = a.oid\n AND c.property_type = d.oid\n AND d.name = + 'store.id') store,\n (SELECT c.related_oid\n FROM object_property + c, property_type d\n WHERE c.oid = a.oid\n AND c.property_type + = d.oid\n AND d.name = 'namespace.id') namespace\n FROM object a, type + b \n WHERE a.type_id = b.oid\n AND b.typename = 'org.geoserver.catalog.WMSLayerInfo';\n\n-- + wmtsstore view\nCREATE VIEW wmtsstore AS\nSELECT a.oid, \n a.id,\n (SELECT + c.value\n FROM object_property c, property_type d\n WHERE c.oid + = a.oid\n AND c.property_type = d.oid\n AND d.name = 'name') + as name,\n (SELECT c.value\n FROM object_property c, property_type + d\n WHERE c.oid = a.oid\n AND c.property_type = d.oid\n AND + d.name = 'description') as description,\n (SELECT c.value\n FROM + object_property c, property_type d\n WHERE c.oid = a.oid\n AND + c.property_type = d.oid\n AND d.name = 'capabilitiesURL') as capabilities_url,\n + \ (SELECT c.value\n FROM object_property c, property_type d\n WHERE + c.oid = a.oid\n AND c.property_type = d.oid\n AND d.name = + 'type') as type,\n (SELECT c.value\n FROM object_property c, property_type + d\n WHERE c.oid = a.oid\n AND c.property_type = d.oid\n AND + d.name = 'enabled') as enabled,\n (SELECT c.related_oid\n FROM + object_property c, property_type d\n WHERE c.oid = a.oid\n AND + c.property_type = d.oid\n AND d.name = 'workspace.id') workspace\n FROM + object a, type b \n WHERE a.type_id = b.oid\n AND b.typename = 'org.geoserver.catalog.WMTSStoreInfo';\n\n-- + wmts layer view\nCREATE VIEW wmtslayer AS\nSELECT a.oid, \n a.id,\n (SELECT + c.value\n FROM object_property c, property_type d\n WHERE c.oid + = a.oid\n AND c.property_type = d.oid\n AND d.name = 'name') + as name,\n (SELECT c.value\n FROM object_property c, property_type + d\n WHERE c.oid = a.oid\n AND c.property_type = d.oid\n AND + d.name = 'nativeName') as native_name,\n (SELECT c.value\n FROM + object_property c, property_type d\n WHERE c.oid = a.oid\n AND + c.property_type = d.oid\n AND d.name = 'prefixedName') as prefixed_name,\n + \ (SELECT c.value\n FROM object_property c, property_type d\n WHERE + c.oid = a.oid\n AND c.property_type = d.oid\n AND d.name = + 'title') as title,\n (SELECT c.value\n FROM object_property c, + property_type d\n WHERE c.oid = a.oid\n AND c.property_type + = d.oid\n AND d.name = 'abstract') as abstract,\n (SELECT c.value\n + \ FROM object_property c, property_type d\n WHERE c.oid = a.oid\n + \ AND c.property_type = d.oid\n AND d.name = 'SRS') as srs,\n + \ (SELECT c.value\n FROM object_property c, property_type d\n WHERE + c.oid = a.oid\n AND c.property_type = d.oid\n AND d.name = + 'projectionPolicy') as projection_policy,\n (SELECT c.value\n FROM + object_property c, property_type d\n WHERE c.oid = a.oid\n AND + c.property_type = d.oid\n AND d.name = 'enabled') as enabled,\n (SELECT + c.related_oid\n FROM object_property c, property_type d\n WHERE + c.oid = a.oid\n AND c.property_type = d.oid\n AND d.name = + 'store.id') store,\n (SELECT c.related_oid\n FROM object_property + c, property_type d\n WHERE c.oid = a.oid\n AND c.property_type + = d.oid\n AND d.name = 'namespace.id') namespace\n FROM object a, type + b \n WHERE a.type_id = b.oid\n AND b.typename = 'org.geoserver.catalog.WMTSLayerInfo';\n\n-- + style view\nCREATE VIEW style AS\nSELECT a.oid, \n a.id,\n (SELECT + c.value\n FROM object_property c, property_type d\n WHERE c.oid + = a.oid\n AND c.property_type = d.oid\n AND d.name = 'name') + as name,\n (SELECT c.value\n FROM object_property c, property_type + d\n WHERE c.oid = a.oid\n AND c.property_type = d.oid\n AND + d.name = 'filename') as filename,\n (SELECT c.related_oid\n FROM + object_property c, property_type d\n WHERE c.oid = a.oid\n AND + c.property_type = d.oid\n AND d.name = 'workspace.id') workspace\n FROM + object a, type b \n WHERE a.type_id = b.oid\n AND b.typename = 'org.geoserver.catalog.StyleInfo';\n\n-- + layer view\nCREATE VIEW layer AS\nSELECT a.oid, \n a.id,\n (SELECT + c.value\n FROM object_property c, property_type d\n WHERE c.oid + = a.oid\n AND c.property_type = d.oid\n AND d.name = 'name') + as name,\n (SELECT c.value\n FROM object_property c, property_type + d\n WHERE c.oid = a.oid\n AND c.property_type = d.oid\n AND + d.name = 'title') as title,\n (SELECT c.value\n FROM object_property + c, property_type d\n WHERE c.oid = a.oid\n AND c.property_type + = d.oid\n AND d.name = 'abstract') as abstract,\n (SELECT c.value\n + \ FROM object_property c, property_type d\n WHERE c.oid = a.oid\n + \ AND c.property_type = d.oid\n AND d.name = 'type') as type,\n + \ (SELECT c.value\n FROM object_property c, property_type d\n WHERE + c.oid = a.oid\n AND c.property_type = d.oid\n AND d.name = + 'enabled') as enabled,\n (SELECT c.related_oid\n FROM object_property + c, property_type d\n WHERE c.oid = a.oid\n AND c.property_type + = d.oid\n AND d.name = 'defaultStyle.id') default_style,\n (SELECT + c.related_oid\n FROM object_property c, property_type d\n WHERE + c.oid = a.oid\n AND c.property_type = d.oid\n AND d.name = + 'resource.id') resource\n FROM object a, type b \n WHERE a.type_id = b.oid\n + \ AND b.typename = 'org.geoserver.catalog.LayerInfo';\n\n-- layergroup styles\nCREATE + VIEW layer_style AS\nSELECT a.oid, b.related_oid as style\n FROM object a, object_property + b, property_type c, type d \n WHERE a.oid = b.oid \n AND a.type_id = d.oid\n + \ AND b.property_type = c.oid\n AND c.name = 'styles.id'\n AND d.typename + = 'org.geoserver.catalog.LayerInfo';\n\n-- layer group view\nCREATE VIEW layergroup + AS\nSELECT a.oid, \n a.id,\n (SELECT c.value\n FROM object_property + c, property_type d\n WHERE c.oid = a.oid\n AND c.property_type + = d.oid\n AND d.name = 'name') as name,\n (SELECT c.value\n FROM + object_property c, property_type d\n WHERE c.oid = a.oid\n AND + c.property_type = d.oid\n AND d.name = 'title') as title,\n (SELECT + c.value\n FROM object_property c, property_type d\n WHERE c.oid + = a.oid\n AND c.property_type = d.oid\n AND d.name = 'abstract') + as abstract,\n (SELECT c.value\n FROM object_property c, property_type + d\n WHERE c.oid = a.oid\n AND c.property_type = d.oid\n AND + d.name = 'mode') as mode,\n (SELECT c.related_oid\n FROM object_property + c, property_type d\n WHERE c.oid = a.oid\n AND c.property_type + = d.oid\n AND d.name = 'workspace.id') workspace\n FROM object a, type + b \n WHERE a.type_id = b.oid\n AND b.typename = 'org.geoserver.catalog.LayerGroupInfo';\n\n-- + layergroup layers\nCREATE VIEW layergroup_layer AS\nSELECT a.oid, b.related_oid + as layer\n FROM object a, object_property b, property_type c, type d \n WHERE + a.oid = b.oid \n AND a.type_id = d.oid\n AND b.property_type = c.oid\n AND + c.name = 'layers.id'\n AND d.typename = 'org.geoserver.catalog.LayerGroupInfo';\n + \ \n-- layergroup styles\nCREATE VIEW layergroup_style AS\nSELECT a.oid, b.related_oid + as style\n FROM object a, object_property b, property_type c, type d \n WHERE + a.oid = b.oid \n AND a.type_id = d.oid\n AND b.property_type = c.oid\n AND + c.name = 'styles.id'\n AND d.typename = 'org.geoserver.catalog.LayerGroupInfo';\n\n-- + global view\nCREATE VIEW global AS\nSELECT a.oid, \n a.id,\n (SELECT + c.value\n FROM object_property c, property_type d\n WHERE c.oid + = a.oid\n AND c.property_type = d.oid\n AND d.name = 'featureTypeCacheSize') + as feature_type_cache_size,\n (SELECT c.value\n FROM object_property + c, property_type d\n WHERE c.oid = a.oid\n AND c.property_type + = d.oid\n AND d.name = 'globalServices') as global_services,\n (SELECT + c.value\n FROM object_property c, property_type d\n WHERE c.oid + = a.oid\n AND c.property_type = d.oid\n AND d.name = 'xmlPostRequestLogBufferSize') + as xml_post_request_log_buffer_size,\n (SELECT c.value\n FROM object_property + c, property_type d\n WHERE c.oid = a.oid\n AND c.property_type + = d.oid\n AND d.name = 'updateSequence') as update_sequence,\n (SELECT + c.related_oid\n FROM object_property c, property_type d\n WHERE + c.oid = a.oid\n AND c.property_type = d.oid\n AND d.name = + 'settings.id') as settings\n FROM object a, type b \n WHERE a.type_id = b.oid\n + \ AND b.typename = 'org.geoserver.config.GeoServerInfo';\n\n-- settings view\nCREATE + VIEW settings AS\nSELECT a.oid,\n a.id,\n (SELECT c.value\n FROM + object_property c, property_type d\n WHERE c.oid = a.oid\n AND + c.property_type = d.oid\n AND d.name = 'title') as title,\n (SELECT + c.value\n FROM object_property c, property_type d\n WHERE c.oid + = a.oid\n AND c.property_type = d.oid\n AND d.name = 'charset') + as charset,\n (SELECT c.value\n FROM object_property c, property_type + d\n WHERE c.oid = a.oid\n AND c.property_type = d.oid\n AND + d.name = 'verbose') as verbose,\n (SELECT c.value\n FROM object_property + c, property_type d\n WHERE c.oid = a.oid\n AND c.property_type + = d.oid\n AND d.name = 'verboseExceptions') as verbose_exceptions,\n + \ (SELECT c.value\n FROM object_property c, property_type d\n WHERE + c.oid = a.oid\n AND c.property_type = d.oid\n AND d.name = + 'numDecimals') as num_decimals,\n (SELECT c.value\n FROM object_property + c, property_type d\n WHERE c.oid = a.oid\n AND c.property_type + = d.oid\n AND d.name = 'onlineResource') as online_resource,\n (SELECT + c.value\n FROM object_property c, property_type d\n WHERE c.oid + = a.oid\n AND c.property_type = d.oid\n AND d.name = 'proxyBaseUrl') + as proxy_base_url,\n (SELECT c.value\n FROM object_property c, + property_type d\n WHERE c.oid = a.oid\n AND c.property_type + = d.oid\n AND d.name = 'schemaBaseUrl') as schema_base_url,\n (SELECT + c.related_oid\n FROM object_property c, property_type d\n WHERE + c.oid = a.oid\n AND c.property_type = d.oid\n AND d.name = + 'workspace.id') as workspace\n FROM object a, type b \n WHERE a.type_id = b.oid\n + \ AND b.typename = 'org.geoserver.config.SettingsInfo';\n\n-- service view\nCREATE + VIEW service AS\nSELECT a.oid, \n a.id,\n (SELECT c.value\n FROM + object_property c, property_type d\n WHERE c.oid = a.oid\n AND + c.property_type = d.oid\n AND d.name = 'name') as name,\n (SELECT + c.value\n FROM object_property c, property_type d\n WHERE c.oid + = a.oid\n AND c.property_type = d.oid\n AND d.name = 'title') + as title,\n (SELECT c.value\n FROM object_property c, property_type + d\n WHERE c.oid = a.oid\n AND c.property_type = d.oid\n AND + d.name = 'abstract') as abstract,\n (SELECT c.value\n FROM object_property + c, property_type d\n WHERE c.oid = a.oid\n AND c.property_type + = d.oid\n AND d.name = 'maintainer') as maintainer,\n (SELECT + c.value\n FROM object_property c, property_type d\n WHERE c.oid + = a.oid\n AND c.property_type = d.oid\n AND d.name = 'verbose') + as verbose,\n (SELECT c.value\n FROM object_property c, property_type + d\n WHERE c.oid = a.oid\n AND c.property_type = d.oid\n AND + d.name = 'citeCompliant') as cite_compliant,\n (SELECT c.value\n FROM + object_property c, property_type d\n WHERE c.oid = a.oid\n AND + c.property_type = d.oid\n AND d.name = 'outputStrategy') as output_strategy,\n + \ (SELECT c.value\n FROM object_property c, property_type d\n WHERE + c.oid = a.oid\n AND c.property_type = d.oid\n AND d.name = + 'onlineResource') as online_resource,\n (SELECT c.value\n FROM + object_property c, property_type d\n WHERE c.oid = a.oid\n AND + c.property_type = d.oid\n AND d.name = 'schemaBaseURL') as schema_base_url,\n + \ (SELECT c.value\n FROM object_property c, property_type d\n WHERE + c.oid = a.oid\n AND c.property_type = d.oid\n AND d.name = + 'enabled') as enabled,\n (SELECT c.related_oid\n FROM object_property + c, property_type d\n WHERE c.oid = a.oid\n AND c.property_type + = d.oid\n AND d.name = 'workspace.id') as workspace\n FROM object a, + type b \n WHERE a.type_id = b.oid\n AND b.typename = 'org.geoserver.config.ServiceInfo';\n" + initdb.mssql.sql: | + CREATE TABLE OBJECT (OID int IDENTITY NOT NULL, TYPE_ID int NOT NULL, ID varchar(255) NOT NULL, BLOB text NOT NULL, PRIMARY KEY (OID)); + CREATE TABLE OBJECT_PROPERTY (OID int NOT NULL, PROPERTY_TYPE int NOT NULL, ID varchar(255) NOT NULL, RELATED_OID int NULL, RELATED_PROPERTY_TYPE int NULL, COLINDEX int NOT NULL, VALUE varchar(max) NULL, PRIMARY KEY (OID, PROPERTY_TYPE, COLINDEX)); + CREATE TABLE TYPE (OID int IDENTITY NOT NULL, TYPENAME varchar(255) NOT NULL, PRIMARY KEY (OID)); + CREATE TABLE PROPERTY_TYPE (OID int IDENTITY NOT NULL, TARGET_PROPERTY int NULL, TYPE_ID int NOT NULL, NAME varchar(255) NOT NULL, COLLECTION bit NOT NULL, TEXT bit NOT NULL, PRIMARY KEY (OID)); + CREATE TABLE DEFAULT_OBJECT (DEF_KEY varchar(255) NOT NULL, ID varchar(255) NOT NULL); + ALTER TABLE OBJECT_PROPERTY ADD CONSTRAINT FK_OBJECT_PROPERTY FOREIGN KEY (OID) REFERENCES OBJECT (OID) ON DELETE Cascade; + ALTER TABLE PROPERTY_TYPE ADD CONSTRAINT FK_TYPE_PROPERTY_TYPE FOREIGN KEY (TYPE_ID) REFERENCES TYPE (OID); + ALTER TABLE OBJECT ADD CONSTRAINT FK_OBJECT_TYPE FOREIGN KEY (TYPE_ID) REFERENCES TYPE (OID); + ALTER TABLE PROPERTY_TYPE ADD CONSTRAINT FK_PROPERTY_TYPE_TARGET_PROPERTY FOREIGN KEY (TARGET_PROPERTY) REFERENCES PROPERTY_TYPE (OID); + ALTER TABLE OBJECT_PROPERTY ADD CONSTRAINT FK_OBJECT_PROPERTY_PROPERTY_TYPE FOREIGN KEY (PROPERTY_TYPE) REFERENCES PROPERTY_TYPE (OID); + CREATE UNIQUE INDEX OBJECT_OID ON OBJECT (OID); + CREATE INDEX OBJECT_TYPE_ID ON OBJECT (TYPE_ID); + CREATE UNIQUE INDEX OBJECT_ID ON OBJECT (ID); + CREATE INDEX OBJECT_PROPERTY_OID ON OBJECT_PROPERTY (OID); + CREATE INDEX OBJECT_PROPERTY_PROPERTY_TYPE ON OBJECT_PROPERTY (PROPERTY_TYPE); + CREATE INDEX OBJECT_PROPERTY_ID ON OBJECT_PROPERTY (ID); + CREATE INDEX OBJECT_PROPERTY_RELATED_OID ON OBJECT_PROPERTY (RELATED_OID); + CREATE INDEX OBJECT_PROPERTY_RELATED_PROPERTY_TYPE ON OBJECT_PROPERTY (RELATED_PROPERTY_TYPE); + CREATE INDEX OBJECT_PROPERTY_COLINDEX ON OBJECT_PROPERTY (COLINDEX); + CREATE INDEX OBJECT_PROPERTY_VALUE ON OBJECT_PROPERTY (VALUE); + CREATE UNIQUE INDEX TYPE_OID ON TYPE (OID); + CREATE UNIQUE INDEX TYPE_TYPENAME ON TYPE (TYPENAME); + CREATE UNIQUE INDEX PROPERTY_TYPE_OID ON PROPERTY_TYPE (OID); + CREATE INDEX PROPERTY_TYPE_TARGET_PROPERTY ON PROPERTY_TYPE (TARGET_PROPERTY); + CREATE INDEX PROPERTY_TYPE_TYPE_ID ON PROPERTY_TYPE (TYPE_ID); + CREATE INDEX PROPERTY_TYPE_NAME ON PROPERTY_TYPE (NAME); + CREATE INDEX PROPERTY_TYPE_COLLECTION ON PROPERTY_TYPE (COLLECTION); + CREATE UNIQUE INDEX DEFAULT_OBJECT_DEF_KEY ON DEFAULT_OBJECT (DEF_KEY); + CREATE INDEX DEFAULT_OBJECT_ID ON DEFAULT_OBJECT (ID); + initdb.mysql.sql: | + CREATE TABLE OBJECT (OID int(11) NOT NULL AUTO_INCREMENT, TYPE_ID int(11) NOT NULL, ID varchar(255) NOT NULL, BLOB text NOT NULL, PRIMARY KEY (OID), UNIQUE INDEX (OID), INDEX (TYPE_ID), UNIQUE INDEX (ID)); + CREATE TABLE OBJECT_PROPERTY (OID int(11) NOT NULL, PROPERTY_TYPE int(11) NOT NULL, ID varchar(255) NOT NULL, RELATED_OID int(11), RELATED_PROPERTY_TYPE int(11), COLINDEX int(11) NOT NULL, VALUE varchar(1023), PRIMARY KEY (OID, PROPERTY_TYPE, COLINDEX), INDEX (OID), INDEX (PROPERTY_TYPE), INDEX (ID), INDEX (RELATED_OID), INDEX (RELATED_PROPERTY_TYPE), INDEX (COLINDEX), INDEX (VALUE)); + CREATE TABLE TYPE (OID int(11) NOT NULL AUTO_INCREMENT, TYPENAME varchar(255) NOT NULL, PRIMARY KEY (OID), UNIQUE INDEX (OID), UNIQUE INDEX (TYPENAME)); + CREATE TABLE PROPERTY_TYPE (OID int(11) NOT NULL AUTO_INCREMENT, TARGET_PROPERTY int(11), TYPE_ID int(11) NOT NULL, NAME varchar(255) NOT NULL, COLLECTION tinyint(1) NOT NULL, TEXT tinyint(1) NOT NULL, PRIMARY KEY (OID), UNIQUE INDEX (OID), INDEX (TARGET_PROPERTY), INDEX (TYPE_ID), INDEX (NAME), INDEX (COLLECTION)); + CREATE TABLE DEFAULT_OBJECT (DEF_KEY varchar(255) NOT NULL, ID varchar(255) NOT NULL, UNIQUE INDEX (DEF_KEY), INDEX (ID)); + ALTER TABLE OBJECT_PROPERTY ADD INDEX FK_OBJECT_PROPERTY (OID), ADD CONSTRAINT FK_OBJECT_PROPERTY FOREIGN KEY (OID) REFERENCES OBJECT (OID) ON DELETE Cascade; + ALTER TABLE PROPERTY_TYPE ADD INDEX FK_TYPE_PROPERTY_TYPE (TYPE_ID), ADD CONSTRAINT FK_TYPE_PROPERTY_TYPE FOREIGN KEY (TYPE_ID) REFERENCES TYPE (OID); + ALTER TABLE OBJECT ADD INDEX FK_OBJECT_TYPE (TYPE_ID), ADD CONSTRAINT FK_OBJECT_TYPE FOREIGN KEY (TYPE_ID) REFERENCES TYPE (OID); + ALTER TABLE PROPERTY_TYPE ADD INDEX FK_PROPERTY_TYPE_TARGET_PROPERTY (TARGET_PROPERTY), ADD CONSTRAINT FK_PROPERTY_TYPE_TARGET_PROPERTY FOREIGN KEY (TARGET_PROPERTY) REFERENCES PROPERTY_TYPE (OID); + ALTER TABLE OBJECT_PROPERTY ADD INDEX FK_OBJECT_PROPERTY_PROPERTY_TYPE (PROPERTY_TYPE), ADD CONSTRAINT FK_OBJECT_PROPERTY_PROPERTY_TYPE FOREIGN KEY (PROPERTY_TYPE) REFERENCES PROPERTY_TYPE (OID); + initdb.oracle.sql: | + CREATE SEQUENCE seq_OBJECT; + CREATE SEQUENCE seq_TYPE; + CREATE SEQUENCE seq_PROPERTY_TYPE; + CREATE TABLE OBJECT (OID number(10) NOT NULL, TYPE_ID number(10) NOT NULL, ID varchar2(255) NOT NULL, BLOB clob NOT NULL, PRIMARY KEY (OID)); + CREATE TABLE OBJECT_PROPERTY (OID number(10) NOT NULL, PROPERTY_TYPE number(10) NOT NULL, ID varchar2(255) NOT NULL, RELATED_OID number(10), RELATED_PROPERTY_TYPE number(10), COLINDEX number(10) NOT NULL, VALUE varchar2(1023), PRIMARY KEY (OID, PROPERTY_TYPE, COLINDEX)); + CREATE TABLE TYPE (OID number(10) NOT NULL, TYPENAME varchar2(255) NOT NULL, PRIMARY KEY (OID)); + CREATE TABLE PROPERTY_TYPE (OID number(10) NOT NULL, TARGET_PROPERTY number(10), TYPE_ID number(10) NOT NULL, NAME varchar2(255) NOT NULL, COLLECTION number(1) NOT NULL, TEXT number(1) NOT NULL, PRIMARY KEY (OID)); + CREATE TABLE DEFAULT_OBJECT (DEF_KEY varchar2(255) NOT NULL, ID varchar2(255) NOT NULL); + ALTER TABLE OBJECT_PROPERTY ADD CONSTRAINT FK_OBJECT_PROPERTY FOREIGN KEY (OID) REFERENCES OBJECT (OID) ON DELETE Cascade; + ALTER TABLE PROPERTY_TYPE ADD CONSTRAINT FK_TYPE_PROPERTY_TYPE FOREIGN KEY (TYPE_ID) REFERENCES TYPE (OID); + ALTER TABLE OBJECT ADD CONSTRAINT FK_OBJECT_TYPE FOREIGN KEY (TYPE_ID) REFERENCES TYPE (OID); + ALTER TABLE PROPERTY_TYPE ADD CONSTRAINT FK_PROPERTY_TYPE_TARGET_PROP FOREIGN KEY (TARGET_PROPERTY) REFERENCES PROPERTY_TYPE (OID); + ALTER TABLE OBJECT_PROPERTY ADD CONSTRAINT FK_OBJECT_PROPERTY_PROP_TYPE FOREIGN KEY (PROPERTY_TYPE) REFERENCES PROPERTY_TYPE (OID); + CREATE INDEX OBJECT_TYPE_ID ON OBJECT (TYPE_ID); + CREATE UNIQUE INDEX OBJECT_ID ON OBJECT (ID); + CREATE INDEX OBJECT_PROPERTY_VALUE_UPPER ON OBJECT_PROPERTY (UPPER(VALUE)); + CREATE INDEX OBJECT_PROPERTY_OID ON OBJECT_PROPERTY (OID); + CREATE INDEX OBJECT_PROPERTY_PROP_TYPE ON OBJECT_PROPERTY (PROPERTY_TYPE); + CREATE INDEX OBJECT_PROPERTY_ID ON OBJECT_PROPERTY (ID); + CREATE INDEX OBJECT_PROPERTY_RELATED_OID ON OBJECT_PROPERTY (RELATED_OID); + CREATE INDEX OBJECT_PROPERTY_REL_PROP_TYPE ON OBJECT_PROPERTY (RELATED_PROPERTY_TYPE); + CREATE INDEX OBJECT_PROPERTY_COLINDEX ON OBJECT_PROPERTY (COLINDEX); + CREATE INDEX OBJECT_PROPERTY_VALUE ON OBJECT_PROPERTY (VALUE); + CREATE UNIQUE INDEX TYPE_TYPENAME ON TYPE (TYPENAME); + CREATE INDEX PROPERTY_TYPE_TARGET_PROPERTY ON PROPERTY_TYPE (TARGET_PROPERTY); + CREATE INDEX PROPERTY_TYPE_TYPE_ID ON PROPERTY_TYPE (TYPE_ID); + CREATE INDEX PROPERTY_TYPE_NAME ON PROPERTY_TYPE (NAME); + CREATE INDEX PROPERTY_TYPE_COLLECTION ON PROPERTY_TYPE (COLLECTION); + CREATE UNIQUE INDEX DEFAULT_OBJECT_DEF_KEY ON DEFAULT_OBJECT (DEF_KEY); + CREATE INDEX DEFAULT_OBJECT_ID ON DEFAULT_OBJECT (ID); + + + -- views + -- workspace view + CREATE OR REPLACE VIEW workspace AS + SELECT a.oid, + a.id, + (SELECT c.value + FROM object_property c, property_type d + WHERE c.oid = a.oid + AND c.property_type = d.oid + AND d.name = 'name') name, + (SELECT e.value + FROM object_property e, property_type f + WHERE e.property_type = f.oid + AND e.oid = (SELECT g.oid + FROM object_property g, property_type h + WHERE g.property_type = h.oid + AND g.value = (SELECT i.value + FROM object_property i, property_type j + WHERE i.oid = a.oid + AND i.property_type = j.oid + AND j.name = 'name') + AND h.name = 'prefix') + AND f.name = 'URI') uri + FROM object a, type b + WHERE a.type_id = b.oid + AND b.typename = 'org.geoserver.catalog.WorkspaceInfo'; + + -- datastore view + CREATE OR REPLACE VIEW datastore AS + SELECT a.oid, + a.id, + (SELECT c.value + FROM object_property c, property_type d + WHERE c.oid = a.oid + AND c.property_type = d.oid + AND d.name = 'name') name, + (SELECT c.value + FROM object_property c, property_type d + WHERE c.oid = a.oid + AND c.property_type = d.oid + AND d.name = 'description') description, + (SELECT c.value + FROM object_property c, property_type d + WHERE c.oid = a.oid + AND c.property_type = d.oid + AND d.name = 'type') type, + (SELECT c.value + FROM object_property c, property_type d + WHERE c.oid = a.oid + AND c.property_type = d.oid + AND d.name = 'enabled') enabled, + (SELECT c.related_oid + FROM object_property c, property_type d + WHERE c.oid = a.oid + AND c.property_type = d.oid + AND d.name = 'workspace.id') workspace + FROM object a, type b + WHERE a.type_id = b.oid + AND b.typename = 'org.geoserver.catalog.DataStoreInfo'; + + -- feature type view + CREATE OR REPLACE VIEW featuretype AS + SELECT a.oid, + a.id, + (SELECT c.value + FROM object_property c, property_type d + WHERE c.oid = a.oid + AND c.property_type = d.oid + AND d.name = 'name') name, + (SELECT c.value + FROM object_property c, property_type d + WHERE c.oid = a.oid + AND c.property_type = d.oid + AND d.name = 'nativeName') native_name, + (SELECT c.value + FROM object_property c, property_type d + WHERE c.oid = a.oid + AND c.property_type = d.oid + AND d.name = 'prefixedName') prefixed_name, + (SELECT c.value + FROM object_property c, property_type d + WHERE c.oid = a.oid + AND c.property_type = d.oid + AND d.name = 'title') title, + (SELECT c.value + FROM object_property c, property_type d + WHERE c.oid = a.oid + AND c.property_type = d.oid + AND d.name = 'abstract') abstract, + (SELECT c.value + FROM object_property c, property_type d + WHERE c.oid = a.oid + AND c.property_type = d.oid + AND d.name = 'SRS') srs, + (SELECT c.value + FROM object_property c, property_type d + WHERE c.oid = a.oid + AND c.property_type = d.oid + AND d.name = 'projectionPolicy') projection_policy, + (SELECT c.value + FROM object_property c, property_type d + WHERE c.oid = a.oid + AND c.property_type = d.oid + AND d.name = 'enabled') enabled, + (SELECT c.related_oid + FROM object_property c, property_type d + WHERE c.oid = a.oid + AND c.property_type = d.oid + AND d.name = 'store.id') store, + (SELECT c.related_oid + FROM object_property c, property_type d + WHERE c.oid = a.oid + AND c.property_type = d.oid + AND d.name = 'namespace.id') namespace + FROM object a, type b + WHERE a.type_id = b.oid + AND b.typename = 'org.geoserver.catalog.FeatureTypeInfo'; + + -- coveragestore view + CREATE OR REPLACE VIEW coveragestore AS + SELECT a.oid, + a.id, + (SELECT c.value + FROM object_property c, property_type d + WHERE c.oid = a.oid + AND c.property_type = d.oid + AND d.name = 'name') name, + (SELECT c.value + FROM object_property c, property_type d + WHERE c.oid = a.oid + AND c.property_type = d.oid + AND d.name = 'description') description, + (SELECT c.value + FROM object_property c, property_type d + WHERE c.oid = a.oid + AND c.property_type = d.oid + AND d.name = 'type') type, + (SELECT c.value + FROM object_property c, property_type d + WHERE c.oid = a.oid + AND c.property_type = d.oid + AND d.name = 'enabled') enabled, + (SELECT c.related_oid + FROM object_property c, property_type d + WHERE c.oid = a.oid + AND c.property_type = d.oid + AND d.name = 'workspace.id') workspace + FROM object a, type b + WHERE a.type_id = b.oid + AND b.typename = 'org.geoserver.catalog.CoverageStoreInfo'; + + -- coverage view + CREATE OR REPLACE VIEW coverage AS + SELECT a.oid, + a.id, + (SELECT c.value + FROM object_property c, property_type d + WHERE c.oid = a.oid + AND c.property_type = d.oid + AND d.name = 'name') name, + (SELECT c.value + FROM object_property c, property_type d + WHERE c.oid = a.oid + AND c.property_type = d.oid + AND d.name = 'nativeName') native_name, + (SELECT c.value + FROM object_property c, property_type d + WHERE c.oid = a.oid + AND c.property_type = d.oid + AND d.name = 'prefixedName') prefixed_name, + (SELECT c.value + FROM object_property c, property_type d + WHERE c.oid = a.oid + AND c.property_type = d.oid + AND d.name = 'title') title, + (SELECT c.value + FROM object_property c, property_type d + WHERE c.oid = a.oid + AND c.property_type = d.oid + AND d.name = 'abstract') abstract, + (SELECT c.value + FROM object_property c, property_type d + WHERE c.oid = a.oid + AND c.property_type = d.oid + AND d.name = 'SRS') srs, + (SELECT c.value + FROM object_property c, property_type d + WHERE c.oid = a.oid + AND c.property_type = d.oid + AND d.name = 'projectionPolicy') projection_policy, + (SELECT c.value + FROM object_property c, property_type d + WHERE c.oid = a.oid + AND c.property_type = d.oid + AND d.name = 'enabled') enabled, + (SELECT c.related_oid + FROM object_property c, property_type d + WHERE c.oid = a.oid + AND c.property_type = d.oid + AND d.name = 'store.id') store, + (SELECT c.related_oid + FROM object_property c, property_type d + WHERE c.oid = a.oid + AND c.property_type = d.oid + AND d.name = 'namespace.id') namespace + FROM object a, type b + WHERE a.type_id = b.oid + AND b.typename = 'org.geoserver.catalog.CoverageInfo'; + + -- wmsstore view + CREATE OR REPLACE VIEW wmsstore AS + SELECT a.oid, + a.id, + (SELECT c.value + FROM object_property c, property_type d + WHERE c.oid = a.oid + AND c.property_type = d.oid + AND d.name = 'name') name, + (SELECT c.value + FROM object_property c, property_type d + WHERE c.oid = a.oid + AND c.property_type = d.oid + AND d.name = 'description') description, + (SELECT c.value + FROM object_property c, property_type d + WHERE c.oid = a.oid + AND c.property_type = d.oid + AND d.name = 'capabilitiesURL') capabilities_url, + (SELECT c.value + FROM object_property c, property_type d + WHERE c.oid = a.oid + AND c.property_type = d.oid + AND d.name = 'type') type, + (SELECT c.value + FROM object_property c, property_type d + WHERE c.oid = a.oid + AND c.property_type = d.oid + AND d.name = 'enabled') enabled, + (SELECT c.related_oid + FROM object_property c, property_type d + WHERE c.oid = a.oid + AND c.property_type = d.oid + AND d.name = 'workspace.id') workspace + FROM object a, type b + WHERE a.type_id = b.oid + AND b.typename = 'org.geoserver.catalog.WMSStoreInfo'; + + -- wms layer view + CREATE OR REPLACE VIEW wmslayer AS + SELECT a.oid, + a.id, + (SELECT c.value + FROM object_property c, property_type d + WHERE c.oid = a.oid + AND c.property_type = d.oid + AND d.name = 'name') name, + (SELECT c.value + FROM object_property c, property_type d + WHERE c.oid = a.oid + AND c.property_type = d.oid + AND d.name = 'nativeName') native_name, + (SELECT c.value + FROM object_property c, property_type d + WHERE c.oid = a.oid + AND c.property_type = d.oid + AND d.name = 'prefixedName') prefixed_name, + (SELECT c.value + FROM object_property c, property_type d + WHERE c.oid = a.oid + AND c.property_type = d.oid + AND d.name = 'title') title, + (SELECT c.value + FROM object_property c, property_type d + WHERE c.oid = a.oid + AND c.property_type = d.oid + AND d.name = 'abstract') abstract, + (SELECT c.value + FROM object_property c, property_type d + WHERE c.oid = a.oid + AND c.property_type = d.oid + AND d.name = 'SRS') srs, + (SELECT c.value + FROM object_property c, property_type d + WHERE c.oid = a.oid + AND c.property_type = d.oid + AND d.name = 'projectionPolicy') projection_policy, + (SELECT c.value + FROM object_property c, property_type d + WHERE c.oid = a.oid + AND c.property_type = d.oid + AND d.name = 'enabled') enabled, + (SELECT c.related_oid + FROM object_property c, property_type d + WHERE c.oid = a.oid + AND c.property_type = d.oid + AND d.name = 'store.id') store, + (SELECT c.related_oid + FROM object_property c, property_type d + WHERE c.oid = a.oid + AND c.property_type = d.oid + AND d.name = 'namespace.id') namespace + FROM object a, type b + WHERE a.type_id = b.oid + AND b.typename = 'org.geoserver.catalog.WMSLayerInfo'; + + -- style view + CREATE OR REPLACE VIEW style AS + SELECT a.oid, + a.id, + (SELECT c.value + FROM object_property c, property_type d + WHERE c.oid = a.oid + AND c.property_type = d.oid + AND d.name = 'name') name, + (SELECT c.value + FROM object_property c, property_type d + WHERE c.oid = a.oid + AND c.property_type = d.oid + AND d.name = 'filename') filename, + (SELECT c.related_oid + FROM object_property c, property_type d + WHERE c.oid = a.oid + AND c.property_type = d.oid + AND d.name = 'workspace.id') workspace + FROM object a, type b + WHERE a.type_id = b.oid + AND b.typename = 'org.geoserver.catalog.StyleInfo'; + + -- layer view + CREATE OR REPLACE VIEW layer AS + SELECT a.oid, + a.id, + (SELECT c.value + FROM object_property c, property_type d + WHERE c.oid = a.oid + AND c.property_type = d.oid + AND d.name = 'name') name, + (SELECT c.value + FROM object_property c, property_type d + WHERE c.oid = a.oid + AND c.property_type = d.oid + AND d.name = 'title') title, + (SELECT c.value + FROM object_property c, property_type d + WHERE c.oid = a.oid + AND c.property_type = d.oid + AND d.name = 'abstract') abstract, + (SELECT c.value + FROM object_property c, property_type d + WHERE c.oid = a.oid + AND c.property_type = d.oid + AND d.name = 'type') type, + (SELECT c.value + FROM object_property c, property_type d + WHERE c.oid = a.oid + AND c.property_type = d.oid + AND d.name = 'enabled') enabled, + (SELECT c.related_oid + FROM object_property c, property_type d + WHERE c.oid = a.oid + AND c.property_type = d.oid + AND d.name = 'defaultStyle.id') default_style, + (SELECT c.related_oid + FROM object_property c, property_type d + WHERE c.oid = a.oid + AND c.property_type = d.oid + AND d.name = 'resource.id') "resource" + FROM object a, type b + WHERE a.type_id = b.oid + AND b.typename = 'org.geoserver.catalog.LayerInfo'; + + -- layergroup styles + CREATE OR REPLACE VIEW layer_style AS + SELECT a.oid, b.related_oid style + FROM object a, object_property b, property_type c, type d + WHERE a.oid = b.oid + AND a.type_id = d.oid + AND b.property_type = c.oid + AND c.name = 'styles.id' + AND d.typename = 'org.geoserver.catalog.LayerInfo'; + + -- layer group view + CREATE OR REPLACE VIEW layergroup AS + SELECT a.oid, + a.id, + (SELECT c.value + FROM object_property c, property_type d + WHERE c.oid = a.oid + AND c.property_type = d.oid + AND d.name = 'name') name, + (SELECT c.value + FROM object_property c, property_type d + WHERE c.oid = a.oid + AND c.property_type = d.oid + AND d.name = 'title') title, + (SELECT c.value + FROM object_property c, property_type d + WHERE c.oid = a.oid + AND c.property_type = d.oid + AND d.name = 'abstract') abstract, + (SELECT c.value + FROM object_property c, property_type d + WHERE c.oid = a.oid + AND c.property_type = d.oid + AND d.name = 'mode') "mode", + (SELECT c.related_oid + FROM object_property c, property_type d + WHERE c.oid = a.oid + AND c.property_type = d.oid + AND d.name = 'workspace.id') workspace + FROM object a, type b + WHERE a.type_id = b.oid + AND b.typename = 'org.geoserver.catalog.LayerGroupInfo'; + + -- layergroup layers + CREATE OR REPLACE VIEW layergroup_layer AS + SELECT a.oid, b.related_oid layer + FROM object a, object_property b, property_type c, type d + WHERE a.oid = b.oid + AND a.type_id = d.oid + AND b.property_type = c.oid + AND c.name = 'layers.id' + AND d.typename = 'org.geoserver.catalog.LayerGroupInfo'; + + -- layergroup styles + CREATE OR REPLACE VIEW layergroup_style AS + SELECT a.oid, b.related_oid style + FROM object a, object_property b, property_type c, type d + WHERE a.oid = b.oid + AND a.type_id = d.oid + AND b.property_type = c.oid + AND c.name = 'styles.id' + AND d.typename = 'org.geoserver.catalog.LayerGroupInfo'; + + -- global view + CREATE OR REPLACE VIEW global AS + SELECT a.oid, + a.id, + (SELECT c.value + FROM object_property c, property_type d + WHERE c.oid = a.oid + AND c.property_type = d.oid + AND d.name = 'featureTypeCacheSize') feature_type_cache_size, + (SELECT c.value + FROM object_property c, property_type d + WHERE c.oid = a.oid + AND c.property_type = d.oid + AND d.name = 'globalServices') global_services, + (SELECT c.value + FROM object_property c, property_type d + WHERE c.oid = a.oid + AND c.property_type = d.oid + AND d.name = 'xmlPostRequestLogBufferSize') xml_post_request_log_buf_len, + (SELECT c.value + FROM object_property c, property_type d + WHERE c.oid = a.oid + AND c.property_type = d.oid + AND d.name = 'updateSequence') update_sequence, + (SELECT c.related_oid + FROM object_property c, property_type d + WHERE c.oid = a.oid + AND c.property_type = d.oid + AND d.name = 'settings.id') settings + FROM object a, type b + WHERE a.type_id = b.oid + AND b.typename = 'org.geoserver.config.GeoServerInfo'; + + -- settings view + CREATE OR REPLACE VIEW settings AS + SELECT a.oid, + a.id, + (SELECT c.value + FROM object_property c, property_type d + WHERE c.oid = a.oid + AND c.property_type = d.oid + AND d.name = 'title') title, + (SELECT c.value + FROM object_property c, property_type d + WHERE c.oid = a.oid + AND c.property_type = d.oid + AND d.name = 'charset') charset, + (SELECT c.value + FROM object_property c, property_type d + WHERE c.oid = a.oid + AND c.property_type = d.oid + AND d.name = 'verbose') verbose, + (SELECT c.value + FROM object_property c, property_type d + WHERE c.oid = a.oid + AND c.property_type = d.oid + AND d.name = 'verboseExceptions') verbose_exceptions, + (SELECT c.value + FROM object_property c, property_type d + WHERE c.oid = a.oid + AND c.property_type = d.oid + AND d.name = 'numDecimals') num_decimals, + (SELECT c.value + FROM object_property c, property_type d + WHERE c.oid = a.oid + AND c.property_type = d.oid + AND d.name = 'onlineResource') online_resource, + (SELECT c.value + FROM object_property c, property_type d + WHERE c.oid = a.oid + AND c.property_type = d.oid + AND d.name = 'proxyBaseUrl') proxy_base_url, + (SELECT c.value + FROM object_property c, property_type d + WHERE c.oid = a.oid + AND c.property_type = d.oid + AND d.name = 'schemaBaseUrl') schema_base_url, + (SELECT c.related_oid + FROM object_property c, property_type d + WHERE c.oid = a.oid + AND c.property_type = d.oid + AND d.name = 'workspace.id') workspace + FROM object a, type b + WHERE a.type_id = b.oid + AND b.typename = 'org.geoserver.config.SettingsInfo'; + + -- service view + CREATE OR REPLACE VIEW service AS + SELECT a.oid, + a.id, + (SELECT c.value + FROM object_property c, property_type d + WHERE c.oid = a.oid + AND c.property_type = d.oid + AND d.name = 'name') name, + (SELECT c.value + FROM object_property c, property_type d + WHERE c.oid = a.oid + AND c.property_type = d.oid + AND d.name = 'title') title, + (SELECT c.value + FROM object_property c, property_type d + WHERE c.oid = a.oid + AND c.property_type = d.oid + AND d.name = 'abstract') abstract, + (SELECT c.value + FROM object_property c, property_type d + WHERE c.oid = a.oid + AND c.property_type = d.oid + AND d.name = 'maintainer') maintainer, + (SELECT c.value + FROM object_property c, property_type d + WHERE c.oid = a.oid + AND c.property_type = d.oid + AND d.name = 'verbose') verbose, + (SELECT c.value + FROM object_property c, property_type d + WHERE c.oid = a.oid + AND c.property_type = d.oid + AND d.name = 'citeCompliant') cite_compliant, + (SELECT c.value + FROM object_property c, property_type d + WHERE c.oid = a.oid + AND c.property_type = d.oid + AND d.name = 'outputStrategy') output_strategy, + (SELECT c.value + FROM object_property c, property_type d + WHERE c.oid = a.oid + AND c.property_type = d.oid + AND d.name = 'onlineResource') online_resource, + (SELECT c.value + FROM object_property c, property_type d + WHERE c.oid = a.oid + AND c.property_type = d.oid + AND d.name = 'schemaBaseURL') schema_base_url, + (SELECT c.value + FROM object_property c, property_type d + WHERE c.oid = a.oid + AND c.property_type = d.oid + AND d.name = 'enabled') enabled, + (SELECT c.related_oid + FROM object_property c, property_type d + WHERE c.oid = a.oid + AND c.property_type = d.oid + AND d.name = 'workspace.id') workspace + FROM object a, type b + WHERE a.type_id = b.oid + AND b.typename = 'org.geoserver.config.ServiceInfo'; + initdb.postgres.sql: "-- tables\nCREATE TABLE object ( \n oid serial NOT NULL, + \n type_id int4 NOT NULL, \n id text NOT NULL, \n blob text NOT NULL, \n PRIMARY + KEY (oid)\n);\n\nCREATE TABLE object_property (\n oid int4 NOT NULL, \n property_type + int4 NOT NULL, \n id text NOT NULL, \n related_oid int4, \n related_property_type + int4, \n colindex int4 NOT NULL, \n value text, \n PRIMARY KEY (oid, property_type, + colindex)\n);\n\nCREATE TABLE type (\n oid serial NOT NULL,\n typename text + NOT NULL, \n PRIMARY KEY (OID)\n);\n\nCREATE TABLE property_type (\n oid serial + NOT NULL, \n target_property int4, \n type_id int4 NOT NULL, \n name text NOT + NULL, \n collection bool NOT NULL, \n text bool NOT NULL, \n PRIMARY KEY (oid)\n);\n\nCREATE + TABLE default_object (\n def_key text NOT NULL, \n id text NOT NULL\n\n);\n\n-- + foreign keys\nALTER TABLE object_property ADD CONSTRAINT fk_object_property \n + \ FOREIGN KEY (oid) REFERENCES object (oid) ON DELETE CASCADE;\n\nALTER TABLE + property_type ADD CONSTRAINT \n fk_type_property_type FOREIGN KEY (type_id) REFERENCES + type (oid);\n\nALTER TABLE object ADD CONSTRAINT \n fk_object_type FOREIGN KEY + (type_id) REFERENCES type (oid);\n\nALTER TABLE property_type ADD CONSTRAINT \n + \ fk_property_type_target_property FOREIGN KEY (target_property) REFERENCES property_type + (oid);\n\nALTER TABLE object_property ADD CONSTRAINT \n fk_object_property_property_type + FOREIGN KEY (property_type) REFERENCES property_type (oid);\n\n-- indexes\nCREATE + INDEX object_type_id_idx ON object (type_id);\nCREATE UNIQUE INDEX object_id_idx + ON object (id);\n\nCREATE INDEX object_property_value_upper_idx ON object_property + (UPPER(value));\nCREATE INDEX object_property_property_type_idx ON object_property + (property_type);\nCREATE INDEX object_property_id_idx ON object_property (id);\nCREATE + INDEX object_property_related_oid_idx ON object_property (related_oid);\nCREATE + INDEX object_property_related_property_type_idx ON object_property (related_property_type);\nCREATE + INDEX object_property_colindex_idx ON object_property (colindex);\nCREATE INDEX + object_property_value_idx ON object_property (value);\n\nCREATE UNIQUE INDEX type_typename_idx + ON type (typename);\n\nCREATE INDEX property_type_target_property_idx ON property_type + (target_property);\nCREATE INDEX property_type_type_id_idx ON property_type (type_id);\nCREATE + INDEX property_type_name_idx ON property_type (name);\nCREATE INDEX property_type_collection_idx + ON property_type (collection);\n\nCREATE INDEX default_object_def_key_idx ON default_object + (def_key);\nCREATE INDEX default_object_id_idx ON default_object (id);\n\n-- views + - note these views are not used at all in code\n-- workspace view \nCREATE OR + REPLACE VIEW workspace AS\nSELECT a.oid, \n a.id, \n (SELECT c.value + \n FROM object_property c, property_type d \n WHERE c.oid = a.oid\n + \ AND c.property_type = d.oid\n AND d.name = 'name') as name, + \n (SELECT e.value\n FROM object_property e, property_type f\n + \ WHERE e.property_type = f.oid\n AND e.oid = (SELECT g.oid \n + \ FROM object_property g, property_type h \n WHERE + g.property_type = h.oid\n AND g.value = (SELECT i.value\n + \ FROM object_property i, property_type + j\n WHERE i.oid = a.oid\n AND + i.property_type = j.oid\n AND j.name + = 'name')\n AND h.name = 'prefix')\n AND f.name + = 'URI') as uri\n FROM object a, type b\n WHERE a.type_id = b.oid\n AND b.typename + = 'org.geoserver.catalog.WorkspaceInfo'; \n \n-- datastore view\nCREATE OR + REPLACE VIEW datastore AS\nSELECT a.oid, \n a.id,\n (SELECT c.value\n + \ FROM object_property c, property_type d\n WHERE c.oid = a.oid\n + \ AND c.property_type = d.oid\n AND d.name = 'name') as name,\n + \ (SELECT c.value\n FROM object_property c, property_type d\n WHERE + c.oid = a.oid\n AND c.property_type = d.oid\n AND d.name = + 'description') as description,\n (SELECT c.value\n FROM object_property + c, property_type d\n WHERE c.oid = a.oid\n AND c.property_type + = d.oid\n AND d.name = 'type') as type,\n (SELECT c.value\n FROM + object_property c, property_type d\n WHERE c.oid = a.oid\n AND + c.property_type = d.oid\n AND d.name = 'enabled') as enabled,\n (SELECT + c.related_oid\n FROM object_property c, property_type d\n WHERE + c.oid = a.oid\n AND c.property_type = d.oid\n AND d.name = + 'workspace.id') workspace\n FROM object a, type b \n WHERE a.type_id = b.oid\n + \ AND b.typename = 'org.geoserver.catalog.DataStoreInfo';\n\n-- feature type + view\nCREATE OR REPLACE VIEW featuretype AS\nSELECT a.oid, \n a.id,\n (SELECT + c.value\n FROM object_property c, property_type d\n WHERE c.oid + = a.oid\n AND c.property_type = d.oid\n AND d.name = 'name') + as name,\n (SELECT c.value\n FROM object_property c, property_type + d\n WHERE c.oid = a.oid\n AND c.property_type = d.oid\n AND + d.name = 'nativeName') as native_name,\n (SELECT c.value\n FROM + object_property c, property_type d\n WHERE c.oid = a.oid\n AND + c.property_type = d.oid\n AND d.name = 'prefixedName') as prefixed_name,\n + \ (SELECT c.value\n FROM object_property c, property_type d\n WHERE + c.oid = a.oid\n AND c.property_type = d.oid\n AND d.name = + 'title') as title,\n (SELECT c.value\n FROM object_property c, + property_type d\n WHERE c.oid = a.oid\n AND c.property_type + = d.oid\n AND d.name = 'abstract') as abstract,\n (SELECT c.value\n + \ FROM object_property c, property_type d\n WHERE c.oid = a.oid\n + \ AND c.property_type = d.oid\n AND d.name = 'SRS') as srs,\n + \ (SELECT c.value\n FROM object_property c, property_type d\n WHERE + c.oid = a.oid\n AND c.property_type = d.oid\n AND d.name = + 'projectionPolicy') as projection_policy,\n (SELECT c.value\n FROM + object_property c, property_type d\n WHERE c.oid = a.oid\n AND + c.property_type = d.oid\n AND d.name = 'enabled') as enabled,\n (SELECT + c.related_oid\n FROM object_property c, property_type d\n WHERE + c.oid = a.oid\n AND c.property_type = d.oid\n AND d.name = + 'store.id') store,\n (SELECT c.related_oid\n FROM object_property + c, property_type d\n WHERE c.oid = a.oid\n AND c.property_type + = d.oid\n AND d.name = 'namespace.id') namespace\n FROM object a, type + b \n WHERE a.type_id = b.oid\n AND b.typename = 'org.geoserver.catalog.FeatureTypeInfo';\n\n-- + coveragestore view\nCREATE OR REPLACE VIEW coveragestore AS\nSELECT a.oid, \n + \ a.id,\n (SELECT c.value\n FROM object_property c, property_type + d\n WHERE c.oid = a.oid\n AND c.property_type = d.oid\n AND + d.name = 'name') as name,\n (SELECT c.value\n FROM object_property + c, property_type d\n WHERE c.oid = a.oid\n AND c.property_type + = d.oid\n AND d.name = 'description') as description,\n (SELECT + c.value\n FROM object_property c, property_type d\n WHERE c.oid + = a.oid\n AND c.property_type = d.oid\n AND d.name = 'type') + as type,\n (SELECT c.value\n FROM object_property c, property_type + d\n WHERE c.oid = a.oid\n AND c.property_type = d.oid\n AND + d.name = 'enabled') as enabled,\n (SELECT c.related_oid\n FROM + object_property c, property_type d\n WHERE c.oid = a.oid\n AND + c.property_type = d.oid\n AND d.name = 'workspace.id') workspace\n FROM + object a, type b \n WHERE a.type_id = b.oid\n AND b.typename = 'org.geoserver.catalog.CoverageStoreInfo';\n\n-- + coverage view\nCREATE OR REPLACE VIEW coverage AS\nSELECT a.oid, \n a.id,\n + \ (SELECT c.value\n FROM object_property c, property_type d\n WHERE + c.oid = a.oid\n AND c.property_type = d.oid\n AND d.name = + 'name') as name,\n (SELECT c.value\n FROM object_property c, property_type + d\n WHERE c.oid = a.oid\n AND c.property_type = d.oid\n AND + d.name = 'nativeName') as native_name,\n (SELECT c.value\n FROM + object_property c, property_type d\n WHERE c.oid = a.oid\n AND + c.property_type = d.oid\n AND d.name = 'prefixedName') as prefixed_name,\n + \ (SELECT c.value\n FROM object_property c, property_type d\n WHERE + c.oid = a.oid\n AND c.property_type = d.oid\n AND d.name = + 'title') as title,\n (SELECT c.value\n FROM object_property c, + property_type d\n WHERE c.oid = a.oid\n AND c.property_type + = d.oid\n AND d.name = 'abstract') as abstract,\n (SELECT c.value\n + \ FROM object_property c, property_type d\n WHERE c.oid = a.oid\n + \ AND c.property_type = d.oid\n AND d.name = 'SRS') as srs,\n + \ (SELECT c.value\n FROM object_property c, property_type d\n WHERE + c.oid = a.oid\n AND c.property_type = d.oid\n AND d.name = + 'projectionPolicy') as projection_policy,\n (SELECT c.value\n FROM + object_property c, property_type d\n WHERE c.oid = a.oid\n AND + c.property_type = d.oid\n AND d.name = 'enabled') as enabled,\n (SELECT + c.related_oid\n FROM object_property c, property_type d\n WHERE + c.oid = a.oid\n AND c.property_type = d.oid\n AND d.name = + 'store.id') store,\n (SELECT c.related_oid\n FROM object_property + c, property_type d\n WHERE c.oid = a.oid\n AND c.property_type + = d.oid\n AND d.name = 'namespace.id') namespace\n FROM object a, type + b \n WHERE a.type_id = b.oid\n AND b.typename = 'org.geoserver.catalog.CoverageInfo';\n\n-- + wmsstore view\nCREATE OR REPLACE VIEW wmsstore AS\nSELECT a.oid, \n a.id,\n + \ (SELECT c.value\n FROM object_property c, property_type d\n WHERE + c.oid = a.oid\n AND c.property_type = d.oid\n AND d.name = + 'name') as name,\n (SELECT c.value\n FROM object_property c, property_type + d\n WHERE c.oid = a.oid\n AND c.property_type = d.oid\n AND + d.name = 'description') as description,\n (SELECT c.value\n FROM + object_property c, property_type d\n WHERE c.oid = a.oid\n AND + c.property_type = d.oid\n AND d.name = 'capabilitiesURL') as capabilities_url,\n + \ (SELECT c.value\n FROM object_property c, property_type d\n WHERE + c.oid = a.oid\n AND c.property_type = d.oid\n AND d.name = + 'type') as type,\n (SELECT c.value\n FROM object_property c, property_type + d\n WHERE c.oid = a.oid\n AND c.property_type = d.oid\n AND + d.name = 'enabled') as enabled,\n (SELECT c.related_oid\n FROM + object_property c, property_type d\n WHERE c.oid = a.oid\n AND + c.property_type = d.oid\n AND d.name = 'workspace.id') workspace\n FROM + object a, type b \n WHERE a.type_id = b.oid\n AND b.typename = 'org.geoserver.catalog.WMSStoreInfo';\n\n-- + wms layer view\nCREATE OR REPLACE VIEW wmslayer AS\nSELECT a.oid, \n a.id,\n + \ (SELECT c.value\n FROM object_property c, property_type d\n WHERE + c.oid = a.oid\n AND c.property_type = d.oid\n AND d.name = + 'name') as name,\n (SELECT c.value\n FROM object_property c, property_type + d\n WHERE c.oid = a.oid\n AND c.property_type = d.oid\n AND + d.name = 'nativeName') as native_name,\n (SELECT c.value\n FROM + object_property c, property_type d\n WHERE c.oid = a.oid\n AND + c.property_type = d.oid\n AND d.name = 'prefixedName') as prefixed_name,\n + \ (SELECT c.value\n FROM object_property c, property_type d\n WHERE + c.oid = a.oid\n AND c.property_type = d.oid\n AND d.name = + 'title') as title,\n (SELECT c.value\n FROM object_property c, + property_type d\n WHERE c.oid = a.oid\n AND c.property_type + = d.oid\n AND d.name = 'abstract') as abstract,\n (SELECT c.value\n + \ FROM object_property c, property_type d\n WHERE c.oid = a.oid\n + \ AND c.property_type = d.oid\n AND d.name = 'SRS') as srs,\n + \ (SELECT c.value\n FROM object_property c, property_type d\n WHERE + c.oid = a.oid\n AND c.property_type = d.oid\n AND d.name = + 'projectionPolicy') as projection_policy,\n (SELECT c.value\n FROM + object_property c, property_type d\n WHERE c.oid = a.oid\n AND + c.property_type = d.oid\n AND d.name = 'enabled') as enabled,\n (SELECT + c.related_oid\n FROM object_property c, property_type d\n WHERE + c.oid = a.oid\n AND c.property_type = d.oid\n AND d.name = + 'store.id') store,\n (SELECT c.related_oid\n FROM object_property + c, property_type d\n WHERE c.oid = a.oid\n AND c.property_type + = d.oid\n AND d.name = 'namespace.id') namespace\n FROM object a, type + b \n WHERE a.type_id = b.oid\n AND b.typename = 'org.geoserver.catalog.WMSLayerInfo';\n\n-- + wmtsstore view\nCREATE OR REPLACE VIEW wmtsstore AS\nSELECT a.oid, \n a.id,\n + \ (SELECT c.value\n FROM object_property c, property_type d\n WHERE + c.oid = a.oid\n AND c.property_type = d.oid\n AND d.name = + 'name') as name,\n (SELECT c.value\n FROM object_property c, property_type + d\n WHERE c.oid = a.oid\n AND c.property_type = d.oid\n AND + d.name = 'description') as description,\n (SELECT c.value\n FROM + object_property c, property_type d\n WHERE c.oid = a.oid\n AND + c.property_type = d.oid\n AND d.name = 'capabilitiesURL') as capabilities_url,\n + \ (SELECT c.value\n FROM object_property c, property_type d\n WHERE + c.oid = a.oid\n AND c.property_type = d.oid\n AND d.name = + 'type') as type,\n (SELECT c.value\n FROM object_property c, property_type + d\n WHERE c.oid = a.oid\n AND c.property_type = d.oid\n AND + d.name = 'enabled') as enabled,\n (SELECT c.related_oid\n FROM + object_property c, property_type d\n WHERE c.oid = a.oid\n AND + c.property_type = d.oid\n AND d.name = 'workspace.id') workspace\n FROM + object a, type b \n WHERE a.type_id = b.oid\n AND b.typename = 'org.geoserver.catalog.WMTSStoreInfo';\n\n-- + wmts layer view\nCREATE OR REPLACE VIEW wmtslayer AS\nSELECT a.oid, \n a.id,\n + \ (SELECT c.value\n FROM object_property c, property_type d\n WHERE + c.oid = a.oid\n AND c.property_type = d.oid\n AND d.name = + 'name') as name,\n (SELECT c.value\n FROM object_property c, property_type + d\n WHERE c.oid = a.oid\n AND c.property_type = d.oid\n AND + d.name = 'nativeName') as native_name,\n (SELECT c.value\n FROM + object_property c, property_type d\n WHERE c.oid = a.oid\n AND + c.property_type = d.oid\n AND d.name = 'prefixedName') as prefixed_name,\n + \ (SELECT c.value\n FROM object_property c, property_type d\n WHERE + c.oid = a.oid\n AND c.property_type = d.oid\n AND d.name = + 'title') as title,\n (SELECT c.value\n FROM object_property c, + property_type d\n WHERE c.oid = a.oid\n AND c.property_type + = d.oid\n AND d.name = 'abstract') as abstract,\n (SELECT c.value\n + \ FROM object_property c, property_type d\n WHERE c.oid = a.oid\n + \ AND c.property_type = d.oid\n AND d.name = 'SRS') as srs,\n + \ (SELECT c.value\n FROM object_property c, property_type d\n WHERE + c.oid = a.oid\n AND c.property_type = d.oid\n AND d.name = + 'projectionPolicy') as projection_policy,\n (SELECT c.value\n FROM + object_property c, property_type d\n WHERE c.oid = a.oid\n AND + c.property_type = d.oid\n AND d.name = 'enabled') as enabled,\n (SELECT + c.related_oid\n FROM object_property c, property_type d\n WHERE + c.oid = a.oid\n AND c.property_type = d.oid\n AND d.name = + 'store.id') store,\n (SELECT c.related_oid\n FROM object_property + c, property_type d\n WHERE c.oid = a.oid\n AND c.property_type + = d.oid\n AND d.name = 'namespace.id') namespace\n FROM object a, type + b \n WHERE a.type_id = b.oid\n AND b.typename = 'org.geoserver.catalog.WMTSLayerInfo';\n\n-- + style view\nCREATE OR REPLACE VIEW style AS\nSELECT a.oid, \n a.id,\n (SELECT + c.value\n FROM object_property c, property_type d\n WHERE c.oid + = a.oid\n AND c.property_type = d.oid\n AND d.name = 'name') + as name,\n (SELECT c.value\n FROM object_property c, property_type + d\n WHERE c.oid = a.oid\n AND c.property_type = d.oid\n AND + d.name = 'filename') as filename,\n (SELECT c.related_oid\n FROM + object_property c, property_type d\n WHERE c.oid = a.oid\n AND + c.property_type = d.oid\n AND d.name = 'workspace.id') workspace\n FROM + object a, type b \n WHERE a.type_id = b.oid\n AND b.typename = 'org.geoserver.catalog.StyleInfo';\n\n-- + layer view\nCREATE OR REPLACE VIEW layer AS\nSELECT a.oid, \n a.id,\n (SELECT + c.value\n FROM object_property c, property_type d\n WHERE c.oid + = a.oid\n AND c.property_type = d.oid\n AND d.name = 'name') + as name,\n (SELECT c.value\n FROM object_property c, property_type + d\n WHERE c.oid = a.oid\n AND c.property_type = d.oid\n AND + d.name = 'title') as title,\n (SELECT c.value\n FROM object_property + c, property_type d\n WHERE c.oid = a.oid\n AND c.property_type + = d.oid\n AND d.name = 'abstract') as abstract,\n (SELECT c.value\n + \ FROM object_property c, property_type d\n WHERE c.oid = a.oid\n + \ AND c.property_type = d.oid\n AND d.name = 'type') as type,\n + \ (SELECT c.value\n FROM object_property c, property_type d\n WHERE + c.oid = a.oid\n AND c.property_type = d.oid\n AND d.name = + 'enabled') as enabled,\n (SELECT c.related_oid\n FROM object_property + c, property_type d\n WHERE c.oid = a.oid\n AND c.property_type + = d.oid\n AND d.name = 'defaultStyle.id') default_style,\n (SELECT + c.related_oid\n FROM object_property c, property_type d\n WHERE + c.oid = a.oid\n AND c.property_type = d.oid\n AND d.name = + 'resource.id') resource\n FROM object a, type b \n WHERE a.type_id = b.oid\n + \ AND b.typename = 'org.geoserver.catalog.LayerInfo';\n\n-- layergroup styles\nCREATE + OR REPLACE VIEW layer_style AS\nSELECT a.oid, b.related_oid as style\n FROM object + a, object_property b, property_type c, type d \n WHERE a.oid = b.oid \n AND + a.type_id = d.oid\n AND b.property_type = c.oid\n AND c.name = 'styles.id'\n + \ AND d.typename = 'org.geoserver.catalog.LayerInfo';\n\n-- layer group view\nCREATE + OR REPLACE VIEW layergroup AS\nSELECT a.oid, \n a.id,\n (SELECT c.value\n + \ FROM object_property c, property_type d\n WHERE c.oid = a.oid\n + \ AND c.property_type = d.oid\n AND d.name = 'name') as name,\n + \ (SELECT c.value\n FROM object_property c, property_type d\n WHERE + c.oid = a.oid\n AND c.property_type = d.oid\n AND d.name = + 'title') as title,\n (SELECT c.value\n FROM object_property c, + property_type d\n WHERE c.oid = a.oid\n AND c.property_type + = d.oid\n AND d.name = 'abstract') as abstract,\n (SELECT c.value\n + \ FROM object_property c, property_type d\n WHERE c.oid = a.oid\n + \ AND c.property_type = d.oid\n AND d.name = 'mode') as mode,\n + \ (SELECT c.related_oid\n FROM object_property c, property_type + d\n WHERE c.oid = a.oid\n AND c.property_type = d.oid\n AND + d.name = 'workspace.id') workspace\n FROM object a, type b \n WHERE a.type_id + = b.oid\n AND b.typename = 'org.geoserver.catalog.LayerGroupInfo';\n\n-- layergroup + layers\nCREATE OR REPLACE VIEW layergroup_layer AS\nSELECT a.oid, b.related_oid + as layer\n FROM object a, object_property b, property_type c, type d \n WHERE + a.oid = b.oid \n AND a.type_id = d.oid\n AND b.property_type = c.oid\n AND + c.name = 'layers.id'\n AND d.typename = 'org.geoserver.catalog.LayerGroupInfo';\n + \ \n-- layergroup styles\nCREATE OR REPLACE VIEW layergroup_style AS\nSELECT a.oid, + b.related_oid as style\n FROM object a, object_property b, property_type c, type + d \n WHERE a.oid = b.oid \n AND a.type_id = d.oid\n AND b.property_type = + c.oid\n AND c.name = 'styles.id'\n AND d.typename = 'org.geoserver.catalog.LayerGroupInfo';\n\n-- + global view\nCREATE OR REPLACE VIEW global AS\nSELECT a.oid, \n a.id,\n + \ (SELECT c.value\n FROM object_property c, property_type d\n WHERE + c.oid = a.oid\n AND c.property_type = d.oid\n AND d.name = + 'featureTypeCacheSize') as feature_type_cache_size,\n (SELECT c.value\n + \ FROM object_property c, property_type d\n WHERE c.oid = a.oid\n + \ AND c.property_type = d.oid\n AND d.name = 'globalServices') + as global_services,\n (SELECT c.value\n FROM object_property c, + property_type d\n WHERE c.oid = a.oid\n AND c.property_type + = d.oid\n AND d.name = 'xmlPostRequestLogBufferSize') as xml_post_request_log_buffer_size,\n + \ (SELECT c.value\n FROM object_property c, property_type d\n WHERE + c.oid = a.oid\n AND c.property_type = d.oid\n AND d.name = + 'updateSequence') as update_sequence,\n (SELECT c.related_oid\n FROM + object_property c, property_type d\n WHERE c.oid = a.oid\n AND + c.property_type = d.oid\n AND d.name = 'settings.id') as settings\n + \ FROM object a, type b \n WHERE a.type_id = b.oid\n AND b.typename = 'org.geoserver.config.GeoServerInfo';\n\n-- + settings view\nCREATE OR REPLACE VIEW settings AS\nSELECT a.oid,\n a.id,\n + \ (SELECT c.value\n FROM object_property c, property_type d\n WHERE + c.oid = a.oid\n AND c.property_type = d.oid\n AND d.name = + 'title') as title,\n (SELECT c.value\n FROM object_property c, + property_type d\n WHERE c.oid = a.oid\n AND c.property_type + = d.oid\n AND d.name = 'charset') as charset,\n (SELECT c.value\n + \ FROM object_property c, property_type d\n WHERE c.oid = a.oid\n + \ AND c.property_type = d.oid\n AND d.name = 'verbose') as + verbose,\n (SELECT c.value\n FROM object_property c, property_type + d\n WHERE c.oid = a.oid\n AND c.property_type = d.oid\n AND + d.name = 'verboseExceptions') as verbose_exceptions,\n (SELECT c.value\n + \ FROM object_property c, property_type d\n WHERE c.oid = a.oid\n + \ AND c.property_type = d.oid\n AND d.name = 'numDecimals') + as num_decimals,\n (SELECT c.value\n FROM object_property c, property_type + d\n WHERE c.oid = a.oid\n AND c.property_type = d.oid\n AND + d.name = 'onlineResource') as online_resource,\n (SELECT c.value\n FROM + object_property c, property_type d\n WHERE c.oid = a.oid\n AND + c.property_type = d.oid\n AND d.name = 'proxyBaseUrl') as proxy_base_url,\n + \ (SELECT c.value\n FROM object_property c, property_type d\n WHERE + c.oid = a.oid\n AND c.property_type = d.oid\n AND d.name = + 'schemaBaseUrl') as schema_base_url,\n (SELECT c.related_oid\n FROM + object_property c, property_type d\n WHERE c.oid = a.oid\n AND + c.property_type = d.oid\n AND d.name = 'workspace.id') as workspace\n + \ FROM object a, type b \n WHERE a.type_id = b.oid\n AND b.typename = 'org.geoserver.config.SettingsInfo';\n\n-- + service view\nCREATE OR REPLACE VIEW service AS\nSELECT a.oid, \n a.id,\n + \ (SELECT c.value\n FROM object_property c, property_type d\n WHERE + c.oid = a.oid\n AND c.property_type = d.oid\n AND d.name = + 'name') as name,\n (SELECT c.value\n FROM object_property c, property_type + d\n WHERE c.oid = a.oid\n AND c.property_type = d.oid\n AND + d.name = 'title') as title,\n (SELECT c.value\n FROM object_property + c, property_type d\n WHERE c.oid = a.oid\n AND c.property_type + = d.oid\n AND d.name = 'abstract') as abstract,\n (SELECT c.value\n + \ FROM object_property c, property_type d\n WHERE c.oid = a.oid\n + \ AND c.property_type = d.oid\n AND d.name = 'maintainer') + as maintainer,\n (SELECT c.value\n FROM object_property c, property_type + d\n WHERE c.oid = a.oid\n AND c.property_type = d.oid\n AND + d.name = 'verbose') as verbose,\n (SELECT c.value\n FROM object_property + c, property_type d\n WHERE c.oid = a.oid\n AND c.property_type + = d.oid\n AND d.name = 'citeCompliant') as cite_compliant,\n (SELECT + c.value\n FROM object_property c, property_type d\n WHERE c.oid + = a.oid\n AND c.property_type = d.oid\n AND d.name = 'outputStrategy') + as output_strategy,\n (SELECT c.value\n FROM object_property c, + property_type d\n WHERE c.oid = a.oid\n AND c.property_type + = d.oid\n AND d.name = 'onlineResource') as online_resource,\n (SELECT + c.value\n FROM object_property c, property_type d\n WHERE c.oid + = a.oid\n AND c.property_type = d.oid\n AND d.name = 'schemaBaseURL') + as schema_base_url,\n (SELECT c.value\n FROM object_property c, + property_type d\n WHERE c.oid = a.oid\n AND c.property_type + = d.oid\n AND d.name = 'enabled') as enabled,\n (SELECT c.related_oid\n + \ FROM object_property c, property_type d\n WHERE c.oid = a.oid\n + \ AND c.property_type = d.oid\n AND d.name = 'workspace.id') + as workspace\n FROM object a, type b \n WHERE a.type_id = b.oid\n AND b.typename + = 'org.geoserver.config.ServiceInfo';\n" +kind: ConfigMap +metadata: + creationTimestamp: null + name: jdbcconfig-scripts diff --git a/geoserver/latest/templates/jdbcconfig/jdbcstore-scripts.yaml b/geoserver/latest/templates/jdbcconfig/jdbcstore-scripts.yaml new file mode 100644 index 0000000..287d69f --- /dev/null +++ b/geoserver/latest/templates/jdbcconfig/jdbcstore-scripts.yaml @@ -0,0 +1,54 @@ +apiVersion: v1 +data: + drop.h2.sql: | + DROP TABLE resources CASCADE; + drop.postgres.sql: | + DROP TABLE resources CASCADE; + init.h2.sql: |+ + CREATE TABLE resources + ( + oid integer AUTO_INCREMENT NOT NULL, + name character varying NOT NULL, + parent integer, + last_modified timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + content binary, + CONSTRAINT resources_pkey PRIMARY KEY (oid), + CONSTRAINT resources_parent_fkey FOREIGN KEY (parent) + REFERENCES resources (oid) + ON UPDATE RESTRICT ON DELETE CASCADE, + CONSTRAINT resources_parent_name_key UNIQUE (parent, name), + CONSTRAINT resources_only_one_root_check CHECK (parent IS NOT NULL OR oid = 0) + ); + + CREATE INDEX resources_parent_name_idx + ON resources (parent NULLS FIRST, name NULLS FIRST); + + INSERT INTO resources (oid, name, parent, content) VALUES (0, '', NULL, NULL); + + ALTER TABLE resources ALTER COLUMN oid RESTART WITH 1; + + init.postgres.sql: |+ + CREATE TABLE resources + ( + oid serial NOT NULL, + name character varying NOT NULL, + parent integer, + last_modified timestamp without time zone NOT NULL DEFAULT timezone('UTC'::text, now()), + content bytea, + CONSTRAINT resources_pkey PRIMARY KEY (oid), + CONSTRAINT resources_parent_fkey FOREIGN KEY (parent) + REFERENCES resources (oid) + ON UPDATE RESTRICT ON DELETE CASCADE, + CONSTRAINT resources_parent_name_key UNIQUE (parent, name), + CONSTRAINT resources_only_one_root_check CHECK (parent IS NOT NULL OR oid = 0) + ); + + CREATE INDEX resources_parent_name_idx + ON resources (parent NULLS FIRST, name NULLS FIRST); + + INSERT INTO resources (oid, name, parent, content) VALUES (0, '', NULL, NULL); + +kind: ConfigMap +metadata: + creationTimestamp: null + name: jdbcstore-scripts diff --git a/geoserver/latest/templates/jdbcconfig/svc-standalone-hz.yaml b/geoserver/latest/templates/jdbcconfig/svc-standalone-hz.yaml new file mode 100644 index 0000000..9af5510 --- /dev/null +++ b/geoserver/latest/templates/jdbcconfig/svc-standalone-hz.yaml @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: Service +metadata: + name: standalone-hz +spec: + selector: + {{- include "geoserver.selectorLabels" . | nindent 4 }} + ports: + - protocol: TCP + port: 5702 + targetPort: 5702 + type: ClusterIP diff --git a/geoserver/latest/templates/statefulset.yaml b/geoserver/latest/templates/statefulset.yaml index 8490000..370651c 100644 --- a/geoserver/latest/templates/statefulset.yaml +++ b/geoserver/latest/templates/statefulset.yaml @@ -51,8 +51,10 @@ spec: {{- end }} volumeMounts: + {{- if .Values.persistence.datadir }} - name: gs-datadir mountPath: /var/geoserver/datadir + {{- end }} - name: gs-memdumps mountPath: $(GEOSERVER_HEAP_DUMP_DIR) - name: gs-audits @@ -177,7 +179,7 @@ spec: httpGet: path: /geoserver/index.html port: http - failureThreshold: 36 + failureThreshold: 66 periodSeconds: 10 livenessProbe: httpGet: @@ -193,6 +195,22 @@ spec: resources: {{- toYaml .Values.resources | nindent 12 }} volumeMounts: + - name: cm-jdbc-initial + mountPath: /var/geoserver/datadir/jdbcconfig/jdbcconfig.properties + subPath: jdbc.properties + - name: cm-jdbcstore-initial + mountPath: /var/geoserver/datadir/jdbcstore/jdbcstore.properties + subPath: jdbc.properties + - name: jdbcconfig-scripts + mountPath: /var/geoserver/datadir/jdbcconfig/scripts/ + - name: jdbcstore-scripts + mountPath: /var/geoserver/datadir/jdbcstore/scripts/ + - name: cluster-properties + mountPath: /var/geoserver/datadir/cluster/cluster.properties + subPath: cluster.properties + - name: hazelcast-xml + mountPath: /var/geoserver/datadir/cluster/hazelcast.xml + subPath: hazelcast.xml - name: context mountPath: /usr/local/tomcat/conf/context.xml subPath: context.xml @@ -205,8 +223,10 @@ spec: mountPath: /usr/local/tomcat/conf/server.xml subPath: server.xml readOnly: true + {{- if .Values.persistence.datadir }} - name: gs-datadir mountPath: /var/geoserver/datadir + {{- end }} - name: gs-memdumps mountPath: /var/geoserver/memory_dumps - name: gs-audits @@ -255,30 +275,72 @@ spec: {{- end }} {{- end }} volumes: + - name: cluster-properties + configMap: + name: cluster-properties + - name: hazelcast-xml + configMap: + name: hazelcast-xml + - name: cm-jdbc-initial + configMap: + name: cm-jdbc-initial + - name: cm-jdbc-init-import + configMap: + name: cm-jdbc-init-import + - name: cm-jdbc-enabled + configMap: + name: cm-jdbc-enabled + - name: cm-jdbcstore-initial + configMap: + name: cm-jdbcstore-initial + - name: cm-jdbcstore-init-import + configMap: + name: cm-jdbcstore-init-import + - name: cm-jdbcstore-enabled + configMap: + name: cm-jdbcstore-enabled + - name: jdbcconfig-scripts + configMap: + name: jdbcconfig-scripts + - name: jdbcstore-scripts + configMap: + name: jdbcstore-scripts {{- if .Values.persistence.datadir }} - name: gs-datadir persistentVolumeClaim: claimName: {{ include "geoserver.fullname" . }}-datadir {{- end }} - {{- if .Values.persistence.memdumps }} - name: gs-memdumps + {{- if .Values.persistence.memdumps }} persistentVolumeClaim: claimName: {{ include "geoserver.fullname" . }}-memdumps + {{ else }} + hostPath: + path: /var/geoserver/memdumps {{- end }} - {{- if .Values.persistence.logs }} - name: gs-logs + {{- if .Values.persistence.logs }} persistentVolumeClaim: claimName: {{ include "geoserver.fullname" . }}-logs + {{ else }} + hostPath: + path: /var/geoserver/logs {{- end }} - {{- if .Values.persistence.tomcatlogs }} - name: gs-tomcatlogs + {{- if .Values.persistence.tomcatlogs }} persistentVolumeClaim: claimName: {{ include "geoserver.fullname" . }}-tomcatlogs + {{ else }} + hostPath: + path: /var/geoserver/tomcatlogs/ {{- end }} - {{- if .Values.persistence.audits }} - name: gs-audits + {{- if .Values.persistence.audits }} persistentVolumeClaim: claimName: {{ include "geoserver.fullname" . }}-audits + {{ else }} + hostPath: + path: /var/geoserver/audits {{- end }} - name: context secret: