From a9041a74f1827692a9ac74fff45dc09c9e0c8860 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markus=20M=C3=A4kel=C3=A4?= Date: Fri, 2 Nov 2018 07:56:04 +0200 Subject: [PATCH] MXS-2106: Update schema generation scripts Updated the schemas generated by the scripts. Also added a requirements.txt for installing all of the python dependencies. --- .../modules/protocol/examples/cdc_schema.go | 20 +++++++++---------- .../modules/protocol/examples/cdc_schema.py | 19 +++++++++--------- .../protocol/examples/requirements.txt | 2 ++ 3 files changed, 20 insertions(+), 21 deletions(-) create mode 100644 server/modules/protocol/examples/requirements.txt diff --git a/server/modules/protocol/examples/cdc_schema.go b/server/modules/protocol/examples/cdc_schema.go index b946a1bbc..426ec004a 100644 --- a/server/modules/protocol/examples/cdc_schema.go +++ b/server/modules/protocol/examples/cdc_schema.go @@ -46,7 +46,7 @@ The "user" and "password" flags are required. // Avro field type Field struct { Name string `json:"name"` - Type string `json:"type"` + Type []string `json:"type"` RealType string `json:"real_type"` Length int `json:"length"` } @@ -81,25 +81,23 @@ func (f *Field) ToAvroType() { switch f.Type { case "date", "datetime", "time", "timestamp", "year", "tinytext", "text", "mediumtext", "longtext", "char", "varchar": - f.Type = "string" + f.Type = ["null", "string"] f.Length, _ = strconv.Atoi(length_re.ReplaceAllString(orig, "$1")) case "enum", "set": - f.Type = "string" + f.Type = ["null", "string"] case "tinyblob", "blob", "mediumblob", "longblob", "binary", "varbinary": - f.Type = "bytes" + f.Type = ["null", "bytes"] case "int", "smallint", "mediumint", "integer", "tinyint", "short", "bit": - f.Type = "int" + f.Type = ["null", "int"] case "float": - f.Type = "float" + f.Type = ["null", "float"] case "double", "decimal": - f.Type = "double" - case "null": - f.Type = "null" + f.Type = ["null", "double"] case "long", "bigint": - f.Type = "long" + f.Type = ["null", "long"] default: LogObject(f) - f.Type = "string" + f.Type = ["null", "string"] } } diff --git a/server/modules/protocol/examples/cdc_schema.py b/server/modules/protocol/examples/cdc_schema.py index bc2c16c52..e334b9b72 100755 --- a/server/modules/protocol/examples/cdc_schema.py +++ b/server/modules/protocol/examples/cdc_schema.py @@ -43,24 +43,23 @@ def parse_field(row): else: res["length"] = -1 + type = "string" + if name in ("date", "datetime", "time", "timestamp", "year", "tinytext", "text", "mediumtext", "longtext", "char", "varchar", "enum", "set"): - res["type"] = "string" + type = "string" elif name in ("tinyblob", "blob", "mediumblob", "longblob", "binary", "varbinary"): - res["type"] = "bytes" + type = "bytes" elif name in ("int", "smallint", "mediumint", "integer", "tinyint", "short", "bit"): - res["type"] = "int" + type = "int" elif name in ("float"): - res["type"] = "float" + type = "float" elif name in ("double", "decimal"): - res["type"] = "double" - elif name in ("null"): - res["type"] = "null" + type = "double" elif name in ("long", "bigint"): - res["type"] = "long" - else: - res["type"] = "string" + type = "long" + res["type"] = ["null", type] res["name"] = row[0].lower() diff --git a/server/modules/protocol/examples/requirements.txt b/server/modules/protocol/examples/requirements.txt new file mode 100644 index 000000000..d65438109 --- /dev/null +++ b/server/modules/protocol/examples/requirements.txt @@ -0,0 +1,2 @@ +mysql-connector-python +kafka-python