Esempio n. 1
0
    def _create_table_table(self,
                            schema_id,
                            schema_name,
                            table_name,
                            session=None):
        table = None
        columns = None

        try:
            table, columns = self.get_table_and_columns(
                schema_name, table_name)
        except Exception:
            LOG.error(traceback.format_exc())

        if not table:
            return None

        try:
            table_id = create_table(
                name=table.name,
                type=table.type,
                owner=table.owner,
                table_created_at=table.table_created_at,
                table_updated_by=table.table_updated_by,
                table_updated_at=table.table_updated_at,
                data_size_bytes=table.data_size_bytes,
                location=table.location,
                column_count=len(columns),
                schema_id=schema_id,
                session=session,
            ).id
            create_table_information(
                data_table_id=table_id,
                latest_partitions=json.dumps((table.partitions or [])[-10:]),
                earliest_partitions=json.dumps((table.partitions or [])[:10]),
                hive_metastore_description=table.raw_description,
                session=session,
            )
            delete_column_not_in_metastore(table_id,
                                           set(map(lambda c: c.name, columns)),
                                           session=session)

            for column in columns:
                create_column(
                    name=column.name,
                    type=column.type,
                    comment=column.comment,
                    table_id=table_id,
                    commit=False,
                    session=session,
                )
            session.commit()
            update_table_by_id(table_id, session=session)
            return table_id
        except Exception:
            session.rollback()
            LOG.error(traceback.format_exc())
def set_key(
    key, value, expires_after=None, serialize=True, session=None,
):
    if serialize:
        value = json.dumps(value)

    upsert_key_value_store(key, value, session=session)
    if expires_after is not None:
        delete_mysql_cache.delay(key, countdown=expires_after)
Esempio n. 3
0
 def handler(*args, **kwargs):
     result = fn(*args, **kwargs)
     try:
         item_id = ((
             result["id"] if isinstance(result, dict) else getattr(
                 result,
                 "id",
             )) if op == AdminOperation.CREATE else kwargs["id"])
         log = (None if op == AdminOperation.DELETE else dumps(
             list(kwargs.keys()))[:description_length])
         AdminAuditLog.create({
             "uid": current_user.id,
             "item_id": item_id,
             "op": op,
             "item_type": item_type.value,
             "log": log,
         })
     except Exception as e:
         LOG.error(e, exc_info=True)
     finally:
         return result