private INativeSQLQueryReturn CreateScalarReturn(HbmReturnScalar returnScalarSchema)
        {
            string typeName;
            IDictionary <string, string> parameters = null;
            TypeDef typeDef = mappings.GetTypeDef(returnScalarSchema.type);

            if (typeDef != null)
            {
                typeName   = typeDef.TypeClass;
                parameters = typeDef.Parameters;
            }
            else
            {
                typeName = returnScalarSchema.type;
            }

            IType type = TypeFactory.HeuristicType(typeName, parameters);

            if (type == null)
            {
                throw new MappingException("could not interpret type: " + returnScalarSchema.type);
            }

            return(new NativeSQLQueryScalarReturn(returnScalarSchema.column, type));
        }
        private INativeSQLQueryReturn CreateQueryReturn(object item, int count)
        {
            HbmLoadCollection loadCollectionSchema = item as HbmLoadCollection;
            HbmReturn         returnSchema         = item as HbmReturn;
            HbmReturnJoin     returnJoinSchema     = item as HbmReturnJoin;
            HbmReturnScalar   returnScalarSchema   = item as HbmReturnScalar;

            if (returnScalarSchema != null)
            {
                return(CreateScalarReturn(returnScalarSchema));
            }

            else if (returnSchema != null)
            {
                return(CreateReturn(returnSchema, count));
            }

            else if (returnJoinSchema != null)
            {
                return(CreateJoinReturn(returnJoinSchema));
            }

            else if (loadCollectionSchema != null)
            {
                return(CreateLoadCollectionReturn(loadCollectionSchema));
            }

            else
            {
                return(null);
            }
        }