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)
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