Search in sources :

Example 1 with TableMetaCache

use of com.alibaba.otter.canal.parse.inbound.mysql.dbsync.TableMetaCache in project canal by alibaba.

the class LocalBinlogEventParser method preDump.

@Override
protected void preDump(ErosaConnection connection) {
    metaConnection = buildMysqlConnection();
    try {
        metaConnection.connect();
    } catch (IOException e) {
        throw new CanalParseException(e);
    }
    tableMetaCache = new TableMetaCache(metaConnection);
    ((LogEventConvert) binlogParser).setTableMetaCache(tableMetaCache);
}
Also used : LogEventConvert(com.alibaba.otter.canal.parse.inbound.mysql.dbsync.LogEventConvert) IOException(java.io.IOException) TableMetaCache(com.alibaba.otter.canal.parse.inbound.mysql.dbsync.TableMetaCache) CanalParseException(com.alibaba.otter.canal.parse.exception.CanalParseException)

Example 2 with TableMetaCache

use of com.alibaba.otter.canal.parse.inbound.mysql.dbsync.TableMetaCache in project canal by alibaba.

the class MysqlEventParser method preDump.

protected void preDump(ErosaConnection connection) {
    if (!(connection instanceof MysqlConnection)) {
        throw new CanalParseException("Unsupported connection type : " + connection.getClass().getSimpleName());
    }
    if (binlogParser != null && binlogParser instanceof LogEventConvert) {
        metaConnection = (MysqlConnection) connection.fork();
        try {
            metaConnection.connect();
        } catch (IOException e) {
            throw new CanalParseException(e);
        }
        if (supportBinlogFormats != null && supportBinlogFormats.length > 0) {
            BinlogFormat format = ((MysqlConnection) metaConnection).getBinlogFormat();
            boolean found = false;
            for (BinlogFormat supportFormat : supportBinlogFormats) {
                if (supportFormat != null && format == supportFormat) {
                    found = true;
                    break;
                }
            }
            if (!found) {
                throw new CanalParseException("Unsupported BinlogFormat " + format);
            }
        }
        if (supportBinlogImages != null && supportBinlogImages.length > 0) {
            BinlogImage image = ((MysqlConnection) metaConnection).getBinlogImage();
            boolean found = false;
            for (BinlogImage supportImage : supportBinlogImages) {
                if (supportImage != null && image == supportImage) {
                    found = true;
                    break;
                }
            }
            if (!found) {
                throw new CanalParseException("Unsupported BinlogImage " + image);
            }
        }
        tableMetaCache = new TableMetaCache(metaConnection);
        ((LogEventConvert) binlogParser).setTableMetaCache(tableMetaCache);
    }
}
Also used : BinlogFormat(com.alibaba.otter.canal.parse.inbound.mysql.MysqlConnection.BinlogFormat) BinlogImage(com.alibaba.otter.canal.parse.inbound.mysql.MysqlConnection.BinlogImage) LogEventConvert(com.alibaba.otter.canal.parse.inbound.mysql.dbsync.LogEventConvert) IOException(java.io.IOException) TableMetaCache(com.alibaba.otter.canal.parse.inbound.mysql.dbsync.TableMetaCache) CanalParseException(com.alibaba.otter.canal.parse.exception.CanalParseException)

Example 3 with TableMetaCache

use of com.alibaba.otter.canal.parse.inbound.mysql.dbsync.TableMetaCache in project canal by alibaba.

the class TableMetaCacheTest method testSimple.

@Test
public void testSimple() {
    MysqlConnection connection = new MysqlConnection(new InetSocketAddress("127.0.0.1", 3306), "xxxxx", "xxxxx");
    try {
        connection.connect();
    } catch (IOException e) {
        Assert.fail(e.getMessage());
    }
    TableMetaCache cache = new TableMetaCache(connection);
    TableMeta meta = cache.getTableMeta("otter1", "otter_stability1");
    Assert.assertNotNull(meta);
    for (FieldMeta field : meta.getFileds()) {
        System.out.println("filed :" + field.getColumnName() + " , isKey : " + field.isKey() + " , isNull : " + field.isNullable());
    }
}
Also used : InetSocketAddress(java.net.InetSocketAddress) FieldMeta(com.alibaba.otter.canal.parse.inbound.TableMeta.FieldMeta) MysqlConnection(com.alibaba.otter.canal.parse.inbound.mysql.MysqlConnection) IOException(java.io.IOException) TableMetaCache(com.alibaba.otter.canal.parse.inbound.mysql.dbsync.TableMetaCache) Test(org.junit.Test)

Aggregations

TableMetaCache (com.alibaba.otter.canal.parse.inbound.mysql.dbsync.TableMetaCache)3 IOException (java.io.IOException)3 CanalParseException (com.alibaba.otter.canal.parse.exception.CanalParseException)2 LogEventConvert (com.alibaba.otter.canal.parse.inbound.mysql.dbsync.LogEventConvert)2 FieldMeta (com.alibaba.otter.canal.parse.inbound.TableMeta.FieldMeta)1 MysqlConnection (com.alibaba.otter.canal.parse.inbound.mysql.MysqlConnection)1 BinlogFormat (com.alibaba.otter.canal.parse.inbound.mysql.MysqlConnection.BinlogFormat)1 BinlogImage (com.alibaba.otter.canal.parse.inbound.mysql.MysqlConnection.BinlogImage)1 InetSocketAddress (java.net.InetSocketAddress)1 Test (org.junit.Test)1