diff --git a/go.mod b/go.mod index 85a9140b..2458a7a7 100644 --- a/go.mod +++ b/go.mod @@ -18,7 +18,7 @@ require ( github.com/spf13/cobra v1.4.0 github.com/spf13/pflag v1.0.5 github.com/spf13/viper v1.10.1 - github.com/stackql/any-sdk v0.5.1-alpha03 + github.com/stackql/any-sdk v0.5.1-alpha07 github.com/stackql/go-suffix-map v0.0.1-alpha01 github.com/stackql/psql-wire v0.1.2-alpha01 github.com/stackql/stackql-parser v0.0.16-alpha01 diff --git a/go.sum b/go.sum index 051bb975..8df6f461 100644 --- a/go.sum +++ b/go.sum @@ -467,8 +467,8 @@ github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.10.1 h1:nuJZuYpG7gTj/XqiUwg8bA0cp1+M2mC3J4g5luUYBKk= github.com/spf13/viper v1.10.1/go.mod h1:IGlFPqhNAPKRxohIzWpI5QEy4kuI7tcl5WvR+8qy1rU= -github.com/stackql/any-sdk v0.5.1-alpha03 h1:zYVr/ysJ26Tb1JCl/49MymMsHH+5dC2iGircAJhGbIg= -github.com/stackql/any-sdk v0.5.1-alpha03/go.mod h1:ZRTGrcDKFLaC+5yWo4OqXVs1HTNxgYM9nQsQDlq0Fe0= +github.com/stackql/any-sdk v0.5.1-alpha07 h1:CfWos4QmtETs9UNXv36JXT9vK7DR/PiNOWhvlTi6aDg= +github.com/stackql/any-sdk v0.5.1-alpha07/go.mod h1:ZRTGrcDKFLaC+5yWo4OqXVs1HTNxgYM9nQsQDlq0Fe0= github.com/stackql/go-suffix-map v0.0.1-alpha01 h1:TDUDS8bySu41Oo9p0eniUeCm43mnRM6zFEd6j6VUaz8= github.com/stackql/go-suffix-map v0.0.1-alpha01/go.mod h1:QAi+SKukOyf4dBtWy8UMy+hsXXV+yyEE4vmBkji2V7g= github.com/stackql/psql-wire v0.1.2-alpha01 h1:RMBRURGspmSNqm2/sgoEc+D6Sri2y/3drjl4nKlOOi4= diff --git a/internal/stackql/planbuilder/plan_builder.go b/internal/stackql/planbuilder/plan_builder.go index 9387de3e..bb6796aa 100644 --- a/internal/stackql/planbuilder/plan_builder.go +++ b/internal/stackql/planbuilder/plan_builder.go @@ -1276,7 +1276,7 @@ func (pgb *standardPlanGraphBuilder) handleShow(pbi planbuilderinput.PlanBuilder } case "METHODS": //nolint:wastedassign // TODO: fix this - tbl, err = primitiveGenerator.GetPrimitiveComposer().GetTable(node.OnTable) //nolint:ineffassign,staticcheck,lll // TODO: fix this + tbl, err = primitiveGenerator.GetPrimitiveComposer().GetTable(node) //nolint:ineffassign,staticcheck,lll // TODO: fix this } prov := primitiveGenerator.GetPrimitiveComposer().GetProvider() pr := primitive.NewMetaDataPrimitive( diff --git a/internal/stackql/primitivebuilder/shortcuts.go b/internal/stackql/primitivebuilder/shortcuts.go index 7650a787..d22c7460 100644 --- a/internal/stackql/primitivebuilder/shortcuts.go +++ b/internal/stackql/primitivebuilder/shortcuts.go @@ -204,11 +204,25 @@ func NewShowInstructionExecutor( return util.PrepareResultSet(internaldto.NewPrepareResultSetDTO(nil, keys, columnOrder, nil, mErr, nil, handlerCtx.GetTypingConfig())) } + views, hasViews := rsc.GetViewsForSqlDialect( + handlerCtx.GetSQLSystem().GetName(), + ) methodKeys := make(map[string]map[string]interface{}) + j := 0 + if hasViews { + for i, v := range views { + vMap := v.ToPresentationMap(extended) + if i == 0 { + methodKeys[fmt.Sprintf("%06d", i)] = vMap + j++ + columnOrder = v.GetColumnOrder(extended) + } + } + } for i, k := range mOrd { method := k methMap := method.ToPresentationMap(extended) - methodKeys[fmt.Sprintf("%06d", i)] = methMap + methodKeys[fmt.Sprintf("%06d", j+i)] = methMap columnOrder = method.GetColumnOrder(extended) } keys = methodKeys diff --git a/test/robot/functional/stackql_from_cmd_line.robot b/test/robot/functional/stackql_from_cmd_line.robot index d45d5ce1..435563e6 100644 --- a/test/robot/functional/stackql_from_cmd_line.robot +++ b/test/robot/functional/stackql_from_cmd_line.robot @@ -655,6 +655,43 @@ Show Methods including server params AWS ... show methods in aws.ec2.vpcs; ... ${outputStr} +Show Methods including view + ${outputStr} = Catenate SEPARATOR=\n + ... |------------|----------------|---------| + ... |${SPACE}MethodName${SPACE}|${SPACE}RequiredParams${SPACE}|${SPACE}SQLVerb${SPACE}| + ... |------------|----------------|---------| + ... |${SPACE}__view__${SPACE}${SPACE}${SPACE}|${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}|${SPACE}SELECT${SPACE}${SPACE}| + ... |------------|----------------|---------| + Should StackQL Current Exec Equal + ... show methods in aws.pseudo_s3.s3_bucket_listing; + ... ${outputStr} + +Show Methods including view and others + ${outputStr} = Catenate SEPARATOR=\n + ... |-----------------|----------------|---------| + ... |${SPACE}${SPACE}${SPACE}MethodName${SPACE}${SPACE}${SPACE}${SPACE}|${SPACE}RequiredParams${SPACE}|${SPACE}SQLVerb${SPACE}| + ... |-----------------|----------------|---------| + ... |${SPACE}__view__${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}|${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}|${SPACE}SELECT${SPACE}${SPACE}| + ... |-----------------|----------------|---------| + ... |${SPACE}create_resource${SPACE}|${SPACE}region${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}|${SPACE}INSERT${SPACE}${SPACE}| + ... |-----------------|----------------|---------| + Should StackQL Current Exec Equal + ... show methods in aws.pseudo_s3.s3_bucket_detail_defaulted; + ... ${outputStr} + +Show Methods including required params view and others + ${outputStr} = Catenate SEPARATOR=\n + ... |-----------------|--------------------------|---------| + ... |${SPACE}${SPACE}${SPACE}MethodName${SPACE}${SPACE}${SPACE}${SPACE}|${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}RequiredParams${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}|${SPACE}SQLVerb${SPACE}| + ... |-----------------|--------------------------|---------| + ... |${SPACE}__view__${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}|${SPACE}data__Identifier,${SPACE}region${SPACE}|${SPACE}SELECT${SPACE}${SPACE}| + ... |-----------------|--------------------------|---------| + ... |${SPACE}create_resource${SPACE}|${SPACE}region${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}|${SPACE}INSERT${SPACE}${SPACE}| + ... |-----------------|--------------------------|---------| + Should StackQL Current Exec Equal + ... show methods in aws.pseudo_s3.s3_bucket_polymorphic; + ... ${outputStr} + Show Insert Google Container Clusters Should StackQL Exec Contain ... SHOW INSERT INTO google.container."projects.zones.clusters"; diff --git a/test/robot/functional/stackql_mocked_from_cmd_line.robot b/test/robot/functional/stackql_mocked_from_cmd_line.robot index 3ab3dffe..82777548 100644 --- a/test/robot/functional/stackql_mocked_from_cmd_line.robot +++ b/test/robot/functional/stackql_mocked_from_cmd_line.robot @@ -460,6 +460,8 @@ AWS Hybrid Service Cloud Control S3 Bucket Show Methods ... |-----------------|----------------------------|---------| ... |${SPACE}${SPACE}${SPACE}MethodName${SPACE}${SPACE}${SPACE}${SPACE}|${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}RequiredParams${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}|${SPACE}SQLVerb${SPACE}| ... |-----------------|----------------------------|---------| + ... |${SPACE}__view__${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}|${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}${SPACE}|${SPACE}SELECT${SPACE}${SPACE}| + ... |-----------------|----------------------------|---------| ... |${SPACE}create_resource${SPACE}|${SPACE}data__DesiredState,${SPACE}region${SPACE}|${SPACE}INSERT${SPACE}${SPACE}| ... |-----------------|----------------------------|---------| Should StackQL Exec Inline Equal Both Streams