GetResources extracts the resource list from the statement for exporting results as SQL. It analyzes the SQL query to determine which database tables/views are being queried.
( ctx context.Context, storeInstance *store.Store, engine storepb.Engine, databaseName string, statement string, instance *store.InstanceMessage, getDatabaseMetadataFunc base.GetDatabaseMetadataFunc, listDatabaseNamesFunc base.ListDatabaseNamesFunc, getLinkedDatabaseMetadataFunc base.GetLinkedDatabaseMetadataFunc, )
| 17 | // GetResources extracts the resource list from the statement for exporting results as SQL. |
| 18 | // It analyzes the SQL query to determine which database tables/views are being queried. |
| 19 | func GetResources( |
| 20 | ctx context.Context, |
| 21 | storeInstance *store.Store, |
| 22 | engine storepb.Engine, |
| 23 | databaseName string, |
| 24 | statement string, |
| 25 | instance *store.InstanceMessage, |
| 26 | getDatabaseMetadataFunc base.GetDatabaseMetadataFunc, |
| 27 | listDatabaseNamesFunc base.ListDatabaseNamesFunc, |
| 28 | getLinkedDatabaseMetadataFunc base.GetLinkedDatabaseMetadataFunc, |
| 29 | ) ([]base.SchemaResource, error) { |
| 30 | switch engine { |
| 31 | case storepb.Engine_MYSQL, storepb.Engine_MARIADB, storepb.Engine_OCEANBASE, storepb.Engine_TIDB: |
| 32 | return getResourcesForMySQL(ctx, storeInstance, engine, databaseName, statement, instance, getDatabaseMetadataFunc, listDatabaseNamesFunc, getLinkedDatabaseMetadataFunc) |
| 33 | case storepb.Engine_POSTGRES: |
| 34 | return getResourcesForPostgres(ctx, storeInstance, engine, databaseName, statement, instance, "public", getDatabaseMetadataFunc, listDatabaseNamesFunc, getLinkedDatabaseMetadataFunc) |
| 35 | case storepb.Engine_REDSHIFT: |
| 36 | return getResourcesForRedshift(ctx, storeInstance, engine, databaseName, statement, instance, "public", getDatabaseMetadataFunc, listDatabaseNamesFunc, getLinkedDatabaseMetadataFunc) |
| 37 | case storepb.Engine_ORACLE: |
| 38 | return getResourcesForOracle(ctx, storeInstance, engine, databaseName, statement, instance, getDatabaseMetadataFunc, listDatabaseNamesFunc, getLinkedDatabaseMetadataFunc) |
| 39 | case storepb.Engine_SNOWFLAKE: |
| 40 | return getResourcesForSnowflake(ctx, storeInstance, engine, databaseName, statement, instance, getDatabaseMetadataFunc, listDatabaseNamesFunc, getLinkedDatabaseMetadataFunc) |
| 41 | case storepb.Engine_MSSQL: |
| 42 | return getResourcesForMSSQL(ctx, storeInstance, engine, databaseName, statement, instance, getDatabaseMetadataFunc, listDatabaseNamesFunc, getLinkedDatabaseMetadataFunc) |
| 43 | default: |
| 44 | if databaseName == "" { |
| 45 | return nil, errors.Errorf("database must be specified") |
| 46 | } |
| 47 | return []base.SchemaResource{{Database: databaseName}}, nil |
| 48 | } |
| 49 | } |
| 50 | |
| 51 | func getResourcesForMySQL( |
| 52 | ctx context.Context, |