示例#1
0
def test_convert_dttm(dttm: datetime) -> None:
    """
    Test that date objects are converted correctly.
    """

    from superset.db_engine_specs.athena import AthenaEngineSpec

    assert AthenaEngineSpec.convert_dttm("DATE", dttm) == "DATE '2019-01-02'"

    assert (AthenaEngineSpec.convert_dttm(
        "TIMESTAMP", dttm) == "TIMESTAMP '2019-01-02 03:04:05.678'")
示例#2
0
    def test_convert_dttm(self):
        dttm = self.get_dttm()

        self.assertEqual(
            AthenaEngineSpec.convert_dttm("DATE", dttm),
            "from_iso8601_date('2019-01-02')",
        )

        self.assertEqual(
            AthenaEngineSpec.convert_dttm("TIMESTAMP", dttm),
            "from_iso8601_timestamp('2019-01-02T03:04:05.678900')",
        )
示例#3
0
def test_convert_dttm(app_context: AppContext, dttm: datetime) -> None:
    """
    Test that date objects are converted correctly.
    """

    from superset.db_engine_specs.athena import AthenaEngineSpec

    assert (AthenaEngineSpec.convert_dttm(
        "DATE", dttm) == "from_iso8601_date('2019-01-02')")

    assert (AthenaEngineSpec.convert_dttm(
        "TIMESTAMP",
        dttm) == "from_iso8601_timestamp('2019-01-02T03:04:05.678900')")
示例#4
0
def test_extract_errors() -> None:
    """
    Test that custom error messages are extracted correctly.
    """

    from superset.db_engine_specs.athena import AthenaEngineSpec

    msg = ": mismatched input 'fromm'. Expecting: "
    result = AthenaEngineSpec.extract_errors(Exception(msg))
    assert result == [
        SupersetError(
            message=
            'Please check your query for syntax errors at or near "fromm". Then, try running your query again.',
            error_type=SupersetErrorType.SYNTAX_ERROR,
            level=ErrorLevel.ERROR,
            extra={
                "engine_name":
                "Amazon Athena",
                "issue_codes": [{
                    "code":
                    1030,
                    "message":
                    "Issue 1030 - The query has a syntax error.",
                }],
            },
        )
    ]
示例#5
0
def test_get_text_clause_with_colon() -> None:
    """
    Make sure text clauses don't escape the colon character
    """

    from superset.db_engine_specs.athena import AthenaEngineSpec

    query = ("SELECT foo FROM tbl WHERE "
             "abc >= TIMESTAMP '2021-11-26T00\:00\:00.000000'")
    text_clause = AthenaEngineSpec.get_text_clause(query)
    assert text_clause.text == query
示例#6
0
def test_get_text_clause_with_colon(app_context: AppContext) -> None:
    """
    Make sure text clauses don't escape the colon character
    """

    from superset.db_engine_specs.athena import AthenaEngineSpec

    query = ("SELECT foo FROM tbl WHERE "
             "abc >= from_iso8601_timestamp('2021-11-26T00\:00\:00.000000')")
    text_clause = AthenaEngineSpec.get_text_clause(query)
    assert text_clause.text == query