<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns="http://fdomysql.osgeo.org/schemas" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:mysql="http://fdomysql.osgeo.org/schemas" xmlns:rdb="http://fdordbms.osgeo.org/schemas" xmlns:fdo="http://fdo.osgeo.org/schemas" targetNamespace="http://fdomysql.osgeo.org/schemas" elementFormDefault="qualified" attributeFormDefault="unqualified">
	<xs:import namespace="http://fdordbms.osgeo.org/schemas" schemaLocation="FDORdbmsOverride.xsd"/>
	<xs:import namespace="http://fdo.osgeo.org/schemas" schemaLocation="FdoOverride.xsd"/>
	<xs:element name="SchemaMapping" type="SchemaMappingType" abstract="false" substitutionGroup="fdo:PhysicalSchemaMapping">
		<xs:annotation>
			<xs:documentation>Schema Override Set for the FDO MySQL Provider.</xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:element name="complexType" type="complexTypeType" abstract="false">
		<xs:annotation>
			<xs:documentation>MySQL Provider class override.</xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:element name="element" type="elementType" abstract="false">
		<xs:annotation>
			<xs:documentation>MySQL Provider property override.</xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:element name="Table" type="TableType" abstract="false">
		<xs:annotation>
			<xs:documentation>Class Table override</xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:element name="Column" type="ColumnType" abstract="false">
		<xs:annotation>
			<xs:documentation>Data Property Column override</xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:element name="GeometricColumn" type="GeometricColumnType" abstract="false">
		<xs:annotation>
			<xs:documentation>Geometric Property Column override</xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:element name="PropertyMapping" type="PropertyMappingType" abstract="true">
		<xs:annotation>
			<xs:documentation>Object Property Table overrides</xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:element name="PropertyMappingSingle" type="PropertyMappingSingleType" abstract="false" substitutionGroup="PropertyMapping">
		<xs:annotation>
			<xs:documentation>Object property embedded in containing class table.</xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:element name="PropertyMappingRelation" type="PropertyMappingRelationType" abstract="true">
		<xs:annotation>
			<xs:documentation>Relational type Object Property Mapping.</xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:element name="PropertyMappingConcrete" type="PropertyMappingConcreteType" abstract="false" substitutionGroup="PropertyMapping">
		<xs:annotation>
			<xs:documentation>Concrete type Object Property Mapping.</xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:complexType name="SchemaMappingType" abstract="false">
		<xs:complexContent>
			<xs:extension base="SchemaMappingBaseType">
				<xs:sequence>
					<xs:element ref="complexType" minOccurs="0" maxOccurs="unbounded"/>
				</xs:sequence>
				<xs:attribute name="database" type="fdo:NameType" use="optional">
					<xs:annotation>
						<xs:documentation>Default MySQL named database for tables in this feature schema.
                            The default is the current database.
                         </xs:documentation>
					</xs:annotation>
				</xs:attribute>
				<xs:attribute name="dataDirectory" type="fdo:NameType" use="optional">
					<xs:annotation>
						<xs:documentation>Default directory in which to store tables that were created during ApplySchema.
                            Must be an absolute path, not a relative path.
                        </xs:documentation>
					</xs:annotation>
				</xs:attribute>
				<xs:attribute name="indexDirectory" type="fdo:NameType" use="optional">
					<xs:annotation>
						<xs:documentation>Default directory in which to store table indexes that were created during ApplySchema.
                            Must be an absolute path, not a relative path.
                        </xs:documentation>
					</xs:annotation>
				</xs:attribute>
				<xs:attribute name="storageEngine" type="storageEngineType" use="optional">
					<xs:annotation>
						<xs:documentation>Default storage engine to use when creating new tables during ApplySchema.</xs:documentation>
					</xs:annotation>
				</xs:attribute>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="SchemaMappingBaseType" abstract="false">
		<xs:annotation>
			<xs:documentation>Restricts an MySQL Schema Mapping set to have the right default provider name.</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:restriction base="rdb:SchemaMappingType">
				<xs:attribute name="name" type="fdo:NameType" use="required"/>
				<xs:attribute name="provider" type="fdo:ProviderType" use="required" default="OSGeo.MySQL.3.2"/>
				<xs:attribute name="tableMapping" type="rdb:TableMappingType"/>
			</xs:restriction>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="complexTypeType" abstract="false">
		<xs:complexContent>
			<xs:extension base="rdb:complexTypeType">
				<xs:sequence>
					<xs:element ref="Table" minOccurs="0"/>
					<xs:element ref="GeometricColumn" minOccurs="0">
						<xs:annotation>
							<xs:documentation>Column for GeometryProperty for class.</xs:documentation>
							<xs:documentation>This override is only applicable to Feature classes.</xs:documentation>
						</xs:annotation>
					</xs:element>
					<xs:element ref="element" minOccurs="0" maxOccurs="unbounded"/>
				</xs:sequence>
				<xs:attribute name="autoIncrementPropertyName" type="fdo:NameType" use="optional">
					<xs:annotation>
						<xs:documentation>Which FDO property (if any) maps to an auto-increment column.</xs:documentation>
						<xs:documentation>If there is no auto-increment column, this should be an empty string.</xs:documentation>
					</xs:annotation>
				</xs:attribute>
				<xs:attribute name="autoIncrementSeed" type="xs:integer" use="optional">
					<xs:annotation>
						<xs:documentation>The initial value for the auto-increment column.  This override is only 
                            valid if the autoIncrementProperty override is set and is not an empty string.
                        </xs:documentation>
					</xs:annotation>
				</xs:attribute>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="elementType" abstract="false">
		<xs:complexContent>
			<xs:extension base="fdo:SchemaMappingElement">
				<xs:sequence>
					<xs:choice minOccurs="0">
						<xs:annotation>
							<xs:documentation>One of the following overrides can be specified, depending on the element's property type.</xs:documentation>
						</xs:annotation>
						<xs:sequence>
							<xs:annotation>
								<xs:documentation>These overrides are only applicable to Data properties</xs:documentation>
							</xs:annotation>
							<xs:element ref="Column"/>
							<xs:element ref="ValidPropertyValueConstraintType" minOccurs="0"/>
						</xs:sequence>
						<xs:element ref="GeometricColumn">
							<xs:annotation>
								<xs:documentation>This override is only applicable to Geometric properties</xs:documentation>
							</xs:annotation>
						</xs:element>
						<xs:element ref="PropertyMapping">
							<xs:annotation>
								<xs:documentation>This override is only applicable to Object properties</xs:documentation>
							</xs:annotation>
						</xs:element>
					</xs:choice>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="TableType" abstract="false">
		<xs:complexContent>
			<xs:extension base="rdb:TableType">
				<xs:attribute name="database" type="fdo:NameType" use="optional">
					<xs:annotation>
						<xs:documentation>MySQL database where this table resides. The default is SchemaMappingType/@database.</xs:documentation>
					</xs:annotation>
				</xs:attribute>
				<xs:attribute name="dataDirectory" type="fdo:NameType" use="optional">
					<xs:annotation>
						<xs:documentation>The directory in which to this table is stored.
                            Must be an absolute path, not a relative path.
                        </xs:documentation>
					</xs:annotation>
				</xs:attribute>
				<xs:attribute name="indexDirectory" type="fdo:NameType" use="optional">
					<xs:annotation>
						<xs:documentation>The directory in which this table's indexes are stored.
                            Must be an absolute path, not a relative path.
                        </xs:documentation>
					</xs:annotation>
				</xs:attribute>
				<xs:attribute name="storageEngine" type="storageEngineType" use="optional">
					<xs:annotation>
						<xs:documentation>The storage engine this table uses.</xs:documentation>
					</xs:annotation>
				</xs:attribute>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="ColumnType" abstract="false">
		<xs:complexContent>
			<xs:extension base="rdb:ColumnType">
				<xs:attribute name="formula" type="xs:string"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="GeometricColumnType" abstract="false">
		<xs:annotation>
			<xs:documentation>The geometric column overrides.</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="fdo:SchemaMappingElement"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:simpleType name="storageEngineType">
		<xs:restriction base="xs:string">
			<xs:annotation>
				<xs:documentation>This override represents the storage entine type for a MySQL table.</xs:documentation>
			</xs:annotation>
			<xs:enumeration value="MyISAM"/>
			<xs:enumeration value="ISAM"/>
			<xs:enumeration value="InnoDB"/>
			<xs:enumeration value="BDB"/>
			<xs:enumeration value="Merge"/>
			<xs:enumeration value="Memory"/>
			<xs:enumeration value="Federated"/>
			<xs:enumeration value="Archive"/>
			<xs:enumeration value="CSV"/>
			<xs:enumeration value="Example"/>
			<xs:enumeration value="NDBClustered"/>
			<xs:enumeration value="Unknown"/>
			<xs:enumeration value="Default"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:complexType name="PropertyMappingType" abstract="true"/>
	<xs:complexType name="PropertyMappingSingleType" abstract="false">
		<xs:complexContent>
			<xs:extension base="PropertyMappingType">
				<xs:attribute name="prefix" type="xs:string"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="PropertyMappingRelationType" abstract="true">
		<xs:complexContent>
			<xs:extension base="PropertyMappingType">
				<xs:sequence>
					<xs:element ref="Table" minOccurs="0">
						<xs:annotation>
							<xs:documentation>Overrides for Object Property table</xs:documentation>
						</xs:annotation>
					</xs:element>
					<xs:element ref="element" minOccurs="0" maxOccurs="unbounded">
						<xs:annotation>
							<xs:documentation>Overrides for each column in Object Property table</xs:documentation>
						</xs:annotation>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="PropertyMappingConcreteType" abstract="false">
		<xs:complexContent>
			<xs:extension base="PropertyMappingRelationType"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="ValidPropertyValueConstraintType" abstract="false">
		<xs:complexContent>
			<xs:extension base="rdb:ValidPropertyValueConstraintType"/>
		</xs:complexContent>
	</xs:complexType>
</xs:schema>
