Skip to content

Commit

Permalink
Add spatial data type and license details, adjust source/sink settings
Browse files Browse the repository at this point in the history
  • Loading branch information
mxsm committed Dec 5, 2023
1 parent 9154a75 commit 06d2939
Show file tree
Hide file tree
Showing 11 changed files with 181 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@
import org.apache.eventmesh.connector.jdbc.table.catalog.mysql.MysqlOptions.MysqlTableOptions;
import org.apache.eventmesh.connector.jdbc.type.Type;
import org.apache.eventmesh.connector.jdbc.type.mysql.BitType;
import org.apache.eventmesh.connector.jdbc.type.mysql.BytesType;
import org.apache.eventmesh.connector.jdbc.type.mysql.DecimalType;
import org.apache.eventmesh.connector.jdbc.type.mysql.EnumType;
import org.apache.eventmesh.connector.jdbc.type.mysql.IntType;
Expand Down Expand Up @@ -113,6 +114,7 @@ public void init() {
registerType(DecimalType.INSTANCE);
//override YearEventMeshDateType
registerType(YearType.INSTANCE);
registerType(BytesType.INSTANCE);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ public EventMeshDataType deserialize(JsonParser jsonParser, DeserializationConte
Iterator<Entry<String, JsonNode>> fields = treeNode.fields();
while (fields.hasNext()) {
Map.Entry<String, JsonNode> field = fields.next();
if (StringUtils.equals("dataType", field.getKey())) {
if (StringUtils.equals("eventMeshDataType", field.getKey())) {
String value = field.getValue().asText();
return EventMeshTypeNameConverter.ofEventMeshDataType(value);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,20 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package org.apache.eventmesh.connector.jdbc.type;

import org.apache.eventmesh.connector.jdbc.table.catalog.Column;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@

package org.apache.eventmesh.connector.jdbc.type.eventmesh;

import org.apache.eventmesh.connector.jdbc.dialect.DatabaseDialect;
import org.apache.eventmesh.connector.jdbc.table.catalog.Column;
import org.apache.eventmesh.connector.jdbc.table.type.SQLType;
import org.apache.eventmesh.connector.jdbc.type.AbstractType;

Expand All @@ -28,7 +30,7 @@ public class BytesEventMeshDataType extends AbstractType<byte[]> {

public static final BytesEventMeshDataType INSTANCE = new BytesEventMeshDataType();

private BytesEventMeshDataType() {
public BytesEventMeshDataType() {
super(byte[].class, SQLType.BINARY, "BYTES");
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,20 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package org.apache.eventmesh.connector.jdbc.type.mysql;

import org.apache.eventmesh.connector.jdbc.dialect.DatabaseDialect;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,20 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package org.apache.eventmesh.connector.jdbc.type.mysql;

import org.apache.eventmesh.connector.jdbc.dialect.DatabaseDialect;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
package org.apache.eventmesh.connector.jdbc.type.mysql;

import org.apache.eventmesh.connector.jdbc.dialect.DatabaseDialect;
import org.apache.eventmesh.connector.jdbc.table.catalog.Column;
import org.apache.eventmesh.connector.jdbc.type.eventmesh.BytesEventMeshDataType;

import java.util.Arrays;
import java.util.List;
import java.util.Optional;


public class BytesType extends BytesEventMeshDataType {

public static final BytesType INSTANCE = new BytesType();

private static final List<String> BINARY_REGISTRATION_KEYS = Arrays.asList("BINARY", "binary", "VARBINARY", "varbinary");

private static final List<String> BLOB_REGISTRATION_KEYS = Arrays.asList("TINYBLOB", "tinyblob", "BLOB", "blob", "MEDIUMBLOB", "mediumblob",
"LONGBLOB", "longblob");

@Override
public List<String> ofRegistrationKeys() {
final List<String> registrationCodes = super.ofRegistrationKeys();
registrationCodes.addAll(BINARY_REGISTRATION_KEYS);
registrationCodes.addAll(BLOB_REGISTRATION_KEYS);
return registrationCodes;
}

public String getDefaultValue(DatabaseDialect<?> databaseDialect, Column<?> column) {
//https://dev.mysql.com/doc/refman/8.0/en/blob.html
//BLOB and TEXT columns cannot have DEFAULT values
if (BLOB_REGISTRATION_KEYS.contains(column.getNativeType())) {
return "";
}
// binary use hex string,e.g: 0x01020304
return column.getDefaultValue() != null ? "Ox" + column.getDefaultValue() : "NULL";
}

public String getTypeName(Column<?> column) {
if (BLOB_REGISTRATION_KEYS.contains(column.getNativeType())) {
return column.getNativeType();
}
if (BINARY_REGISTRATION_KEYS.contains(column.getNativeType())) {
final int lengthValue = Optional.ofNullable(column.getColumnLength()).orElse(1L).intValue();
return String.format("%s(%d)", column.getNativeType(), lengthValue);
}
return "binary(1)";
}
}
Original file line number Diff line number Diff line change
@@ -1,3 +1,20 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package org.apache.eventmesh.connector.jdbc.type.mysql;

import org.apache.eventmesh.connector.jdbc.dialect.DatabaseDialect;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,20 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package org.apache.eventmesh.connector.jdbc.type.mysql;

import org.apache.eventmesh.connector.jdbc.dialect.DatabaseDialect;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package org.apache.eventmesh.connector.jdbc.type.mysql;

import org.apache.eventmesh.connector.jdbc.table.type.SQLType;
import org.apache.eventmesh.connector.jdbc.type.AbstractType;


/**
* The SpatialDataType class is an abstract class that extends the AbstractType class.
* It represents a spatial data type for storing byte arrays.
*
* <p>
* The SpatialDataType class provides constructors for specifying the type class,
* SQL type, and name of the spatial data type.
* </p>
*
*/
public abstract class SpatialDataType extends AbstractType<byte[]> {

public SpatialDataType(Class<byte[]> typeClass, SQLType sqlType, String name) {
super(typeClass, sqlType, name);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,5 +15,5 @@
# limitations under the License.
#

sourceEnable: false
sinkEnable: true
sourceEnable: true
sinkEnable: false

0 comments on commit 06d2939

Please sign in to comment.