Exemplo n.º 1
0
    def get(self):
        self.response.headers.add_header("Access-Control-Allow-Origin", "*")
        query = self.request.get("query")
        language = self.request.get("language")
        profile = self.get_boolean_request_param("profile")
        multiway_join = self.get_boolean_request_param("multiway_join")
        push_sql = self.get_boolean_request_param("push_sql")

        cached_logicalplan = str(get_logical_plan(
            query, language, self.app.connection, push_sql=push_sql))
        # Generate physical plan
        physicalplan = get_physical_plan(
            query, language, self.app.connection, multiway_join=multiway_join,
            push_sql=push_sql)

        try:
            compiled = compile_to_json(
                query, cached_logicalplan, physicalplan, language)

            if profile:
                compiled['profilingMode'] = ["QUERY", "RESOURCE"]
            else:
                compiled['profilingMode'] = []
        except requests.ConnectionError:
            self.response.headers['Content-Type'] = 'text/plain'
            self.response.status = 503
            self.response.write(
                'Error 503 (Unavailable): Unable to connect to REST server')
            return

        self.response.headers['Content-Type'] = 'application/json'
        self.response.write(json.dumps(compiled))
Exemplo n.º 2
0
    def post(self):
        self.response.headers.add_header("Access-Control-Allow-Origin", "*")
        conn = self.app.connection

        query = self.request.get("query")
        language = self.request.get("language")
        profile = self.get_boolean_request_param("profile")
        multiway_join = self.get_boolean_request_param("multiway_join")
        push_sql = self.get_boolean_request_param("push_sql")

        cached_logicalplan = str(
            get_logical_plan(query,
                             language,
                             self.app.connection,
                             push_sql=push_sql))

        try:
            # Generate physical plan
            physicalplan = get_physical_plan(query,
                                             language,
                                             self.app.connection,
                                             multiway_join=multiway_join,
                                             push_sql=push_sql)

            # .. and compile
            compiled = compile_to_json(query, cached_logicalplan, physicalplan,
                                       language)

            if profile:
                compiled['profilingMode'] = ["QUERY", "RESOURCE"]
            else:
                compiled['profilingMode'] = []

            # Issue the query
            query_status = conn.submit_query(compiled)
            query_url = 'http://%s:%d/execute?query_id=%d' %\
                (self.app.hostname, self.app.port, query_status['queryId'])
            self.response.status = 201
            self.response.headers['Content-Type'] = 'application/json'
            self.response.headers['Content-Location'] = query_url
            self.response.write(json.dumps(query_status))
            return
        except myria.MyriaError as e:
            self.response.headers['Content-Type'] = 'text/plain'
            self.response.status = 400
            self.response.write("Error 400 (Bad Request): %s" % str(e))
            return
        except requests.ConnectionError as e:
            self.response.headers['Content-Type'] = 'text/plain'
            self.response.status = 503
            self.response.write('Error 503 (Unavailable): \
                 Unable to connect to REST server to issue query')
            return
Exemplo n.º 3
0
    def post(self):
        self.response.headers.add_header("Access-Control-Allow-Origin", "*")
        conn = self.app.connection

        query = self.request.get("query")
        language = self.request.get("language")
        profile = self.get_boolean_request_param("profile")
        multiway_join = self.get_boolean_request_param("multiway_join")
        push_sql = self.get_boolean_request_param("push_sql")

        cached_logicalplan = str(
            get_logical_plan(query, language, self.app.connection,
                             push_sql=push_sql))

        try:
            # Generate physical plan
            physicalplan = get_physical_plan(
                query, language, self.app.connection,
                multiway_join=multiway_join, push_sql=push_sql)

            # .. and compile
            compiled = compile_to_json(
                query, cached_logicalplan, physicalplan, language)

            if profile:
                compiled['profilingMode'] = ["QUERY", "RESOURCE"]
            else:
                compiled['profilingMode'] = []

            # Issue the query
            query_status = conn.submit_query(compiled)
            query_url = 'http://%s:%d/execute?query_id=%d' %\
                (self.app.hostname, self.app.port, query_status['queryId'])
            self.response.status = 201
            self.response.headers['Content-Type'] = 'application/json'
            self.response.headers['Content-Location'] = query_url
            self.response.write(json.dumps(query_status))
            return
        except myria.MyriaError as e:
            self.response.headers['Content-Type'] = 'text/plain'
            self.response.status = 400
            self.response.write("Error 400 (Bad Request): %s" % str(e))
            return
        except requests.ConnectionError as e:
            self.response.headers['Content-Type'] = 'text/plain'
            self.response.status = 503
            self.response.write(
                'Error 503 (Unavailable): \
                 Unable to connect to REST server to issue query')
            return
Exemplo n.º 4
0
    def get(self):
        self.response.headers.add_header("Access-Control-Allow-Origin", "*")
        query = self.request.get("query")
        language = self.request.get("language")
        profile = self.get_boolean_request_param("profile")
        multiway_join = self.get_boolean_request_param("multiway_join")
        push_sql = self.get_boolean_request_param("push_sql")

        cached_logicalplan = str(
            get_logical_plan(query,
                             language,
                             self.app.connection,
                             push_sql=push_sql))
        # Generate physical plan
        physicalplan = get_physical_plan(query,
                                         language,
                                         self.app.connection,
                                         multiway_join=multiway_join,
                                         push_sql=push_sql)

        try:
            compiled = compile_to_json(query, cached_logicalplan, physicalplan,
                                       language)

            if profile:
                compiled['profilingMode'] = ["QUERY", "RESOURCE"]
            else:
                compiled['profilingMode'] = []
        except requests.ConnectionError:
            self.response.headers['Content-Type'] = 'text/plain'
            self.response.status = 503
            self.response.write(
                'Error 503 (Unavailable): Unable to connect to REST server')
            return

        self.response.headers['Content-Type'] = 'application/json'
        self.response.write(json.dumps(compiled))