11package com .redis .trino ;
22
3- import static com .google .common .base .Preconditions .checkState ;
4- import static com .google .common .collect .ImmutableList .toImmutableList ;
53import static java .lang .Math .toIntExact ;
64import static java .util .Objects .requireNonNull ;
75import static java .util .stream .Collectors .toList ;
86
9- import java .util .Collection ;
107import java .util .List ;
118import java .util .Map ;
129import java .util .Optional ;
1310import java .util .OptionalInt ;
14- import java .util .concurrent .atomic .AtomicReference ;
1511
1612import com .google .common .collect .ImmutableList ;
1713import com .google .common .collect .ImmutableMap ;
1814
19- import io .airlift .slice .Slice ;
2015import io .trino .spi .connector .ColumnHandle ;
2116import io .trino .spi .connector .ColumnMetadata ;
22- import io .trino .spi .connector .ConnectorInsertTableHandle ;
2317import io .trino .spi .connector .ConnectorMetadata ;
24- import io .trino .spi .connector .ConnectorNewTableLayout ;
25- import io .trino .spi .connector .ConnectorOutputMetadata ;
26- import io .trino .spi .connector .ConnectorOutputTableHandle ;
2718import io .trino .spi .connector .ConnectorSession ;
2819import io .trino .spi .connector .ConnectorTableHandle ;
2920import io .trino .spi .connector .ConnectorTableMetadata ;
3425import io .trino .spi .connector .NotFoundException ;
3526import io .trino .spi .connector .SchemaTableName ;
3627import io .trino .spi .connector .SchemaTablePrefix ;
28+ import io .trino .spi .connector .TableNotFoundException ;
3729import io .trino .spi .predicate .TupleDomain ;
38- import io .trino .spi .statistics .ComputedStatistics ;
3930
4031public class RediSearchMetadata implements ConnectorMetadata {
4132
4233 private final RediSearchSession rediSearchSession ;
43- private final AtomicReference <Runnable > rollbackAction = new AtomicReference <>();
34+ // private final AtomicReference<Runnable> rollbackAction = new AtomicReference<>();
4435 private final String schemaName ;
4536
4637 public RediSearchMetadata (RediSearchSession rediSearchSession ) {
@@ -58,7 +49,11 @@ public RediSearchTableHandle getTableHandle(ConnectorSession session, SchemaTabl
5849 requireNonNull (tableName , "tableName is null" );
5950
6051 if (tableName .getSchemaName ().equals (schemaName )) {
61- return rediSearchSession .getTable (tableName ).getTableHandle ();
52+ try {
53+ return rediSearchSession .getTable (tableName ).getTableHandle ();
54+ } catch (TableNotFoundException e ) {
55+ // ignore and return null
56+ }
6257 }
6358 return null ;
6459 }
@@ -119,65 +114,55 @@ public ColumnMetadata getColumnMetadata(ConnectorSession session, ConnectorTable
119114 return ((RediSearchColumnHandle ) columnHandle ).toColumnMetadata ();
120115 }
121116
122- @ Override
123- public void createTable (ConnectorSession session , ConnectorTableMetadata tableMetadata , boolean ignoreExisting ) {
124- rediSearchSession .createTable (tableMetadata .getTable (), buildColumnHandles (tableMetadata ));
125- }
126-
127- @ Override
128- public void dropTable (ConnectorSession session , ConnectorTableHandle tableHandle ) {
129- RediSearchTableHandle table = (RediSearchTableHandle ) tableHandle ;
130-
131- rediSearchSession .dropTable (table .getSchemaTableName ());
132- }
133-
134- @ Override
135- public void addColumn (ConnectorSession session , ConnectorTableHandle tableHandle , ColumnMetadata column ) {
136- rediSearchSession .addColumn (((RediSearchTableHandle ) tableHandle ).getSchemaTableName (), column );
137- }
138-
139- @ Override
140- public void dropColumn (ConnectorSession session , ConnectorTableHandle tableHandle , ColumnHandle column ) {
141- // TODO
142- }
143-
144- @ Override
145- public ConnectorOutputTableHandle beginCreateTable (ConnectorSession session , ConnectorTableMetadata tableMetadata ,
146- Optional <ConnectorNewTableLayout > layout ) {
147- List <RediSearchColumnHandle > columns = buildColumnHandles (tableMetadata );
148-
149- rediSearchSession .createTable (tableMetadata .getTable (), columns );
150-
151- setRollback (() -> rediSearchSession .dropTable (tableMetadata .getTable ()));
152-
153- return new RediSearchOutputTableHandle (tableMetadata .getTable (),
154- columns .stream ().filter (c -> !c .isHidden ()).collect (toList ()));
155- }
156-
157- @ Override
158- public Optional <ConnectorOutputMetadata > finishCreateTable (ConnectorSession session ,
159- ConnectorOutputTableHandle tableHandle , Collection <Slice > fragments ,
160- Collection <ComputedStatistics > computedStatistics ) {
161- clearRollback ();
162- return Optional .empty ();
163- }
164-
165- @ Override
166- public ConnectorInsertTableHandle beginInsert (ConnectorSession session , ConnectorTableHandle tableHandle ) {
167- RediSearchTableHandle table = (RediSearchTableHandle ) tableHandle ;
168- List <RediSearchColumnHandle > columns = rediSearchSession .getTable (table .getSchemaTableName ()).getColumns ();
169-
170- return new RediSearchInsertTableHandle (table .getSchemaTableName (),
171- columns .stream ().filter (column -> !column .isHidden ())
172- .peek (column -> validateColumnNameForInsert (column .getName ())).collect (toImmutableList ()));
173- }
174-
175- @ Override
176- public Optional <ConnectorOutputMetadata > finishInsert (ConnectorSession session ,
177- ConnectorInsertTableHandle insertHandle , Collection <Slice > fragments ,
178- Collection <ComputedStatistics > computedStatistics ) {
179- return Optional .empty ();
180- }
117+ // @Override
118+ // public void createTable(ConnectorSession session, ConnectorTableMetadata tableMetadata, boolean ignoreExisting) {
119+ // rediSearchSession.createTable(tableMetadata.getTable(), buildColumnHandles(tableMetadata));
120+ // }
121+ //
122+ // @Override
123+ // public void dropTable(ConnectorSession session, ConnectorTableHandle tableHandle) {
124+ // RediSearchTableHandle table = (RediSearchTableHandle) tableHandle;
125+ //
126+ // rediSearchSession.dropTable(table.getSchemaTableName());
127+ // }
128+ //
129+ // @Override
130+ // public ConnectorOutputTableHandle beginCreateTable(ConnectorSession session, ConnectorTableMetadata tableMetadata,
131+ // Optional<ConnectorNewTableLayout> layout) {
132+ // List<RediSearchColumnHandle> columns = buildColumnHandles(tableMetadata);
133+ //
134+ // rediSearchSession.createTable(tableMetadata.getTable(), columns);
135+ //
136+ // setRollback(() -> rediSearchSession.dropTable(tableMetadata.getTable()));
137+ //
138+ // return new RediSearchOutputTableHandle(tableMetadata.getTable(),
139+ // columns.stream().filter(c -> !c.isHidden()).collect(toList()));
140+ // }
141+
142+ // @Override
143+ // public Optional<ConnectorOutputMetadata> finishCreateTable(ConnectorSession session,
144+ // ConnectorOutputTableHandle tableHandle, Collection<Slice> fragments,
145+ // Collection<ComputedStatistics> computedStatistics) {
146+ // clearRollback();
147+ // return Optional.empty();
148+ // }
149+
150+ // @Override
151+ // public ConnectorInsertTableHandle beginInsert(ConnectorSession session, ConnectorTableHandle tableHandle) {
152+ // RediSearchTableHandle table = (RediSearchTableHandle) tableHandle;
153+ // List<RediSearchColumnHandle> columns = rediSearchSession.getTable(table.getSchemaTableName()).getColumns();
154+ //
155+ // return new RediSearchInsertTableHandle(table.getSchemaTableName(),
156+ // columns.stream().filter(column -> !column.isHidden())
157+ // .peek(column -> validateColumnNameForInsert(column.getName())).collect(toImmutableList()));
158+ // }
159+ //
160+ // @Override
161+ // public Optional<ConnectorOutputMetadata> finishInsert(ConnectorSession session,
162+ // ConnectorInsertTableHandle insertHandle, Collection<Slice> fragments,
163+ // Collection<ComputedStatistics> computedStatistics) {
164+ // return Optional.empty();
165+ // }
181166
182167 @ Override
183168 public boolean usesLegacyTableLayouts () {
@@ -225,17 +210,17 @@ public Optional<ConstraintApplicationResult<ConnectorTableHandle>> applyFilter(C
225210 return Optional .of (new ConstraintApplicationResult <>(handle , constraint .getSummary (), false ));
226211 }
227212
228- private void setRollback (Runnable action ) {
229- checkState (rollbackAction .compareAndSet (null , action ), "rollback action is already set" );
230- }
231-
232- private void clearRollback () {
233- rollbackAction .set (null );
234- }
213+ // private void setRollback(Runnable action) {
214+ // checkState(rollbackAction.compareAndSet(null, action), "rollback action is already set");
215+ // }
216+ //
217+ // private void clearRollback() {
218+ // rollbackAction.set(null);
219+ // }
235220
236- public void rollback () {
237- Optional .ofNullable (rollbackAction .getAndSet (null )).ifPresent (Runnable ::run );
238- }
221+ // public void rollback() {
222+ // Optional.ofNullable(rollbackAction.getAndSet(null)).ifPresent(Runnable::run);
223+ // }
239224
240225 private static SchemaTableName getTableName (ConnectorTableHandle tableHandle ) {
241226 return ((RediSearchTableHandle ) tableHandle ).getSchemaTableName ();
@@ -251,14 +236,14 @@ private ConnectorTableMetadata getTableMetadata(ConnectorSession session, Schema
251236 return new ConnectorTableMetadata (tableName , columns );
252237 }
253238
254- private static List <RediSearchColumnHandle > buildColumnHandles (ConnectorTableMetadata tableMetadata ) {
255- return tableMetadata .getColumns ().stream ()
256- .map (m -> new RediSearchColumnHandle (m .getName (), m .getType (), m .isHidden ())).collect (toList ());
257- }
239+ // private static List<RediSearchColumnHandle> buildColumnHandles(ConnectorTableMetadata tableMetadata) {
240+ // return tableMetadata.getColumns().stream()
241+ // .map(m -> new RediSearchColumnHandle(m.getName(), m.getType(), m.isHidden())).collect(toList());
242+ // }
258243
259- private static void validateColumnNameForInsert (String columnName ) {
260- if (columnName .contains ("$" ) || columnName .contains ("." )) {
261- throw new IllegalArgumentException ("Column name must not contain '$' or '.' for INSERT: " + columnName );
262- }
263- }
244+ // private static void validateColumnNameForInsert(String columnName) {
245+ // if (columnName.contains("$") || columnName.contains(".")) {
246+ // throw new IllegalArgumentException("Column name must not contain '$' or '.' for INSERT: " + columnName);
247+ // }
248+ // }
264249}
0 commit comments