(ctx context.Context, cCtx base.CompletionContext, statement string, caretLine int, caretOffset int)
| 118 | } |
| 119 | |
| 120 | func NewTrickyCompleter(ctx context.Context, cCtx base.CompletionContext, statement string, caretLine int, caretOffset int) *Completer { |
| 121 | sql, byteOffset := computeSQLAndByteOffset(statement, caretLine, caretOffset, true /* tricky */) |
| 122 | tokens := pgparser.Tokenize(sql) |
| 123 | caretTokenIndex := findCaretTokenIndex(tokens, byteOffset) |
| 124 | defaultSchema := cCtx.DefaultSchema |
| 125 | schemaNotSelected := defaultSchema == "" |
| 126 | if defaultSchema == "" { |
| 127 | defaultSchema = "public" |
| 128 | } |
| 129 | return &Completer{ |
| 130 | ctx: ctx, |
| 131 | scene: cCtx.Scene, |
| 132 | sql: sql, |
| 133 | cursorByteOffset: byteOffset, |
| 134 | tokens: tokens, |
| 135 | caretTokenIndex: caretTokenIndex, |
| 136 | instanceID: cCtx.InstanceID, |
| 137 | defaultDatabase: cCtx.DefaultDatabase, |
| 138 | defaultSchema: defaultSchema, |
| 139 | schemaNotSelected: schemaNotSelected, |
| 140 | getMetadata: cCtx.Metadata, |
| 141 | listDatabaseNames: cCtx.ListDatabaseNames, |
| 142 | metadataCache: make(map[string]*model.DatabaseMetadata), |
| 143 | cteCache: make(map[int][]*base.VirtualTableReference), |
| 144 | } |
| 145 | } |
| 146 | |
| 147 | func NewStandardCompleter(ctx context.Context, cCtx base.CompletionContext, statement string, caretLine int, caretOffset int) *Completer { |
| 148 | sql, byteOffset := computeSQLAndByteOffset(statement, caretLine, caretOffset, false /* tricky */) |
no test coverage detected