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' ]
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