func (sq *SqlQuery) Begin(context *Context, session *proto.Session, txInfo *proto.TransactionInfo) (err error) { logStats := newSqlQueryStats("Begin", context) logStats.OriginalSql = "begin" defer handleError(&err, logStats) sq.checkState(session.SessionId, false) txInfo.TransactionId = sq.qe.Begin(logStats) return nil }
// Begin is part of the queryservice.QueryService interface func (f *FakeQueryService) Begin(ctx context.Context, session *proto.Session, txInfo *proto.TransactionInfo) error { if f.hasError { return testTabletError } if f.panics { panic(fmt.Errorf("test-triggered panic")) } if session.SessionId != testSessionID { f.t.Errorf("Begin: invalid SessionId: got %v expected %v", session.SessionId, testSessionID) } if session.TransactionId != 0 { f.t.Errorf("Begin: invalid TransactionId: got %v expected 0", session.TransactionId) } txInfo.TransactionId = beginTransactionID return nil }
// Begin is part of the queryservice.QueryService interface func (f *FakeQueryService) Begin(ctx context.Context, target *pb.Target, session *proto.Session, txInfo *proto.TransactionInfo) error { if f.panics { panic(fmt.Errorf("test-triggered panic")) } if f.checkExtraFields { f.checkTargetCallerID(ctx, "Begin", target) } else { if session.SessionId != testSessionID { f.t.Errorf("Begin: invalid SessionId: got %v expected %v", session.SessionId, testSessionID) } } if session.TransactionId != 0 { f.t.Errorf("Begin: invalid TransactionId: got %v expected 0", session.TransactionId) } txInfo.TransactionId = beginTransactionID return nil }
// Begin starts a new transaction. This is allowed only if the state is SERVING. func (sq *SqlQuery) Begin(context *Context, session *proto.Session, txInfo *proto.TransactionInfo) (err error) { logStats := newSqlQueryStats("Begin", context, sq.config.SensitiveMode) logStats.OriginalSql = "begin" sq.mu.RLock() defer sq.mu.RUnlock() defer handleError(&err, logStats) if sq.state.Get() != SERVING { return NewTabletError(RETRY, "cannot begin transaction in state %s", sq.GetState()) } // state is SERVING if session.SessionId == 0 || session.SessionId != sq.sessionId { return NewTabletError(RETRY, "Invalid session Id %v", session.SessionId) } txInfo.TransactionId = sq.qe.Begin(logStats) return nil }
// Begin starts a new transaction. This is allowed only if the state is SERVING. func (sq *SqlQuery) Begin(context context.Context, session *proto.Session, txInfo *proto.TransactionInfo) (err error) { logStats := newSqlQueryStats("Begin", context) logStats.OriginalSql = "begin" sq.mu.RLock() defer sq.mu.RUnlock() defer handleError(&err, logStats) if sq.state.Get() != SERVING { return NewTabletError(RETRY, "cannot begin transaction in state %s", sq.GetState()) } // state is SERVING if session.SessionId == 0 || session.SessionId != sq.sessionId { return NewTabletError(RETRY, "Invalid session Id %v", session.SessionId) } defer queryStats.Record("BEGIN", time.Now()) txInfo.TransactionId = sq.qe.activeTxPool.Begin() logStats.TransactionID = txInfo.TransactionId return nil }
// Begin starts a new transaction. This is allowed only if the state is StateServing. func (sq *SqlQuery) Begin(ctx context.Context, session *proto.Session, txInfo *proto.TransactionInfo) (err error) { logStats := newSqlQueryStats("Begin", ctx) logStats.OriginalSql = "begin" defer handleError(&err, logStats, sq.qe.queryServiceStats) if err = sq.startRequest(session.SessionId, false, false); err != nil { return err } ctx, cancel := withTimeout(ctx, sq.qe.txPool.PoolTimeout()) defer func() { sq.qe.queryServiceStats.QueryStats.Record("BEGIN", time.Now()) cancel() sq.endRequest() }() txInfo.TransactionId = sq.qe.txPool.Begin(ctx) logStats.TransactionID = txInfo.TransactionId return nil }
// Begin starts a new transaction. This is allowed only if the state is StateServing. func (tsv *TabletServer) Begin(ctx context.Context, target *pb.Target, session *proto.Session, txInfo *proto.TransactionInfo) (err error) { logStats := newLogStats("Begin", ctx) logStats.OriginalSQL = "begin" defer handleError(&err, logStats, tsv.qe.queryServiceStats) if err = tsv.startRequest(target, session.SessionId, false); err != nil { return err } ctx, cancel := withTimeout(ctx, tsv.BeginTimeout.Get()) defer func() { tsv.qe.queryServiceStats.QueryStats.Record("BEGIN", time.Now()) cancel() tsv.endRequest() }() txInfo.TransactionId = tsv.qe.txPool.Begin(ctx) logStats.TransactionID = txInfo.TransactionId return nil }