Example #1
0
 def test_node_types_with_index_only_scan(self):
     query = (
         self.session.query(self.Article.name)
         .order_by(self.Article.name)
         .limit(10)
     )
     analysis = analyze(self.connection, query)
     assert analysis.node_types == [u'Limit', u'Index Only Scan']
 def test_node_types_with_join(self, session, connection, Article):
     query = (
         session.query(Article)
         .join(Article.category)
     )
     analysis = analyze(connection, query)
     assert analysis.node_types == [
         u'Hash Join', u'Seq Scan', u'Hash', u'Seq Scan'
     ]
Example #3
0
def generate_results(conn_type, connection, query, parameters, logger):
    output = {}
    results = []
    operation = None
    rows_affected = None
    header = None

    if conn_type.lower() != "mssql":
        analyze_response = {}
        try:
            analyze_response = analyze(connection.session, query).plan
            logger.info(analyze_response)
            rows_affected = analyze_response["Plan Rows"]
            operation = analyze_response["Operation"]
        except KeyError:
            if "Plan Rows" in analyze_response:
                rows_affected = analyze_response["Plan Rows"]
            else:
                rows_affected = 0
            operation = 'unknown'
        except Exception as e:
            logger.info(e)
            operation = 'unknown'

    if len(parameters) == 0:
        rows = connection.session.execute(query)
    else:
        rows = connection.session.execute(query, parameters)

    if rows.is_insert or operation == "Insert":
        connection.session.commit()
        return {"status": "successfully inserted %d rows" % int(rows_affected)}

    if not rows.returns_rows:
        connection.session.commit()
        return {"status": "operation success"}

    output["status"] = "operation success"

    row_count = 0
    for i, row in enumerate(rows):
        if i == 0:
            header = row.keys()
            output["header"] = header
        if len(row) > 0:
            row_count += 1
            result_row = {}
            for j, col in enumerate(row.keys()):
                try:
                    v = str(row[col])
                except:
                    v = row[col]
                result_row[header[j]] = v
            results.append(result_row)
    output["results"] = results
    return output
 def test_runtime(self):
     query = self.session.query(self.Article)
     assert analyze(self.connection, query).runtime
 def test_node_types_with_index_only_scan(self):
     query = (self.session.query(self.Article.name).order_by(
         self.Article.name).limit(10))
     analysis = analyze(self.connection, query)
     assert analysis.node_types == [u'Limit', u'Index Only Scan']
 def test_node_types_with_join(self):
     query = (self.session.query(self.Article).join(self.Article.category))
     analysis = analyze(self.connection, query)
     assert analysis.node_types == [
         u'Hash Join', u'Seq Scan', u'Hash', u'Seq Scan'
     ]
 def test_runtime(self, session, connection, Article):
     query = session.query(Article)
     assert analyze(connection, query).runtime
Example #8
0
 def test_runtime(self):
     query = self.session.query(self.Article)
     assert analyze(self.connection, query).runtime
Example #9
0
 def test_runtime(self, session, connection, Article):
     query = session.query(Article)
     assert analyze(connection, query).runtime