index 0047aba5d1acbdf308a90c00b746b3691d62dc22..3d920fb5f7123ef2ae6328ce9900b9ad1e5a4218 100644 (file)
(1 row)
+-- Savepoints
+BEGIN;
+SAVEPOINT sp1;
+SAVEPOINT sp2;
+SAVEPOINT sp3;
+SAVEPOINT sp4;
+ROLLBACK TO sp4;
+ROLLBACK TO SAVEPOINT sp4;
+ROLLBACK TRANSACTION TO SAVEPOINT sp3;
+RELEASE sp3;
+RELEASE SAVEPOINT sp2;
+ROLLBACK TO sp1;
+RELEASE SAVEPOINT sp1;
+COMMIT;
+SELECT calls, rows, query FROM pg_stat_statements ORDER BY query COLLATE "C";
+ calls | rows | query
+-------+------+-----------------------------------
+ 1 | 0 | BEGIN
+ 1 | 0 | COMMIT
+ 3 | 0 | RELEASE 1ドル
+ 4 | 0 | ROLLBACK TO 1ドル
+ 4 | 0 | SAVEPOINT 1ドル
+ 1 | 1 | SELECT pg_stat_statements_reset()
+(6 rows)
+
+SELECT pg_stat_statements_reset();
+ pg_stat_statements_reset
+--------------------------
+
+(1 row)
+
-- EXPLAIN statements
-- A Query is used, normalized by the query jumbling.
EXPLAIN (costs off) SELECT 1;
index 225d30a62a6455fce842d3cc7d5b457e2dc878be..859e57955e68c1f43f778205cfa1b51d698900f8 100644 (file)
SELECT calls, rows, query FROM pg_stat_statements ORDER BY query COLLATE "C";
SELECT pg_stat_statements_reset();
+-- Savepoints
+BEGIN;
+SAVEPOINT sp1;
+SAVEPOINT sp2;
+SAVEPOINT sp3;
+SAVEPOINT sp4;
+ROLLBACK TO sp4;
+ROLLBACK TO SAVEPOINT sp4;
+ROLLBACK TRANSACTION TO SAVEPOINT sp3;
+RELEASE sp3;
+RELEASE SAVEPOINT sp2;
+ROLLBACK TO sp1;
+RELEASE SAVEPOINT sp1;
+COMMIT;
+SELECT calls, rows, query FROM pg_stat_statements ORDER BY query COLLATE "C";
+SELECT pg_stat_statements_reset();
+
-- EXPLAIN statements
-- A Query is used, normalized by the query jumbling.
EXPLAIN (costs off) SELECT 1;
index 856d5dee0e7e41ed457043967eeecaf21005f941..15ece871a0142cbd35665bf5854508ec6e3b9b9a 100644 (file)
n->kind = TRANS_STMT_ROLLBACK;
n->options = NIL;
n->chain = 3ドル;
+ n->location = -1;
$$ = (Node *) n;
}
| START TRANSACTION transaction_mode_list_or_empty
n->kind = TRANS_STMT_START;
n->options = 3ドル;
+ n->location = -1;
$$ = (Node *) n;
}
| COMMIT opt_transaction opt_transaction_chain
n->kind = TRANS_STMT_COMMIT;
n->options = NIL;
n->chain = 3ドル;
+ n->location = -1;
$$ = (Node *) n;
}
| ROLLBACK opt_transaction opt_transaction_chain
n->kind = TRANS_STMT_ROLLBACK;
n->options = NIL;
n->chain = 3ドル;
+ n->location = -1;
$$ = (Node *) n;
}
| SAVEPOINT ColId
n->kind = TRANS_STMT_SAVEPOINT;
n->savepoint_name = 2ドル;
+ n->location = @2;
$$ = (Node *) n;
}
| RELEASE SAVEPOINT ColId
n->kind = TRANS_STMT_RELEASE;
n->savepoint_name = 3ドル;
+ n->location = @3;
$$ = (Node *) n;
}
| RELEASE ColId
n->kind = TRANS_STMT_RELEASE;
n->savepoint_name = 2ドル;
+ n->location = @2;
$$ = (Node *) n;
}
| ROLLBACK opt_transaction TO SAVEPOINT ColId
n->kind = TRANS_STMT_ROLLBACK_TO;
n->savepoint_name = 5ドル;
+ n->location = @5;
$$ = (Node *) n;
}
| ROLLBACK opt_transaction TO ColId
n->kind = TRANS_STMT_ROLLBACK_TO;
n->savepoint_name = 4ドル;
+ n->location = @4;
$$ = (Node *) n;
}
| PREPARE TRANSACTION Sconst
n->kind = TRANS_STMT_PREPARE;
n->gid = 3ドル;
+ n->location = -1;
$$ = (Node *) n;
}
| COMMIT PREPARED Sconst
n->kind = TRANS_STMT_COMMIT_PREPARED;
n->gid = 3ドル;
+ n->location = -1;
$$ = (Node *) n;
}
| ROLLBACK PREPARED Sconst
n->kind = TRANS_STMT_ROLLBACK_PREPARED;
n->gid = 3ドル;
+ n->location = -1;
$$ = (Node *) n;
}
;
n->kind = TRANS_STMT_BEGIN;
n->options = 3ドル;
+ n->location = -1;
$$ = (Node *) n;
}
| END_P opt_transaction opt_transaction_chain
n->kind = TRANS_STMT_COMMIT;
n->options = NIL;
n->chain = 3ドル;
+ n->location = -1;
$$ = (Node *) n;
}
;
index 228cdca0f1b5e9a86e9b51afc3e1923cb95ba380..fe003ded5043dffd910b9a90f87f3fe6fbc7b1c2 100644 (file)
NodeTag type;
TransactionStmtKind kind; /* see above */
List *options; /* for BEGIN/START commands */
- char *savepoint_name; /* for savepoint commands */
+ /* for savepoint commands */
+ char *savepoint_name pg_node_attr(query_jumble_ignore);
char *gid; /* for two-phase-commit related commands */
bool chain; /* AND CHAIN option */
+ /* token location, or -1 if unknown */
+ int location pg_node_attr(query_jumble_location);
} TransactionStmt;
/* ----------------------