{"record":{"id":"a12695a806f9256c","repo":"hasura/graphql-engine","slug":"cannot-get-absolute-path-w","errorCode":null,"errorMessage":"cannot get absolute path: %w","messagePattern":"cannot get absolute path: %w","errorType":"console","errorClass":null,"httpStatus":null,"severity":"error","filePath":"cli/cli.go","lineNumber":576,"sourceCode":"\t\tec.ID = uuid.NewString()\n\t\tec.Logger.Debugf(\"execution id: %v\", ec.ID)\n\t}\n\n\tec.Telemetry.ExecutionID = ec.ID\n\n\treturn nil\n}\n\n// SetupPlugins create and returns the inferred paths for hasura. By default, it assumes\n// $HOME/.hasura as the base path.\nfunc (ec *ExecutionContext) SetupPlugins() error {\n\tvar op errors.Op = \"cli.ExecutionContext.SetupPlugins\"\n\n\tbase := filepath.Join(ec.GlobalConfigDir, \"plugins\")\n\n\tbase, err := filepath.Abs(base)\n\tif err != nil {\n\t\treturn errors.E(op, fmt.Errorf(\"cannot get absolute path: %w\", err))\n\t}\n\n\tec.PluginsConfig = plugins.New(base)\n\tec.PluginsConfig.Logger = ec.Logger\n\n\tec.PluginsConfig.Repo.Logger = ec.Logger\n\tif ec.GlobalConfig.CLIEnvironment == ServerOnDockerEnvironment {\n\t\tec.PluginsConfig.Repo.DisableCloneOrUpdate = true\n\t}\n\n\terr = ec.PluginsConfig.Prepare()\n\tif err != nil {\n\t\treturn errors.E(op, err)\n\t}\n\n\treturn nil\n}\n","sourceCodeStart":558,"sourceCodeEnd":594,"githubUrl":"https://github.com/hasura/graphql-engine/blob/724551b9ae87845594ef0408cff0e50eb6c90dc5/cli/cli.go#L558-L594","documentation":"Thrown when a type used in a boolean expression/filter has no type mapping in the target data connector. Type mappings tell NDC how a GraphQL/custom type maps to the connector's native type; without one the connector cannot evaluate predicates on that type.","triggerScenarios":"Filtering on a model field whose type has no entry in the data connector's type_mappings; adding a command returning a custom type that the connector doesn't support; using a scalar format (e.g. a specific datetime format) not declared in the connector's type mappings.","commonSituations":"Custom object/comparison types not added to the connector's type mapping config; switching connector versions that dropped support for a type; formatting UUID/bigint/datetime as a type the connector can't map.","solutions":["Add a type mapping for the named type in the data connector configuration","Use a supported underlying type or cast the field to a mapped type in the model definition","If it's a comparison type, register it in the connector's comparison_types/type mappings","Verify the type name matches exactly (spelling, casing) between metadata and connector config"],"exampleFix":"// before: model field typed 'Money' with no mapping\n// after: add to data connector type_mappings\nmoney: { source_type: 'Money', type: 'string' }","handlingStrategy":"validation","validationCode":"// Verify each filterable field's type has a connector type mapping\nfor (const f of model.fields) {\n  if (filterable(f) && !connectorTypeMappings[f.type.name]) {\n    throw new Error(`No type mapping for ${f.type.name}`);\n  }\n}","typeGuard":"const isMappedType = (mappings, typeName) => mappings[typeName] !== undefined;","tryCatchPattern":"try { resolve(); } catch (e) { if (e?.code === 'UnknownTypeMapping') addTypeMapping(e.type_name, e.data_connector_name); else throw e; }","preventionTips":["Maintain type mappings alongside model definitions in code review","Add CI checks that all custom types used in filters have mappings"],"tags":["data-connector","type-mapping","filtering","metadata"],"backgroundTag":"missing-type-mapping","analyzedSha":"724551b9ae87845594ef0408cff0e50eb6c90dc5","analyzedAt":"2026-08-28T07:32:55.105Z","schemaVersion":2},"datasetVersion":"2026-08-28T11:17:15.048Z"}