# Buggy code
def get(self, name: str, *, dummy: bool = False) -> GQLBaseType:
    """Get a special GQL type either by name or based on EdgeDB type."""
    # normalize name and possibly add 'edb_base' to kwargs
    edb_base = None
    kwargs: Dict[str, Any] = {"dummy": dummy}

    if not name.startswith("stdgraphql::"):
        if edb_base is None:
            type_id = s_types.type_id_from_name(s_name.name_from_string(name))
            if type_id is not None:
                edb_base = self.edb_schema.get_by_id(
                    type_id,
                    type=s_types.Type,
                )
            elif "::" in name:
                edb_base = self.edb_schema.get(
                    name,
                    type=s_types.Type,
                )
            else:
                for module in self.modules:
                    edb_base = self.edb_schema.get(
                        f"{module}::{name}",
                        type=s_types.Type,
                        default=None,
                    )
                    if edb_base:
                        break

                if edb_base is None:
                    raise AssertionError(f"unresolved type: {module}::{name}")

        kwargs["edb_base"] = edb_base

    # check if the type already exists
    fkey = (name, dummy)
    gqltype = self._type_map.get(fkey)

    if not gqltype:
        _type = GQLTypeMeta.edb_map.get(name, GQLShadowType)
        gqltype = _type(schema=self, **kwargs)
        self._type_map[fkey] = gqltype

    return gqltype


# Traceback (AttributeError)
ERROR: InternalServerError: 'UnionType' object has no attribute 'get_name'
Hint: This is most likely a bug in EdgeDB. Please consider opening an issue ticket at https://github.com/edgedb/edgedb/issues/new?template=bug_report.md
Server traceback:
Traceback (most recent call last):
File "/usr/lib/x86_64-linux-gnu/edgedb-server-1-alpha6/lib/python3.8/site-packages/edb/server/procpool/worker.py", line 75, in worker
res = await meth(*args)
File "/usr/lib/x86_64-linux-gnu/edgedb-server-1-alpha6/lib/python3.8/site-packages/edb/server/compiler/compiler.py", line 1808, in compile_eql_tokens
return self._compile(ctx=ctx, tokens=eql_tokens)
File "/usr/lib/x86_64-linux-gnu/edgedb-server-1-alpha6/lib/python3.8/site-packages/edb/server/compiler/compiler.py", line 1442, in _compile
comp: dbstate.BaseQuery = self._compile_dispatch_ql(ctx, stmt)
File "/usr/lib/x86_64-linux-gnu/edgedb-server-1-alpha6/lib/python3.8/site-packages/edb/server/compiler/compiler.py", line 1365, in _compile_dispatch_ql
return self._compile_ql_migration(ctx, ql)
File "/usr/lib/x86_64-linux-gnu/edgedb-server-1-alpha6/lib/python3.8/site-packages/edb/server/compiler/compiler.py", line 794, in _compile_ql_migration
target_schema = s_ddl.apply_sdl(
File "/usr/lib/x86_64-linux-gnu/edgedb-server-1-alpha6/lib/python3.8/site-packages/edb/schema/ddl.py", line 371, in apply_sdl
ddl_stmts = s_decl.sdl_to_ddl(current_schema, documents)
File "/usr/lib/x86_64-linux-gnu/edgedb-server-1-alpha6/lib/python3.8/site-packages/edb/edgeql/declarative.py", line 230, in sdl_to_ddl
trace_dependencies(decl_ast, ctx=ctx)
File "/usr/lib/x86_64-linux-gnu/edgedb-server-1-alpha6/lib/python3.8/functools.py", line 875, in wrapper
return dispatch(args[0].__class__)(*args, **kw)
File "/usr/lib/x86_64-linux-gnu/edgedb-server-1-alpha6/lib/python3.8/site-packages/edb/edgeql/declarative.py", line 499, in trace_default
_register_item(node, ctx=ctx)
File "/usr/lib/x86_64-linux-gnu/edgedb-server-1-alpha6/lib/python3.8/site-packages/edb/edgeql/declarative.py", line 623, in _register_item
trace_dependencies(cmd, ctx=ctx)
File "/usr/lib/x86_64-linux-gnu/edgedb-server-1-alpha6/lib/python3.8/functools.py", line 875, in wrapper
return dispatch(args[0].__class__)(*args, **kw)
File "/usr/lib/x86_64-linux-gnu/edgedb-server-1-alpha6/lib/python3.8/site-packages/edb/edgeql/declarative.py", line 443, in trace_ConcretePointer
_register_item(
File "/usr/lib/x86_64-linux-gnu/edgedb-server-1-alpha6/lib/python3.8/site-packages/edb/edgeql/declarative.py", line 638, in _register_item
tdeps = qltracer.trace_refs(
File "/usr/lib/x86_64-linux-gnu/edgedb-server-1-alpha6/lib/python3.8/site-packages/edb/edgeql/tracer.py", line 162, in trace_refs
trace(qltree, ctx=ctx)
File "/usr/lib/x86_64-linux-gnu/edgedb-server-1-alpha6/lib/python3.8/functools.py", line 875, in wrapper
return dispatch(args[0].__class__)(*args, **kw)
File "/usr/lib/x86_64-linux-gnu/edgedb-server-1-alpha6/lib/python3.8/site-packages/edb/edgeql/tracer.py", line 653, in trace_Select
ctx.path_prefix = tip.get_name(ctx.schema)
AttributeError: 'UnionType' object has no attribute 'get_name'

# Fixed code
def get(self, name: str, *, dummy: bool = False) -> GQLBaseType:
    """Get a special GQL type either by name or based on EdgeDB type."""
    # normalize name and possibly add 'edb_base' to kwargs
    edb_base = None
    kwargs: Dict[str, Any] = {"dummy": dummy}

    if not name.startswith("stdgraphql::"):
        if edb_base is None:
            if "::" in name:
                edb_base = self.edb_schema.get(
                    name,
                    type=s_types.Type,
                )
            else:
                for module in self.modules:
                    edb_base = self.edb_schema.get(
                        f"{module}::{name}",
                        type=s_types.Type,
                        default=None,
                    )
                    if edb_base:
                        break

                # XXX: find a better way to do this
                if edb_base is None:
                    edb_base = self.edb_schema.get_global(
                        s_types.Array, name, default=None
                    )

                if edb_base is None:
                    edb_base = self.edb_schema.get_global(
                        s_types.Tuple, name, default=None
                    )

                if edb_base is None:
                    raise AssertionError(f"unresolved type: {module}::{name}")

        kwargs["edb_base"] = edb_base

    # check if the type already exists
    fkey = (name, dummy)
    gqltype = self._type_map.get(fkey)

    if not gqltype:
        _type = GQLTypeMeta.edb_map.get(name, GQLShadowType)
        gqltype = _type(schema=self, **kwargs)
        self._type_map[fkey] = gqltype

    return gqltype