On a fresh v0.29.0 install, preview deployments are completely non-functional. A PR triggers preview creation and the GitHub comment appears with status "Building", but the preview never actually starts building — no container is ever created on the server. The preview card in the Dokploy UI is also unusable: Delete fails, Rebuild is permanently greyed out, and Logs / Deployments sub-views also fail.
dokploy.1.7shijo4fybb3@services01 | ✅ SECURITY: Preview deployment authorized for Next.js from user colocated on MyOrg/MyRepository. Permission: admin
dokploy.1.7shijo4fybb3@services01 | Error Error: Failed query: select "previewDeployments"."previewDeploymentId", "previewDeployments"."branch", "previewDeployments"."pullRequestId", "previewDeployments"."pullRequestNumber", "previewDeployments"."pullRequestURL", "previewDeployments"."pullRequestTitle", "previewDeployments"."pullRequestCommentId", "previewDeployments"."previewStatus", "previewDeployments"."appName", "previewDeployments"."applicationId", "previewDeployments"."domainId", "previewDeployments"."createdAt", "previewDeployments"."expiresAt", "previewDeployments_domain"."data" as "domain", "previewDeployments_application"."data" as "application" from "preview_deployments" "previewDeployments" left join lateral (select json_build_array("previewDeployments_domain"."domainId", "previewDeployments_domain"."host", "previewDeployments_domain"."https", "previewDeployments_domain"."port", "previewDeployments_domain"."customEntrypoint", "previewDeployments_domain"."path", "previewDeployments_domain"."serviceName", "previewDeployments_domain"."domainType", "previewDeployments_domain"."uniqueConfigKey", "previewDeployments_domain"."createdAt", "previewDeployments_domain"."composeId", "previewDeployments_domain"."customCertResolver", "previewDeployments_domain"."applicationId", "previewDeployments_domain"."previewDeploymentId", "previewDeployments_domain"."certificateType", "previewDeployments_domain"."internalPath", "previewDeployments_domain"."stripPath", "previewDeployments_domain"."middlewares") as "data" from (select * from "domain" "previewDeployments_domain" where "previewDeployments_domain"."domainId" = "previewDeployments"."domainId" limit $1) "previewDeployments_domain") "previewDeployments_domain" on true left join lateral (select json_build_array("previewDeployments_application"."applicationId", "previewDeployments_application"."name", "previewDeployments_application"."appName", "previewDeployments_application"."description", "previewDeployments_application"."env", "previewDeployments_application"."previewEnv", "previewDeployments_application"."watchPaths", "previewDeployments_application"."previewBuildArgs", "previewDeployments_application"."previewBuildSecrets", "previewDeployments_application"."previewLabels", "previewDeployments_application"."previewWildcard", "previewDeployments_application"."previewPort", "previewDeployments_application"."previewHttps", "previewDeployments_application"."previewPath", "previewDeployments_application"."certificateType", "previewDeployments_application"."previewCustomCertResolver", "previewDeployments_application"."previewLimit", "previewDeployments_application"."isPreviewDeploymentsActive", "previewDeployments_application"."previewRequireCollaboratorPermissions", "previewDeployments_application"."rollbackActive", "previewDeployments_application"."buildArgs", "previewDeployments_application"."buildSecrets", "previewDeployments_application"."memoryReservation", "previewDeployments_application"."memoryLimit", "previewDeployments_application"."cpuReservation", "previewDeployments_application"."cpuLimit", "previewDeployments_application"."title", "previewDeployments_application"."enabled", "previewDeployments_application"."subtitle", "previewDeployments_application"."command", "previewDeployments_application"."args", "previewDeployments_application"."icon", "previewDeployments_application"."refreshToken", "previewDeployments_application"."sourceType", "previewDeployments_application"."cleanCache", "previewDeployments_application"."repository", "previewDeployments_application"."owner", "previewDeployments_application"."branch", "previewDeployments_application"."buildPath", "previewDeployments_application"."triggerType", "previewDeployments_application"."autoDeploy", "previewDeployments_application"."gitlabProjectId", "previewDeployments_application"."gitlabRepository", "previewDeployments_application"."gitlabOwner", "previewDeployments_application"."gitlabBranch", "previewDeployments_application"."gitlabBuildPath", "previewDeployments_application"."gitlabPathNamespace", "previewDeployments_application"."giteaRepository", "previewDeployments_application"."giteaOwner", "previewDeployments_application"."giteaBranch", "previewDeployments_application"."giteaBuildPath", "previewDeployments_application"."bitbucketRepository", "previewDeployments_application"."bitbucketRepositorySlug", "previewDeployments_application"."bitbucketOwner", "previewDeployments_application"."bitbucketBranch", "previewDeployments_application"."bitbucketBuildPath", "previewDeployments_application"."username", "previewDeployments_application"."password", "previewDeployments_application"."dockerImage", "previewDeployments_application"."registryUrl", "previewDeployments_application"."customGitUrl", "previewDeployments_application"."customGitBranch", "previewDeployments_application"."customGitBuildPath", "previewDeployments_application"."customGitSSHKeyId", "previewDeployments_application"."enableSubmodules", "previewDeployments_application"."dockerfile", "previewDeployments_application"."dockerContextPath", "previewDeployments_application"."dockerBuildStage", "previewDeployments_application"."dropBuildPath", "previewDeployments_application"."healthCheckSwarm", "previewDeployments_application"."restartPolicySwarm", "previewDeployments_application"."placementSwarm", "previewDeployments_application"."updateConfigSwarm", "previewDeployments_application"."rollbackConfigSwarm", "previewDeployments_application"."modeSwarm", "previewDeployments_application"."labelsSwarm", "previewDeployments_application"."networkSwarm", "previewDeployments_application"."stopGracePeriodSwarm", "previewDeployments_application"."endpointSpecSwarm", "previewDeployments_application"."ulimitsSwarm", "previewDeployments_application"."replicas", "previewDeployments_application"."applicationStatus", "previewDeployments_application"."buildType", "previewDeployments_application"."railpackVersion", "previewDeployments_application"."herokuVersion", "previewDeployments_application"."publishDirectory", "previewDeployments_application"."isStaticSpa", "previewDeployments_application"."createEnvFile", "previewDeployments_application"."createdAt", "previewDeployments_application"."registryId", "previewDeployments_application"."rollbackRegistryId", "previewDeployments_application"."environmentId", "previewDeployments_application"."githubId", "previewDeployments_application"."gitlabId", "previewDeployments_application"."giteaId", "previewDeployments_application"."bitbucketId", "previewDeployments_application"."serverId", "previewDeployments_application"."buildServerId", "previewDeployments_application"."buildRegistryId", "previewDeployments_application_server"."data", "previewDeployments_application_environment"."data") as "data" from (select * from "application" "previewDeployments_application" where "previewDeployments_application"."applicationId" = "previewDeployments"."applicationId" limit $2) "previewDeployments_application" left join lateral (select json_build_array("previewDeployments_application_server"."serverId", "previewDeployments_application_server"."name", "previewDeployments_application_server"."description", "previewDeployments_application_server"."ipAddress", "previewDeployments_application_server"."port", "previewDeployments_application_server"."username", "previewDeployments_application_server"."appName", "previewDeployments_application_server"."enableDockerCleanup", "previewDeployments_application_server"."createdAt", "previewDeployments_application_server"."organizationId", "previewDeployments_application_server"."serverStatus", "previewDeployments_application_server"."serverType", "previewDeployments_application_server"."command", "previewDeployments_application_server"."sshKeyId", "previewDeployments_application_server"."metricsConfig") as "data" from (select * from "server" "previewDeployments_application_server" where "previewDeployments_application_server"."serverId" = "previewDeployments_application"."serverId" limit $3) "previewDeployments_application_server") "previewDeployments_application_server" on true left join lateral (select json_build_array("previewDeployments_application_environment"."environmentId", "previewDeployments_application_environment"."name", "previewDeployments_application_environment"."description", "previewDeployments_application_environment"."createdAt", "previewDeployments_application_environment"."env", "previewDeployments_application_environment"."projectId", "previewDeployments_application_environment"."isDefault", "previewDeployments_application_environment_project"."data") as "data" from (select * from "environment" "previewDeployments_application_environment" where "previewDeployments_application_environment"."environmentId" = "previewDeployments_application"."environmentId" limit $4) "previewDeployments_application_environment" left join lateral (select json_build_array("previewDeployments_application_environment_project"."projectId", "previewDeployments_application_environment_project"."name", "previewDeployments_application_environment_project"."description", "previewDeployments_application_environment_project"."createdAt", "previewDeployments_application_environment_project"."organizationId", "previewDeployments_application_environment_project"."env") as "data" from (select * from "project" "previewDeployments_application_environment_project" where "previewDeployments_application_environment_project"."projectId" = "previewDeployments_application_environment"."projectId" limit $5) "previewDeployments_application_environment_project") "previewDeployments_application_environment_project" on true) "previewDeployments_application_environment" on true) "previewDeployments_application" on true where "previewDeployments"."previewDeploymentId" = $6 limit $7
dokploy.1.7shijo4fybb3@services01 | params: 1,1,1,1,1,GG-t09ZME3yxj6JwsTKIb,1
dokploy.1.7shijo4fybb3@services01 | at async PR.TR.autorun [as processFn] (dist/server.mjs:1:1657) {
dokploy.1.7shijo4fybb3@services01 | query: 'select "previewDeployments"."previewDeploymentId", "previewDeployments"."branch", "previewDeployments"."pullRequestId", "previewDeployments"."pullRequestNumber", "previewDeployments"."pullRequestURL", "previewDeployments"."pullRequestTitle", "previewDeployments"."pullRequestCommentId", "previewDeployments"."previewStatus", "previewDeployments"."appName", "previewDeployments"."applicationId", "previewDeployments"."domainId", "previewDeployments"."createdAt", "previewDeployments"."expiresAt", "previewDeployments_domain"."data" as "domain", "previewDeployments_application"."data" as "application" from "preview_deployments" "previewDeployments" left join lateral (select json_build_array("previewDeployments_domain"."domainId", "previewDeployments_domain"."host", "previewDeployments_domain"."https", "previewDeployments_domain"."port", "previewDeployments_domain"."customEntrypoint", "previewDeployments_domain"."path", "previewDeployments_domain"."serviceName", "previewDeployments_domain"."domainType", "previewDeployments_domain"."uniqueConfigKey", "previewDeployments_domain"."createdAt", "previewDeployments_domain"."composeId", "previewDeployments_domain"."customCertResolver", "previewDeployments_domain"."applicationId", "previewDeployments_domain"."previewDeploymentId", "previewDeployments_domain"."certificateType", "previewDeployments_domain"."internalPath", "previewDeployments_domain"."stripPath", "previewDeployments_domain"."middlewares") as "data" from (select * from "domain" "previewDeployments_domain" where "previewDeployments_domain"."domainId" = "previewDeployments"."domainId" limit $1) "previewDeployments_domain") "previewDeployments_domain" on true left join lateral (select json_build_array("previewDeployments_application"."applicationId", "previewDeployments_application"."name", "previewDeployments_application"."appName", "previewDeployments_application"."description", "previewDeployments_application"."env", "previewDeployments_application"."previewEnv", "previewDeployments_application"."watchPaths", "previewDeployments_application"."previewBuildArgs", "previewDeployments_application"."previewBuildSecrets", "previewDeployments_application"."previewLabels", "previewDeployments_application"."previewWildcard", "previewDeployments_application"."previewPort", "previewDeployments_application"."previewHttps", "previewDeployments_application"."previewPath", "previewDeployments_application"."certificateType", "previewDeployments_application"."previewCustomCertResolver", "previewDeployments_application"."previewLimit", "previewDeployments_application"."isPreviewDeploymentsActive", "previewDeployments_application"."previewRequireCollaboratorPermissions", "previewDeployments_application"."rollbackActive", "previewDeployments_application"."buildArgs", "previewDeployments_application"."buildSecrets", "previewDeployments_application"."memoryReservation", "previewDeployments_application"."memoryLimit", "previewDeployments_application"."cpuReservation", "previewDeployments_application"."cpuLimit", "previewDeployments_application"."title", "previewDeployments_application"."enabled", "previewDeployments_application"."subtitle", "previewDeployments_application"."command", "previewDeployments_application"."args", "previewDeployments_application"."icon", "previewDeployments_application"."refreshToken", "previewDeployments_application"."sourceType", "previewDeployments_application"."cleanCache", "previewDeployments_application"."repository", "previewDeployments_application"."owner", "previewDeployments_application"."branch", "previewDeployments_application"."buildPath", "previewDeployments_application"."triggerType", "previewDeployments_application"."autoDeploy", "previewDeployments_application"."gitlabProjectId", "previewDeployments_application"."gitlabRepository", "previewDeployments_application"."gitlabOwner", "previewDeployments_application"."gitlabBranch", "previewDeployments_application"."gitlabBuildPath", "previewDeployments_application"."gitlabPathNamespace", "previewDeployments_application"."giteaRepository", "previewDeployments_application"."giteaOwner", "previewDeployments_application"."giteaBranch", "previewDeployments_application"."giteaBuildPath", "previewDeployments_application"."bitbucketRepository", "previewDeployments_application"."bitbucketRepositorySlug", "previewDeployments_application"."bitbucketOwner", "previewDeployments_application"."bitbucketBranch", "previewDeployments_application"."bitbucketBuildPath", "previewDeployments_application"."username", "previewDeployments_application"."password", "previewDeployments_application"."dockerImage", "previewDeployments_application"."registryUrl", "previewDeployments_application"."customGitUrl", "previewDeployments_application"."customGitBranch", "previewDeployments_application"."customGitBuildPath", "previewDeployments_application"."customGitSSHKeyId", "previewDeployments_application"."enableSubmodules", "previewDeployments_application"."dockerfile", "previewDeployments_application"."dockerContextPath", "previewDeployments_application"."dockerBuildStage", "previewDeployments_application"."dropBuildPath", "previewDeployments_application"."healthCheckSwarm", "previewDeployments_application"."restartPolicySwarm", "previewDeployments_application"."placementSwarm", "previewDeployments_application"."updateConfigSwarm", "previewDeployments_application"."rollbackConfigSwarm", "previewDeployments_application"."modeSwarm", "previewDeployments_application"."labelsSwarm", "previewDeployments_application"."networkSwarm", "previewDeployments_application"."stopGracePeriodSwarm", "previewDeployments_application"."endpointSpecSwarm", "previewDeployments_application"."ulimitsSwarm", "previewDeployments_application"."replicas", "previewDeployments_application"."applicationStatus", "previewDeployments_application"."buildType", "previewDeployments_application"."railpackVersion", "previewDeployments_application"."herokuVersion", "previewDeployments_application"."publishDirectory", "previewDeployments_application"."isStaticSpa", "previewDeployments_application"."createEnvFile", "previewDeployments_application"."createdAt", "previewDeployments_application"."registryId", "previewDeployments_application"."rollbackRegistryId", "previewDeployments_application"."environmentId", "previewDeployments_application"."githubId", "previewDeployments_application"."gitlabId", "previewDeployments_application"."giteaId", "previewDeployments_application"."bitbucketId", "previewDeployments_application"."serverId", "previewDeployments_application"."buildServerId", "previewDeployments_application"."buildRegistryId", "previewDeployments_application_server"."data", "previewDeployments_application_environment"."data") as "data" from (select * from "application" "previewDeployments_application" where "previewDeployments_application"."applicationId" = "previewDeployments"."applicationId" limit $2) "previewDeployments_application" left join lateral (select json_build_array("previewDeployments_application_server"."serverId", "previewDeployments_application_server"."name", "previewDeployments_application_server"."description", "previewDeployments_application_server"."ipAddress", "previewDeployments_application_server"."port", "previewDeployments_application_server"."username", "previewDeployments_application_server"."appName", "previewDeployments_application_server"."enableDockerCleanup", "previewDeployments_application_server"."createdAt", "previewDeployments_application_server"."organizationId", "previewDeployments_application_server"."serverStatus", "previewDeployments_application_server"."serverType", "previewDeployments_application_server"."command", "previewDeployments_application_server"."sshKeyId", "previewDeployments_application_server"."metricsConfig") as "data" from (select * from "server" "previewDeployments_application_server" where "previewDeployments_application_server"."serverId" = "previewDeployments_application"."serverId" limit $3) "previewDeployments_application_server") "previewDeployments_application_server" on true left join lateral (select json_build_array("previewDeployments_application_environment"."environmentId", "previewDeployments_application_environment"."name", "previewDeployments_application_environment"."description", "previewDeployments_application_environment"."createdAt", "previewDeployments_application_environment"."env", "previewDeployments_application_environment"."projectId", "previewDeployments_application_environment"."isDefault", "previewDeployments_application_environment_project"."data") as "data" from (select * from "environment" "previewDeployments_application_environment" where "previewDeployments_application_environment"."environmentId" = "previewDeployments_application"."environmentId" limit $4) "previewDeployments_application_environment" left join lateral (select json_build_array("previewDeployments_application_environment_project"."projectId", "previewDeployments_application_environment_project"."name", "previewDeployments_application_environment_project"."description", "previewDeployments_application_environment_project"."createdAt", "previewDeployments_application_environment_project"."organizationId", "previewDeployments_application_environment_project"."env") as "data" from (select * from "project" "previewDeployments_application_environment_project" where "previewDeployments_application_environment_project"."projectId" = "previewDeployments_application_environment"."projectId" limit $5) "previewDeployments_application_environment_project") "previewDeployments_application_environment_project" on true) "previewDeployments_application_environment" on true) "previewDeployments_application" on true where "previewDeployments"."previewDeploymentId" = $6 limit $7',
dokploy.1.7shijo4fybb3@services01 | params: [ 1, 1, 1, 1, 1, 'GG-t09ZME3yxj6JwsTKIb', 1 ],
dokploy.1.7shijo4fybb3@services01 | [cause]: Error [PostgresError]: cannot pass more than 100 arguments to a function
dokploy.1.7shijo4fybb3@services01 | at ignore-listed frames {
dokploy.1.7shijo4fybb3@services01 | severity_local: 'ERROR',
dokploy.1.7shijo4fybb3@services01 | severity: 'ERROR',
dokploy.1.7shijo4fybb3@services01 | code: '54023',
dokploy.1.7shijo4fybb3@services01 | position: '1708',
dokploy.1.7shijo4fybb3@services01 | file: 'parse_func.c',
dokploy.1.7shijo4fybb3@services01 | line: '136',
dokploy.1.7shijo4fybb3@services01 | routine: 'ParseFuncOrColumn'
dokploy.1.7shijo4fybb3@services01 | }
dokploy.1.7shijo4fybb3@services01 | }
Inside the preview deployment hydration query, explicitly select only the columns needed on the application relation via Drizzle's columns: { ... } selector, rather than pulling the full row. Alternatively, split the hydration into separate queries instead of one nested relational query. The 100-arg limit is compiled into Postgres and not configurable.
Preview deployments are entirely unusable on v0.29.0. Affects every install with >100 columns on application, which is every install.
Describe the bug
On a fresh v0.29.0 install, preview deployments are completely non-functional. A PR triggers preview creation and the GitHub comment appears with status "Building", but the preview never actually starts building — no container is ever created on the server. The preview card in the Dokploy UI is also unusable: Delete fails, Rebuild is permanently greyed out, and Logs / Deployments sub-views also fail.
The deployment record exists in Postgres and the Dokploy log prints
✅ SECURITY: Preview deployment authorized...immediately before the failure, but every subsequent read of the preview crashes with a Postgres error.Root cause
Drizzle's relational query for hydrating a preview deployment with its nested
application → serverandapplication → environment → projectrelations generates a singlejson_build_array(...)call for theapplicationrow that exceeds Postgres's hard-compiledFUNC_MAX_ARGS = 100limit. Theapplicationtable has over 100 columns in v0.29.0 (preview-specific, Swarm, GitHub, GitLab, Gitea, Bitbucket, build config, etc.), so the select-all pattern inside the lateral join is no longer viable.Error
To reproduce
docker service lsshows no preview service.Suggested fix
Inside the preview deployment hydration query, explicitly select only the columns needed on the
applicationrelation via Drizzle'scolumns: { ... }selector, rather than pulling the full row. Alternatively, split the hydration into separate queries instead of one nested relational query. The 100-arg limit is compiled into Postgres and not configurable.Impact
Preview deployments are entirely unusable on v0.29.0. Affects every install with >100 columns on
application, which is every install.Environment
postgres:16image, as shipped)