class PaloTable extends MysqlTable {

    private static final Logger LOG = Log.logger(PaloTable.class);

    public PaloTable(String table) {
        super(table);
    }

    @Override
    public void createTable(MysqlSessions.Session session,
                            TableDefine tableDefine) {
        StringBuilder sql = new StringBuilder();
        sql.append("CREATE TABLE IF NOT EXISTS ");
        sql.append(this.table()).append(" (");
        // Add columns
        int i = 0;
        for (Map.Entry<HugeKeys, String> entry :
                tableDefine.columns().entrySet()) {
            sql.append(formatKey(entry.getKey()));
            sql.append(" ");
            sql.append(entry.getValue());
            if (++i != tableDefine.columns().size()) {
                sql.append(", ");
            }
        }
        sql.append(")");
        // Unique keys
        sql.append(" UNIQUE KEY(");
        i = 0;
        for (HugeKeys key : tableDefine.keys()) {
            sql.append(formatKey(key));
            if (++i != tableDefine.keys().size()) {
                sql.append(", ");
            }
        }
        sql.append(")");
        // Hash keys
        sql.append(" DISTRIBUTED BY HASH(");
        i = 0;
        for (HugeKeys key : tableDefine.keys()) {
            sql.append(formatKey(key));
            if (++i != tableDefine.keys().size()) {
                sql.append(", ");
            }
        }
        sql.append(");");
        // TODO: 'replication_num(default=3)’ can be a configuration

        LOG.debug("Create table: {}", sql);
        try {
            session.execute(sql.toString());
        } catch (SQLException e) {
            throw new BackendException("Failed to create table with '%s'",
                                       e, sql);
        }
    }

    @Override
    protected void appendPartition(StringBuilder delete) {
        delete.append(" PARTITION ").append(this.table());
    }

    @Override
    public void insert(MysqlSessions.Session session,
                       MysqlBackendEntry.Row entry) {<FILL_FUNCTION_BODY>}
}

        assert session instanceof PaloSessions.Session;
        PaloSessions.Session paloSession = (PaloSessions.Session) session;

        Set<HugeKeys> columnNames = this.tableDefine().columnNames();
        // Ensure column order match with table define
        List<Object> columnValues = new ArrayList<>(columnNames.size());
        for (HugeKeys key : columnNames) {
            columnValues.add(entry.column(key));
        }
        String insert = StringUtils.join(columnValues, "\t");
        paloSession.add(this.table(), insert);
    
<methods>public void <init>(java.lang.String) ,public void append(org.apache.hugegraph.backend.store.mysql.MysqlSessions.Session, org.apache.hugegraph.backend.serializer.TableBackendEntry.Row) ,public void clear(org.apache.hugegraph.backend.store.mysql.MysqlSessions.Session) ,public void delete(org.apache.hugegraph.backend.store.mysql.MysqlSessions.Session, org.apache.hugegraph.backend.serializer.TableBackendEntry.Row) ,public void eliminate(org.apache.hugegraph.backend.store.mysql.MysqlSessions.Session, org.apache.hugegraph.backend.serializer.TableBackendEntry.Row) ,public static java.lang.String formatKey(org.apache.hugegraph.type.define.HugeKeys) ,public static List<java.lang.String> formatKeys(List<org.apache.hugegraph.type.define.HugeKeys>) ,public void init(org.apache.hugegraph.backend.store.mysql.MysqlSessions.Session) ,public void insert(org.apache.hugegraph.backend.store.mysql.MysqlSessions.Session, org.apache.hugegraph.backend.serializer.TableBackendEntry.Row) ,public static org.apache.hugegraph.type.define.HugeKeys parseKey(java.lang.String) ,public Iterator<org.apache.hugegraph.backend.store.BackendEntry> query(org.apache.hugegraph.backend.store.mysql.MysqlSessions.Session, org.apache.hugegraph.backend.query.Query) ,public boolean queryExist(org.apache.hugegraph.backend.store.mysql.MysqlSessions.Session, org.apache.hugegraph.backend.serializer.TableBackendEntry.Row) ,public java.lang.Number queryNumber(org.apache.hugegraph.backend.store.mysql.MysqlSessions.Session, org.apache.hugegraph.backend.query.Query) ,public abstract org.apache.hugegraph.backend.store.TableDefine tableDefine() ,public void truncate(org.apache.hugegraph.backend.store.mysql.MysqlSessions.Session) ,public void updateIfAbsent(org.apache.hugegraph.backend.store.mysql.MysqlSessions.Session, org.apache.hugegraph.backend.serializer.TableBackendEntry.Row) ,public void updateIfPresent(org.apache.hugegraph.backend.store.mysql.MysqlSessions.Session, org.apache.hugegraph.backend.serializer.TableBackendEntry.Row) <variables>private static final java.lang.String DECIMAL,private static final Logger LOG,private java.lang.String deleteTemplate,private java.lang.String insertTemplate,private java.lang.String insertTemplateTtl,private final non-sealed org.apache.hugegraph.backend.store.mysql.MysqlTable.MysqlShardSplitter shardSplitter,private java.lang.String updateIfAbsentTemplate,private java.lang.String updateIfPresentTemplate