// argument ends with an incomplete transaction prefix (BEGIN without // ROLLBACK/COMMIT). func endsWithIncompleteTxn(stmts parser.StatementList) bool { txnStarted := false for _, stmt := range stmts { switch stmt.(type) { case *parser.BeginTransaction: txnStarted = true case *parser.CommitTransaction, *parser.RollbackTransaction: txnStarted = false } } return txnStarted } var cmdHistFile = envutil.EnvOrDefaultString("COCKROACH_SQL_CLI_HISTORY", ".cockroachdb_history") func (c *cliState) doStart(nextState cliStateEnum) cliStateEnum { // Common initialization. c.syntax = parser.Traditional c.querySyntax = true c.partialLines = []string{} if isInteractive { c.fullPrompt, c.continuePrompt = preparePrompts(c.conn.url) // We only enable history management when the terminal is actually // interactive. This saves on memory when e.g. piping a large SQL // script through the command-line client. userAcct, err := user.Current() if err != nil {
opts.NewSpanEventListener = netTraceIntegrator opts.DebugAssertUseAfterFinish = true // provoke crash on use-after-Finish if recorder == nil { opts.Recorder = CallbackRecorder(func(_ basictracer.RawSpan) {}) // If we are not recording the spans, there is no need to keep them in // memory. Events still get passed to netTraceIntegrator. opts.DropAllLogs = true } else { opts.Recorder = CallbackRecorder(recorder) // Set a comfortable limit of log events per span. opts.MaxLogsPerSpan = maxLogsPerSpan } return opts } var lightstepToken = envutil.EnvOrDefaultString("COCKROACH_LIGHTSTEP_TOKEN", "") // By default, if a lightstep token is specified we trace to both Lightstep and // net/trace. If this flag is enabled, we will only trace to Lightstep. var lightstepOnly = envutil.EnvOrDefaultBool("COCKROACH_LIGHTSTEP_ONLY", false) // newTracer implements NewTracer and allows that function to be mocked out via Disable(). var newTracer = func() opentracing.Tracer { if lightstepToken != "" { lsTr := lightstep.NewTracer(lightstep.Options{ AccessToken: lightstepToken, MaxLogsPerSpan: maxLogsPerSpan, UseGRPC: true, }) if lightstepOnly { return lsTr