class WeblogEntry(Base):

    __tablename__ = "weblog_entries"

    raw_text = Column(types.Nullable(types.String), primary_key=True)
    remote_address = Column(types.String)
    remote_user = Column(types.Nullable(types.String))
    created_on = Column(types.DateTime)
    method = Column(types.String)
    request_uri = Column(types.String)
    http_version = Column(types.Nullable(types.String))
    response_status = Column(types.Nullable(types.Int))
    response_bytes_sent = Column(types.Nullable(types.Int))
    http_referrer = Column(types.Nullable(types.String))
    http_user_agent = Column(types.Nullable(types.String))
    forwarded_for_ips = Column(types.Nullable(types.String))
    hostname = Column(types.Nullable(types.String))
    server_name = Column(types.Nullable(types.String))
    request_time = Column(types.Nullable(types.Decimal(precision=10, scale=4)))
    upstream_status = Column(types.Nullable(types.Int))
    upstream_response_time = Column(
        types.Nullable(types.Decimal(precision=10, scale=4)))
    upstream_response_length = Column(types.Nullable(types.Int))
    clientip = Column(types.Nullable(types.String))
    user_id = Column(types.Nullable(types.String))
    session_id = Column(types.Nullable(types.String))

    __table_args__ = (engines.ReplacingMergeTree(
        primary_key=(created_on, remote_address, method, request_uri),
        order_by=(created_on, remote_address, method, request_uri)), )
        class TestTable(self.base):
            date = Column(types.Date, primary_key=True)
            x = Column(types.Int32)
            y = Column(types.String)
            version = Column(types.Int32)

            __table_args__ = (engines.ReplacingMergeTree(
                partition_by='date',
                order_by=('date', 'x'),
            ), )
        class TestTable(self.base):
            date = Column(types.Date, primary_key=True)
            x = Column(types.Int32)
            y = Column(types.String)
            version = Column(types.Int32)

            __table_args__ = (engines.ReplacingMergeTree(
                version=version,
                partition_by=func.toYYYYMM(date),
                order_by=(date, x),
            ), )
    def test_replacing_merge_tree_no_version(self):
        engine = engines.ReplacingMergeTree(partition_by='x',
                                            order_by='x',
                                            primary_key='x')

        with self._test_table(engine) as (table, engine):
            self.assertIsInstance(engine, engines.ReplacingMergeTree)
            self.assertIsNone(engine.version_col)
            self.assertEqual(engine.partition_by.columns, [table.c.x])
            self.assertEqual(engine.order_by.columns, [table.c.x])
            self.assertEqual(engine.primary_key.columns, [table.c.x])
Exemplo n.º 5
0
        class TestTable(self.base):
            date = Column(types.Date, primary_key=True)
            x = Column(types.Int32)
            y = Column(types.String)
            version = Column(types.Int32)

            __table_args__ = (engines.ReplacingMergeTree(
                'date',
                ('date', 'x'),
                version_col='version',
            ), )
    def test_replacing_merge_tree(self):
        version = Column('version', types.Int8)

        engine = engines.ReplacingMergeTree(
            version=version, partition_by='x', order_by='x', primary_key='x'
        )

        with self._test_table(engine, version) as (table, engine):
            self.assertIsInstance(engine, engines.ReplacingMergeTree)
            self.assertEqual(engine.version_col.columns, [table.c.version])
            self.assertEqual(engine.partition_by.columns, [table.c.x])
            self.assertEqual(engine.order_by.columns, [table.c.x])
            self.assertEqual(engine.primary_key.columns, [table.c.x])
Exemplo n.º 7
0
def patch_alembic_version(context, **kwargs):
    migration_context = context._proxy._migration_context
    version = migration_context._version

    dt = Column('dt', types.DateTime, server_default=func.now())
    version_num = Column('version_num', types.String, primary_key=True)
    version.append_column(dt)
    version.append_column(version_num)

    if 'cluster' in kwargs:
        cluster = kwargs['cluster']
        version.engine = engines.ReplicatedReplacingMergeTree(
            kwargs['table_path'],
            kwargs['replica_name'],
            version=dt,
            order_by=func.tuple())
        version.kwargs['clickhouse_cluster'] = cluster
    else:
        version.engine = engines.ReplacingMergeTree(version=dt,
                                                    order_by=func.tuple())