# Path: arbalest/core.py
# class SchemaException(Exception):
#     pass


from arbalest.core import SchemaException
            self.column_name = self.__name(column_name, name)
        elif isinstance(column_type_or_child_property, Property):
            child_column_name = column_name
            child_property = column_type_or_child_property

            while isinstance(child_property, Property):
                self.keys.append(child_property.name)
                child_column_name = child_property.__column_name
                child_property = child_property.__column_type_or_child_property

            self.__validate_supported_type(child_property)
            self.type = child_property
            self.column_name = self.__name(child_column_name,
                                           '_'.join(self.keys))

    @staticmethod
    def __name(column_name, name):
        return column_name if column_name is not None else name

    @staticmethod
    def __validate_supported_type(column_type):
        types = ['SMALLINT',
                 'INT2',
                 'INTEGER',
                 'INT',
                 'INT4',
                 'BIGINT',
                 'INT8',
                 'DECIMAL',
                 'NUMERIC',

# Path: arbalest/core.py
# class SchemaException(Exception):
#     pass


# Path: arbalest/redshift/schema.py
from arbalest.core import SchemaException

            self.column_name = self.__name(column_name, name)
        elif isinstance(column_type_or_child_property, Property):
            child_column_name = column_name
            child_property = column_type_or_child_property

            while isinstance(child_property, Property):
                self.keys.append(child_property.name)
                child_column_name = child_property.__column_name
                child_property = child_property.__column_type_or_child_property

            self.__validate_supported_type(child_property)
            self.type = child_property
            self.column_name = self.__name(child_column_name,
                                           '_'.join(self.keys))

    @staticmethod
    def __name(column_name, name):
        return column_name if column_name is not None else name

    @staticmethod
    def __validate_supported_type(column_type):
        types = ['SMALLINT',
                 'INT2',
                 'INTEGER',
                 'INT',
                 'INT4',
                 'BIGINT',
                 'INT8',
                 'DECIMAL',
                 'NUMERIC',

                 'REAL',