@thierrynakoa/fire-flow 12.2.1 → 13.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CREDITS.md +25 -0
- package/DOMINION-FLOW-OVERVIEW.md +182 -38
- package/README.md +399 -455
- package/TROUBLESHOOTING.md +264 -264
- package/agents/fire-debugger.md +54 -0
- package/agents/fire-executor.md +1610 -1033
- package/agents/fire-fact-checker.md +1 -1
- package/agents/fire-planner.md +85 -17
- package/agents/fire-project-researcher.md +1 -1
- package/agents/fire-researcher.md +4 -22
- package/agents/{fire-phoenix-analyst.md → fire-resurrection-analyst.md} +394 -394
- package/agents/fire-reviewer.md +552 -499
- package/agents/fire-verifier.md +114 -19
- package/bin/cli.js +18 -101
- package/commands/fire-0-orient.md +2 -2
- package/commands/fire-1a-new.md +50 -15
- package/commands/fire-1c-setup.md +33 -5
- package/commands/fire-1d-discuss.md +87 -1
- package/commands/fire-2-plan.md +556 -527
- package/commands/fire-3-execute.md +2046 -1356
- package/commands/fire-4-verify.md +975 -906
- package/commands/fire-5-handoff.md +46 -5
- package/commands/fire-6-resume.md +2 -31
- package/commands/fire-add-new-skill.md +138 -19
- package/commands/fire-autonomous.md +14 -2
- package/commands/fire-complete-milestone.md +1 -1
- package/commands/fire-cost.md +179 -183
- package/commands/fire-debug.md +1 -6
- package/commands/fire-loop-resume.md +2 -2
- package/commands/fire-loop-stop.md +1 -1
- package/commands/fire-loop.md +2 -15
- package/commands/fire-map-codebase.md +1 -1
- package/commands/fire-migrate-database.md +548 -0
- package/commands/fire-new-milestone.md +1 -1
- package/commands/fire-reflect.md +1 -2
- package/commands/fire-research.md +142 -21
- package/commands/{fire-phoenix.md → fire-resurrect.md} +859 -603
- package/commands/fire-scaffold.md +297 -0
- package/commands/fire-search.md +1 -2
- package/commands/fire-security-scan.md +483 -484
- package/commands/fire-setup.md +359 -0
- package/commands/fire-skill.md +770 -0
- package/commands/fire-skills-diff.md +506 -506
- package/commands/fire-skills-history.md +388 -388
- package/commands/fire-skills-rollback.md +7 -7
- package/commands/fire-skills-sync.md +470 -470
- package/commands/fire-test.md +5 -5
- package/commands/fire-todos.md +1 -1
- package/commands/fire-update.md +5 -5
- package/commands/fire-validate-skills.md +282 -0
- package/commands/fire-vuln-scan.md +492 -493
- package/hooks/run-hook.sh +8 -8
- package/hooks/run-session-end.sh +7 -7
- package/hooks/session-end.sh +90 -90
- package/hooks/session-start.sh +1 -1
- package/package.json +4 -24
- package/plugin.json +7 -7
- package/references/autonomy-levels.md +235 -0
- package/references/behavioral-directives.md +95 -3
- package/references/blocker-tracking.md +1 -1
- package/references/circuit-breaker.md +93 -2
- package/references/context-engineering.md +227 -9
- package/references/honesty-protocols.md +70 -1
- package/references/issue-to-pr-pipeline.md +149 -150
- package/references/metrics-and-trends.md +1 -2
- package/references/research-improvements.md +4 -108
- package/references/sdlc-mapping.md +73 -0
- package/references/state-machine.md +151 -0
- package/skills-library/AVAILABLE_TOOLS_REFERENCE.md +333 -0
- package/skills-library/SKILLS-INDEX.md +57 -558
- package/skills-library/SKILLS_LIBRARY_INDEX.md +532 -0
- package/skills-library/_general/api-patterns/api-field-name-mismatch.md +107 -0
- package/skills-library/_general/api-patterns/streaming-command-timeout.md +122 -0
- package/skills-library/_general/api-patterns/streaming-proxy-cors-bypass.md +102 -0
- package/skills-library/_general/automation/settings-gui-generator.md +172 -0
- package/skills-library/_general/database-solutions/data-type-mapping-reference.md +181 -0
- package/skills-library/_general/database-solutions/mysql-limit-offset-string-coercion.md +102 -0
- package/skills-library/_general/database-solutions/mysql-to-pg-migration.md +195 -0
- package/skills-library/_general/database-solutions/orm-schema-portability.md +193 -0
- package/skills-library/_general/database-solutions/persistent-analysis-storage.md +207 -0
- package/skills-library/_general/database-solutions/pg-to-mysql-schema-migration-methodology.md +190 -0
- package/skills-library/_general/database-solutions/sql-dialect-compatibility-matrix.md +306 -0
- package/skills-library/_general/database-solutions/sqlite-to-pg-migration.md +219 -0
- package/skills-library/_general/frontend/canvas-bubble-animation-grouping.md +270 -0
- package/skills-library/_general/frontend/color-token-migration.md +112 -0
- package/skills-library/_general/frontend/framer-motion-layoutid-grouping.md +150 -0
- package/skills-library/_general/frontend/pyqt6-settings-dialog.md +191 -0
- package/skills-library/_general/frontend/react-flow-animated-layout-switching.md +101 -0
- package/skills-library/_general/frontend/react-hooks-order-debugging.md +141 -0
- package/skills-library/_general/frontend/redux-localstorage-auth-desync.md +126 -0
- package/skills-library/_general/frontend/safari-csp-theme-color-debugging.md +124 -0
- package/skills-library/_general/frontend/safari-sw-cache-poisoning.md +138 -0
- package/skills-library/_general/frontend/svg-sparkline-no-charting-library.md +131 -0
- package/skills-library/_general/growth-marketing/oss-daily-growth-intelligence.md +224 -0
- package/skills-library/_general/integrations/claude-code-local-mcp-integration.md +250 -0
- package/skills-library/_general/integrations/mcp-composite-tool-orchestration.md +200 -0
- package/skills-library/_general/methodology/AGENT_SDK_STANDALONE_TOOLING.md +181 -0
- package/skills-library/_general/methodology/AGENT_TEAMS_GUIDE.md +169 -0
- package/skills-library/_general/methodology/ALAS_STATEFUL_EXECUTION.md +207 -0
- package/skills-library/_general/methodology/AUTO_REVIEWER_SUBAGENT.md +211 -0
- package/skills-library/_general/methodology/CONSISTENCY_CHECK_AMBIGUITY_GATE.md +96 -0
- package/skills-library/_general/methodology/DEAD_ENDS_SHELF.md +4 -4
- package/skills-library/_general/methodology/DISTILL_NOT_DUMP.md +108 -0
- package/skills-library/_general/methodology/EXECUTION_PROGRESS_MONITOR.md +157 -0
- package/skills-library/_general/methodology/HIERARCHICAL_REVIEW_MARS.md +122 -0
- package/skills-library/_general/methodology/MCP_INTER_AGENT_BRIDGE.md +207 -0
- package/skills-library/_general/methodology/MERMAID_WIZARD_DIAGRAMS.md +77 -0
- package/skills-library/_general/methodology/MISSING_DIMENSION_DETECTOR.md +89 -0
- package/skills-library/_general/methodology/MULTI_AGENT_COORDINATION.md +397 -0
- package/skills-library/_general/methodology/OBSERVATION_MASKING.md +100 -0
- package/skills-library/_general/methodology/PHOENIX_REBUILD_METHODOLOGY.md +82 -11
- package/skills-library/_general/methodology/REVIEW_BACKTRACK_PANEL.md +140 -0
- package/skills-library/_general/methodology/REVIEW_FIX_LOOP.md +117 -0
- package/skills-library/_general/methodology/VOTING_VERDICT_ARBITRATION.md +155 -0
- package/skills-library/_general/methodology/ZERO_FRICTION_CLI_SETUP.md +2 -2
- package/skills-library/_general/methodology/dead-code-activation.md +123 -0
- package/skills-library/_general/methodology/debug-swarm-researcher-escape-hatch.md +240 -240
- package/skills-library/_general/methodology/shell-autonomous-loop-fixplan.md +1 -1
- package/skills-library/_general/patterns-standards/GOF_DESIGN_PATTERNS_FOR_AI_AGENTS.md +5 -5
- package/skills-library/_general/patterns-standards/cascading-failure-diagnosis.md +119 -0
- package/skills-library/_general/patterns-standards/domain-specific-layout-algorithms.md +209 -0
- package/skills-library/_general/patterns-standards/python-desktop-app-architecture.md +399 -0
- package/skills-library/_general/patterns-standards/realtime-monitoring-dashboard.md +457 -0
- package/skills-library/_general/patterns-standards/togglable-processing-pipeline.md +169 -0
- package/skills-library/_general/performance/liveclock-extraction.md +112 -0
- package/skills-library/_general/performance/ref-based-canvas-animation.md +117 -0
- package/skills-library/_general/performance/use-visible-interval.md +131 -0
- package/skills-library/_general/testing/playwright-firefox-withcredentials-auth-issue.md +104 -0
- package/skills-library/_quarantine/README.md +30 -0
- package/skills-library/api-patterns/BROADCAST_SCHEDULER_SHARED_EXECUTE_FUNCTION.md +150 -0
- package/skills-library/api-patterns/ERROR_RESPONSE_STANDARDS.md +145 -0
- package/skills-library/api-patterns/EXPRESS_ROUTE_ORDERING_MIDDLEWARE_INTERCEPTION.md +326 -0
- package/skills-library/api-patterns/PAGINATION_PATTERNS.md +137 -0
- package/skills-library/api-patterns/PODCAST_PROGRESS_TRACKING_THREE_ROOT_CAUSES.md +277 -0
- package/skills-library/api-patterns/RATE_LIMITING_TOGGLE.md +155 -0
- package/skills-library/api-patterns/graphql-content-queries.md +708 -0
- package/skills-library/appointment-scheduler-design.md +423 -0
- package/skills-library/automation/AUTO_POPULATE_COMPLETE_GUIDE.md +631 -0
- package/skills-library/automation/CC_WORKFLOW_STUDIO.md +83 -0
- package/skills-library/automation/CLAUDE_CODE_SWARM_MODE.md +95 -0
- package/skills-library/automation/DAEMON_TRIGGER_FILE_IPC.md +195 -0
- package/skills-library/automation/scheduled-content-publishing.md +608 -0
- package/skills-library/awesome-workflows/Blogging-Platform-Instructions/view_commands.md +25 -0
- package/skills-library/awesome-workflows/CREDENTIAL-SECURITY-WORKFLOW.md +109 -0
- package/skills-library/awesome-workflows/DEBUGGING-WORKFLOW.md +124 -0
- package/skills-library/awesome-workflows/Design-Review-Workflow/README.md +31 -0
- package/skills-library/awesome-workflows/Design-Review-Workflow/design-principles-example.md +129 -0
- package/skills-library/awesome-workflows/Design-Review-Workflow/design-review-agent.md +107 -0
- package/skills-library/awesome-workflows/Design-Review-Workflow/design-review-claude-md-snippet.md +24 -0
- package/skills-library/awesome-workflows/Design-Review-Workflow/design-review-slash-command.md +38 -0
- package/skills-library/awesome-workflows/PARALLEL-RESEARCH-WORKFLOW.md +89 -0
- package/skills-library/awesome-workflows/PHASE-EXECUTION-WORKFLOW.md +97 -0
- package/skills-library/awesome-workflows/SESSION-HANDOFF-WORKFLOW.md +116 -0
- package/skills-library/cms-patterns/content-branch-preview.md +515 -0
- package/skills-library/cms-patterns/inline-visual-editing.md +666 -0
- package/skills-library/cms-patterns/mdx-component-content.md +649 -0
- package/skills-library/cms-patterns/media-manager-abstraction.md +827 -0
- package/skills-library/cms-patterns/schema-driven-form-generator.md +838 -0
- package/skills-library/complexity-metrics/complexity-divider.md +707 -0
- package/skills-library/complexity-metrics/work-with-complexity.md +193 -0
- package/skills-library/creative-multimedia/animation-stack-guide.md +577 -0
- package/skills-library/creative-multimedia/audio-enhancement-pipeline.md +625 -0
- package/skills-library/creative-multimedia/content-repurposing-pipeline.md +1146 -0
- package/skills-library/creative-multimedia/data-visualization-generator.md +862 -0
- package/skills-library/creative-multimedia/doc-to-podcast-pipeline.md +2184 -0
- package/skills-library/creative-multimedia/ffmpeg-command-generator.md +405 -0
- package/skills-library/creative-multimedia/image-optimization-pipeline.md +605 -0
- package/skills-library/creative-multimedia/multi-format-content-generator.md +1759 -0
- package/skills-library/creative-multimedia/og-image-generator.md +635 -0
- package/skills-library/creative-multimedia/podcast-audio-composition.md +1355 -0
- package/skills-library/creative-multimedia/podcast-quality-evaluation.md +1452 -0
- package/skills-library/creative-multimedia/podcast-script-generation.md +1841 -0
- package/skills-library/creative-multimedia/svg-generation.md +750 -0
- package/skills-library/creative-multimedia/text-to-speech-provider-selector.md +1414 -0
- package/skills-library/creative-multimedia/transcription-pipeline-selector.md +677 -0
- package/skills-library/creative-multimedia/video-streaming-setup.md +559 -0
- package/skills-library/database-solutions/AI_RESPONSE_DATABASE_CACHING.md +520 -0
- package/skills-library/database-solutions/CONDITIONAL_SQL_MIGRATION_PATTERN.md +119 -0
- package/skills-library/database-solutions/DATABASE_COLUMN_NAME_MISMATCH.md +393 -0
- package/skills-library/database-solutions/DATABASE_SCHEMA.md +394 -0
- package/skills-library/database-solutions/DATABASE_SCHEMA_VERIFICATION_GUIDE.md +348 -0
- package/skills-library/database-solutions/DATABASE_STRATEGY.md +71 -0
- package/skills-library/database-solutions/ES_MODULE_SEED_SCRIPT_PATTERN.md +52 -0
- package/skills-library/database-solutions/MIGRATION_GUIDE.md +3 -0
- package/skills-library/database-solutions/PLPGSQL_VARIABLE_CONFLICT_FIX.md +208 -0
- package/skills-library/database-solutions/POSTGRESQL_JSONB_DOUBLE_STRINGIFY_FIX.md +245 -0
- package/skills-library/database-solutions/POSTGRESQL_LICENSE_TABLE_DESIGN.md +393 -0
- package/skills-library/database-solutions/POSTGRESQL_UUID_DOCUMENT_RAG_DUAL_SCOPE.md +732 -0
- package/skills-library/database-solutions/POSTGRES_SQL_TEMPLATE_BINDING_ERROR.md +240 -0
- package/skills-library/database-solutions/PRISMA_DB_PUSH_DATA_LOSS_PREVENTION.md +141 -0
- package/skills-library/database-solutions/PRODUCTION_QUERY_OPTIMIZATION_RESTART_FIX.md +389 -0
- package/skills-library/database-solutions/RLS_SECURITY_GUIDE.md +107 -0
- package/skills-library/database-solutions/SCHEMA_ENHANCEMENTS_GUIDE.md +373 -0
- package/skills-library/database-solutions/SCHEMA_MIGRATION_GUIDE.md +368 -0
- package/skills-library/database-solutions/SCHEMA_VERIFICATION_QUICK_REFERENCE.md +104 -0
- package/skills-library/database-solutions/ai-erd-generator.md +1213 -0
- package/skills-library/database-solutions/content-publishing-states.md +631 -0
- package/skills-library/database-solutions/database-schema-designer.md +522 -0
- package/skills-library/database-solutions/er-diagram-components.md +569 -0
- package/skills-library/database-solutions/er-to-ddl-mapping.md +1405 -0
- package/skills-library/database-solutions/erd-creator-textbook-research.md +433 -0
- package/skills-library/database-solutions/erd-react-flow-architecture.md +1965 -0
- package/skills-library/database-solutions/mariadb-aggregate-function-replacement.md +145 -0
- package/skills-library/database-solutions/normalization-validator.md +778 -0
- package/skills-library/database-solutions/postgres-full-text-search-content.md +494 -0
- package/skills-library/database-solutions/postgresql-to-mysql-runtime-translation.md +286 -0
- package/skills-library/database-solutions/regex-alternation-ordering-sql-types.md +92 -0
- package/skills-library/database-solutions/reserved-word-context-aware-quoting.md +142 -0
- package/skills-library/database-solutions/sql-ddl-generator.md +756 -0
- package/skills-library/database-solutions/supabase-connection-pooler-fix.md +102 -0
- package/skills-library/deployment-security/CPANEL_NODE_DEPLOYMENT.md +166 -0
- package/skills-library/deployment-security/DEPLOYMENT.md +275 -0
- package/skills-library/deployment-security/DEPLOYMENT_CHECKLIST.md +363 -0
- package/skills-library/deployment-security/DEPLOYMENT_PLAN.md +669 -0
- package/skills-library/deployment-security/KNEX_DATABASE_ABSTRACTION.md +444 -0
- package/skills-library/deployment-security/LICENSE_KEY_SYSTEM.md +206 -0
- package/skills-library/deployment-security/NODE18_DEPENDENCY_COMPATIBILITY.md +284 -0
- package/skills-library/deployment-security/PHP_INSTALLER_WIZARD_GUIDE.md +315 -0
- package/skills-library/deployment-security/PM2_ENVIRONMENT_VARIABLE_CACHING.md +256 -0
- package/skills-library/deployment-security/PM2_MEMORY_EXHAUSTION_FIX.md +370 -0
- package/skills-library/deployment-security/PRODUCTION_DEPLOYMENT_GUIDE.md +592 -0
- package/skills-library/deployment-security/PRODUCTION_HARDENING_DOCUMENTATION.md +307 -0
- package/skills-library/deployment-security/PRODUCTION_RECOVERY_CHERRY_PICK_PATTERN.md +202 -0
- package/skills-library/deployment-security/PYINSTALLER_CUDA_WHISPER_BUNDLING.md +236 -0
- package/skills-library/deployment-security/SECURITY.md +41 -0
- package/skills-library/deployment-security/SMTP_SSL_HOSTNAME_MISMATCH_SHARED_HOSTING.md +220 -0
- package/skills-library/deployment-security/SPA_SEO_OPTIMIZATION_CPANEL.md +200 -0
- package/skills-library/deployment-security/SUPABASE_EDGE_FUNCTIONS.md +338 -0
- package/skills-library/deployment-security/VERCEL_GITHUB_DEPLOYMENT_GUIDE.md +858 -0
- package/skills-library/deployment-security/VPS_DEPLOYMENT_READINESS.md +356 -0
- package/skills-library/deployment-security/deployment-changes-not-applying.md +241 -0
- package/skills-library/deployment-security/env-file-management-production-local.md +203 -0
- package/skills-library/deployment-security/express-secure-file-downloads.md +413 -0
- package/skills-library/deployment-security/react-production-deployment-desktop-guide.md +2011 -0
- package/skills-library/deployment-security/self-hosted-supabase-coolify-guide.md +1684 -0
- package/skills-library/deployment-security/unique-features-ai-strategy-plaid-security.md +1613 -0
- package/skills-library/deployment-security/vps-deployment.md +135 -0
- package/skills-library/document-processing/WORD_EXPORT_MARKDOWN_FORMATTING.md +482 -0
- package/skills-library/document-processing/document-ai-landingai-integration.md +677 -0
- package/skills-library/document-processing/express-secure-file-downloads-mern.md +413 -0
- package/skills-library/document-processing/express-secure-file-downloads.md +413 -0
- package/skills-library/document-processing/md-to-word-converter.md +318 -0
- package/skills-library/document-processing/pdf-forms-integration/README.md +101 -0
- package/skills-library/document-processing/pdf-forms-integration/SKILL.md +662 -0
- package/skills-library/ecommerce/ADMIN_PRODUCTS_GUIDE.md +428 -0
- package/skills-library/ecommerce/ECOMMERCE_API_REFERENCE.md +776 -0
- package/skills-library/ecommerce/ECOMMERCE_COMPLETION_SUMMARY.md +673 -0
- package/skills-library/ecommerce/ECOMMERCE_IMPLEMENTATION_GUIDE.md +729 -0
- package/skills-library/ecommerce/ECOMMERCE_QUICK_REFERENCE.md +521 -0
- package/skills-library/ecommerce/ECOMMERCE_TESTING_CHECKLIST.md +565 -0
- package/skills-library/ecommerce/ECOMMERCE_WORKFLOW_GUIDE.md +1059 -0
- package/skills-library/ecommerce/PRODUCT_CREATION_EXPANDED.md +522 -0
- package/skills-library/ecommerce/agentic-commerce-protocol.md +203 -0
- package/skills-library/ecommerce/cart-abandonment-recovery.md +236 -0
- package/skills-library/ecommerce/cart-architecture-patterns.md +300 -0
- package/skills-library/ecommerce/cart-item-count-indicator.md +264 -0
- package/skills-library/ecommerce/checkout-ux-conversion.md +227 -0
- package/skills-library/ecommerce/composable-commerce-selection.md +166 -0
- package/skills-library/ecommerce/ecommerce-analytics-patterns.md +167 -0
- package/skills-library/ecommerce/fraud-detection-patterns.md +179 -0
- package/skills-library/ecommerce/inventory-stock-management.md +270 -0
- package/skills-library/ecommerce/order-saga-state-machine.md +336 -0
- package/skills-library/ecommerce/payment-provider-abstraction.md +245 -0
- package/skills-library/ecommerce/pci-compliance-checklist.md +192 -0
- package/skills-library/ecommerce/refund-chargeback-handling.md +177 -0
- package/skills-library/ecommerce/shipping-carrier-integration.md +218 -0
- package/skills-library/ecommerce/webhook-idempotency-patterns.md +253 -0
- package/skills-library/excalidraw-diagrams/.github/workflows/ci.yml +558 -0
- package/skills-library/excalidraw-diagrams/.github/workflows/prompt-gallery.yml +448 -0
- package/skills-library/excalidraw-diagrams/.github/workflows/release.yml +42 -0
- package/skills-library/excalidraw-diagrams/.github/workflows/test-reusable-ci.yml +25 -0
- package/skills-library/excalidraw-diagrams/CLAUDE.md +57 -0
- package/skills-library/excalidraw-diagrams/LICENSE +21 -0
- package/skills-library/excalidraw-diagrams/README.md +178 -0
- package/skills-library/excalidraw-diagrams/SKILL.md +715 -0
- package/skills-library/form-solutions/BUTTON_TYPE_FORM_SUBMISSION.md +336 -0
- package/skills-library/form-solutions/FILLABLE_PDF_IMPLEMENTATION.md +226 -0
- package/skills-library/form-solutions/SURVEYJS_QUESTIONNAIRE_SYSTEM.md +367 -0
- package/skills-library/form-solutions/tiptap-minimal-setup.md +690 -0
- package/skills-library/frontend/scholarly-classification-bubble-map.md +149 -0
- package/skills-library/infrastructure/ci-cd-pipeline-builder.md +517 -0
- package/skills-library/infrastructure/observability-designer.md +264 -0
- package/skills-library/infrastructure/performance-profiler.md +621 -0
- package/skills-library/installer-wizard-patterns.md +249 -0
- package/skills-library/integrations/CLAUDE_CODE_TOKEN_ANALYTICS.md +160 -0
- package/skills-library/integrations/CONFIGURABLE_AI_PROVIDER_SELECTION.md +728 -0
- package/skills-library/integrations/SOCKET_IO_BROADCAST_ALL_VS_ROOM.md +141 -0
- package/skills-library/integrations/VIRTUAL_MEETINGS_IMPLEMENTATION.md +374 -0
- package/skills-library/integrations/WORDPRESS_LEARNDASH_DATA_RECOVERY.md +53 -0
- package/skills-library/integrations/YOUTUBE_API_SETUP.md +141 -0
- package/skills-library/integrations/YOUTUBE_BOOKMARKING_EXPLANATION.md +252 -0
- package/skills-library/integrations/YOUTUBE_BOOKMARKING_SOLUTION.md +268 -0
- package/skills-library/integrations/YOUTUBE_OAUTH_SETUP_GUIDE.md +200 -0
- package/skills-library/integrations/YOUTUBE_VIDEO_FIX_COMPLETE.md +192 -0
- package/skills-library/integrations/ai-ml/GEMINI_AI_RAG_PIPELINE_COMPLETE_GUIDE.md +195 -0
- package/skills-library/integrations/ai-ml/GEMINI_IMAGE_GENERATION_SETUP.md +64 -0
- package/skills-library/integrations/cloudflare/cloudflare-turnstile-debugging.md +202 -0
- package/skills-library/integrations/cloudflare/cloudflare-turnstile-implementation.md +476 -0
- package/skills-library/integrations/cloudflare-turnstile-debugging.md +202 -0
- package/skills-library/integrations/cloudflare-turnstile-implementation.md +476 -0
- package/skills-library/integrations/ghost-creator-monetization-pattern.md +454 -0
- package/skills-library/integrations/headless-cms-architecture.md +484 -0
- package/skills-library/integrations/headless-cms-stack-selection.md +183 -0
- package/skills-library/integrations/payload-cms-patterns.md +674 -0
- package/skills-library/integrations/realtimestt-openwakeword-cuda-windows.md +229 -0
- package/skills-library/integrations/rss-podcast-integration.md +300 -0
- package/skills-library/integrations/wordpress/WORDPRESS_LEARNDASH_DATA_RECOVERY.md +53 -0
- package/skills-library/integrations/youtube/YOUTUBE_API_SETUP.md +141 -0
- package/skills-library/integrations/youtube/YOUTUBE_BOOKMARKING_EXPLANATION.md +252 -0
- package/skills-library/integrations/youtube/YOUTUBE_BOOKMARKING_SOLUTION.md +268 -0
- package/skills-library/integrations/youtube/YOUTUBE_OAUTH_SETUP_GUIDE.md +200 -0
- package/skills-library/integrations/youtube/YOUTUBE_VIDEO_FIX_COMPLETE.md +192 -0
- package/skills-library/marketing/campaign-analytics.md +97 -0
- package/skills-library/marketing/content-creator.md +105 -0
- package/skills-library/marketing/marketing-strategy-pmm.md +94 -0
- package/skills-library/marketing/social-media-analyzer.md +81 -0
- package/skills-library/methodology/ADVANCED_ORCHESTRATION_PATTERNS.md +401 -0
- package/skills-library/methodology/AGENT_SELF_IMPROVEMENT_LOOP.md +179 -0
- package/skills-library/methodology/BREATH_BASED_PARALLEL_EXECUTION.md +1 -1
- package/skills-library/methodology/CLEANSING_CYCLE.md +358 -0
- package/skills-library/methodology/CONFIDENCE_ANNOTATION_PATTERN.md +143 -0
- package/skills-library/methodology/CRITICAL_PATTERNS_DOCUMENTATION_COMPLETE.md +204 -0
- package/skills-library/methodology/DELIVERABLES_SUMMARY.md +341 -0
- package/skills-library/methodology/DIFFICULTY_AWARE_AGENT_ROUTING.md +252 -0
- package/skills-library/methodology/EVOLUTIONARY_SKILL_SYNTHESIS.md +219 -0
- package/skills-library/methodology/GLOMERULUS_DECISION_GATE.md +223 -0
- package/skills-library/methodology/HIBERNATION_SYSTEM.md +231 -0
- package/skills-library/methodology/INSTRUMENTATION_OVER_RESTRICTION.md +192 -0
- package/skills-library/methodology/MASTER_COMPLETION_SUMMARY.md +444 -0
- package/skills-library/methodology/MASTER_SESSION_COMPLETION.md +743 -0
- package/skills-library/methodology/MERN_QUICK_REFERENCE.md +358 -0
- package/skills-library/methodology/ORGAN_AGENT_MAPPING.md +177 -0
- package/skills-library/methodology/PARALLEL_WAVE_BASED_REFACTORING.md +440 -0
- package/skills-library/methodology/QUICK_REFERENCE.md +358 -0
- package/skills-library/methodology/SDFT_ONPOLICY_SELF_DISTILLATION.md +186 -0
- package/skills-library/methodology/SELF_QUESTIONING_TASK_GENERATION.md +270 -0
- package/skills-library/methodology/SESSION_COMPLETION_SUMMARY.md +304 -0
- package/skills-library/methodology/SESSION_SUMMARY.md +432 -0
- package/skills-library/methodology/WARRIOR_WORKFLOW_DEBUGGING_PROTOCOL.md +252 -0
- package/skills-library/methodology/tech-debt-tracker.md +570 -0
- package/skills-library/parallel-debug/SKILL.md +60 -0
- package/skills-library/patterns-standards/API_PATTERN_FIX_SUMMARY.md +236 -0
- package/skills-library/patterns-standards/BATCH_OPERATIONS_WITH_PROGRESS_MODAL.md +362 -0
- package/skills-library/patterns-standards/CRITICAL_CODING_PATTERNS.md +639 -0
- package/skills-library/patterns-standards/DARK_MODE_MODAL_VISIBILITY.md +258 -0
- package/skills-library/patterns-standards/ERROR_RESILIENCE_IMPLEMENTATION.md +375 -0
- package/skills-library/patterns-standards/ES_MODULE_IMPORT_HOISTING_DOTENV.md +298 -0
- package/skills-library/patterns-standards/NESTED_BACKDROP_FILTER_CSS_ARTIFACT_FIX.md +76 -0
- package/skills-library/patterns-standards/ORDERED_DETECTOR_PIPELINE_GRACEFUL_FALLBACK.md +333 -0
- package/skills-library/patterns-standards/PHASE_IMPORT_ERROR_DEBUGGING.md +271 -0
- package/skills-library/patterns-standards/PYNPUT_GLOBAL_HOTKEY_VK_MATCHING.md +252 -0
- package/skills-library/patterns-standards/REACT_USEEFFECT_CASCADE_RESET_FIX.md +132 -0
- package/skills-library/patterns-standards/SUBMENU_HOVER_DROPDOWN_PATTERN.md +225 -0
- package/skills-library/patterns-standards/TAILWIND_TEXT_VISIBILITY_OVERRIDE.md +322 -0
- package/skills-library/patterns-standards/THEME_AWARE_CSS_VARIABLES_PATTERN.md +209 -0
- package/skills-library/patterns-standards/THEME_USER_OBJECT_PROPERTY_NAMING.md +194 -0
- package/skills-library/patterns-standards/TOOLTIP_BLOCKING_CLICKS_FIX.md +267 -0
- package/skills-library/patterns-standards/claude-code-plugin-structure.md +235 -0
- package/skills-library/patterns-standards/react-i18next-setup.md +429 -0
- package/skills-library/patterns-standards/thesys-c1-generative-ui-integration.md +967 -0
- package/skills-library/plugin-development/CLAUDE_CODE_COMMAND_REGISTRATION_SILENT_FAILURE.md +315 -0
- package/skills-library/plugin-development/plugin-command-namespace-vs-global.md +390 -0
- package/skills-library/plugin-development/plugin-doc-auto-generation.md +172 -0
- package/skills-library/security/GITHUB_REPO_SECURITY_AUDIT.md +115 -0
- package/skills-library/security/admin-deletion-safety.md +396 -0
- package/skills-library/security/application-vuln-patterns.md +477 -0
- package/skills-library/security/env-secrets-manager.md +686 -0
- package/skills-library/security/secure-ai-application-templates.md +347 -0
- package/skills-library/security/sql-injection-prevention-postgresjs.md +151 -0
- package/skills-library/supabase-connection-pooler-fix.md +102 -0
- package/skills-library/system-context/POWERSHELL_BASH_INTEROP.md +82 -0
- package/skills-library/system-context/SERVICE_LIFECYCLE_MANAGEMENT.md +119 -0
- package/skills-library/system-context/SKILL.md +40 -0
- package/skills-library/system-context/WINDOWS_DEV_ENVIRONMENT.md +73 -0
- package/skills-library/testing/E2E_PLAYWRIGHT_PATTERNS.md +99 -0
- package/skills-library/testing/INTEGRATION_TEST_STRATEGY.md +82 -0
- package/skills-library/testing/RED_GREEN_BUGFIX_GATE.md +203 -0
- package/skills-library/testing/TEST_DATA_MANAGEMENT.md +69 -0
- package/skills-library/testing/VITEST_UNIT_TEST_PATTERNS.md +75 -0
- package/skills-library/testing/playwright-api-security-tests.md +202 -0
- package/skills-library/toolbox/SKILL.md +84 -0
- package/skills-library/toolbox/code-graph-and-web-scraping-mcps.md +237 -0
- package/skills-library/ui-ux-pro-max/ACCESSIBILITY_ESSENTIALS.md +115 -0
- package/skills-library/ui-ux-pro-max/DESIGN_SYSTEM_SCAFFOLDING.md +133 -0
- package/skills-library/ui-ux-pro-max/RESPONSIVE_LAYOUT_PATTERNS.md +119 -0
- package/skills-library/ui-ux-pro-max/SKILL.md +386 -0
- package/skills-library/ui-ux-pro-max/data/charts.csv +26 -0
- package/skills-library/ui-ux-pro-max/data/colors.csv +97 -0
- package/skills-library/ui-ux-pro-max/data/icons.csv +101 -0
- package/skills-library/ui-ux-pro-max/data/landing.csv +31 -0
- package/skills-library/ui-ux-pro-max/data/products.csv +97 -0
- package/skills-library/ui-ux-pro-max/data/react-performance.csv +45 -0
- package/skills-library/ui-ux-pro-max/data/stacks/astro.csv +54 -0
- package/skills-library/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
- package/skills-library/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
- package/skills-library/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -0
- package/skills-library/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
- package/skills-library/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
- package/skills-library/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
- package/skills-library/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
- package/skills-library/ui-ux-pro-max/data/stacks/react.csv +54 -0
- package/skills-library/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
- package/skills-library/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
- package/skills-library/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
- package/skills-library/ui-ux-pro-max/data/stacks/vue.csv +50 -0
- package/skills-library/ui-ux-pro-max/data/styles.csv +68 -0
- package/skills-library/ui-ux-pro-max/data/typography.csv +58 -0
- package/skills-library/ui-ux-pro-max/data/ui-reasoning.csv +101 -0
- package/skills-library/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
- package/skills-library/ui-ux-pro-max/data/web-interface.csv +31 -0
- package/skills-library/wordpress-style-theme-components.md +1526 -0
- package/templates/ASSUMPTIONS.md +1 -1
- package/templates/DECISION_LOG.md +0 -1
- package/templates/phase-prompt.md +1 -1
- package/templates/phoenix-comparison.md +6 -6
- package/templates/skill-api-integration.md +106 -0
- package/templates/skill-architecture-pattern.md +92 -0
- package/templates/skill-debug-pattern.md +98 -0
- package/templates/skill-devops-recipe.md +107 -0
- package/templates/skill-general.md +65 -0
- package/templates/skill-ui-component.md +113 -0
- package/tools/uat-runner.py +179 -0
- package/version.json +7 -3
- package/workflows/handoff-session.md +2 -2
- package/workflows/new-project.md +2 -2
- package/workflows/plan-phase.md +1 -1
- package/.claude-plugin/plugin.json +0 -64
- package/skills-library/_general/methodology/LIVE_BREADCRUMB_PROTOCOL.md +0 -242
- package/skills-library/_general/methodology/llm-judge-memory-crud.md +0 -241
- package/skills-library/methodology/REFLEXION_MEMORY_PATTERN.md +0 -183
- package/skills-library/methodology/RESEARCH_BACKED_WORKFLOW_UPGRADE.md +0 -263
- package/skills-library/methodology/SABBATH_REST_PATTERN.md +0 -267
- package/skills-library/methodology/STONE_AND_SCAFFOLD.md +0 -220
- package/skills-library/specialists/api-architecture/api-designer.md +0 -49
- package/skills-library/specialists/api-architecture/graphql-architect.md +0 -49
- package/skills-library/specialists/api-architecture/mcp-developer.md +0 -51
- package/skills-library/specialists/api-architecture/microservices-architect.md +0 -50
- package/skills-library/specialists/api-architecture/websocket-engineer.md +0 -48
- package/skills-library/specialists/backend/django-expert.md +0 -52
- package/skills-library/specialists/backend/fastapi-expert.md +0 -52
- package/skills-library/specialists/backend/laravel-specialist.md +0 -52
- package/skills-library/specialists/backend/nestjs-expert.md +0 -51
- package/skills-library/specialists/backend/rails-expert.md +0 -53
- package/skills-library/specialists/backend/spring-boot-engineer.md +0 -56
- package/skills-library/specialists/data-ml/fine-tuning-expert.md +0 -48
- package/skills-library/specialists/data-ml/ml-pipeline.md +0 -47
- package/skills-library/specialists/data-ml/pandas-pro.md +0 -47
- package/skills-library/specialists/data-ml/rag-architect.md +0 -51
- package/skills-library/specialists/data-ml/spark-engineer.md +0 -47
- package/skills-library/specialists/frontend/angular-architect.md +0 -52
- package/skills-library/specialists/frontend/flutter-expert.md +0 -51
- package/skills-library/specialists/frontend/nextjs-developer.md +0 -54
- package/skills-library/specialists/frontend/react-native-expert.md +0 -50
- package/skills-library/specialists/frontend/vue-expert.md +0 -51
- package/skills-library/specialists/infrastructure/chaos-engineer.md +0 -74
- package/skills-library/specialists/infrastructure/cloud-architect.md +0 -70
- package/skills-library/specialists/infrastructure/database-optimizer.md +0 -64
- package/skills-library/specialists/infrastructure/devops-engineer.md +0 -70
- package/skills-library/specialists/infrastructure/kubernetes-specialist.md +0 -52
- package/skills-library/specialists/infrastructure/monitoring-expert.md +0 -70
- package/skills-library/specialists/infrastructure/sre-engineer.md +0 -70
- package/skills-library/specialists/infrastructure/terraform-engineer.md +0 -51
- package/skills-library/specialists/languages/cpp-pro.md +0 -74
- package/skills-library/specialists/languages/csharp-developer.md +0 -69
- package/skills-library/specialists/languages/dotnet-core-expert.md +0 -54
- package/skills-library/specialists/languages/golang-pro.md +0 -51
- package/skills-library/specialists/languages/java-architect.md +0 -49
- package/skills-library/specialists/languages/javascript-pro.md +0 -68
- package/skills-library/specialists/languages/kotlin-specialist.md +0 -68
- package/skills-library/specialists/languages/php-pro.md +0 -49
- package/skills-library/specialists/languages/python-pro.md +0 -52
- package/skills-library/specialists/languages/react-expert.md +0 -51
- package/skills-library/specialists/languages/rust-engineer.md +0 -50
- package/skills-library/specialists/languages/sql-pro.md +0 -56
- package/skills-library/specialists/languages/swift-expert.md +0 -69
- package/skills-library/specialists/languages/typescript-pro.md +0 -51
- package/skills-library/specialists/platform/atlassian-mcp.md +0 -52
- package/skills-library/specialists/platform/embedded-systems.md +0 -53
- package/skills-library/specialists/platform/game-developer.md +0 -53
- package/skills-library/specialists/platform/salesforce-developer.md +0 -53
- package/skills-library/specialists/platform/shopify-expert.md +0 -49
- package/skills-library/specialists/platform/wordpress-pro.md +0 -49
- package/skills-library/specialists/quality/code-documenter.md +0 -51
- package/skills-library/specialists/quality/code-reviewer.md +0 -67
- package/skills-library/specialists/quality/debugging-wizard.md +0 -51
- package/skills-library/specialists/quality/fullstack-guardian.md +0 -51
- package/skills-library/specialists/quality/legacy-modernizer.md +0 -50
- package/skills-library/specialists/quality/playwright-expert.md +0 -65
- package/skills-library/specialists/quality/spec-miner.md +0 -56
- package/skills-library/specialists/quality/test-master.md +0 -65
- package/skills-library/specialists/security/secure-code-guardian.md +0 -55
- package/skills-library/specialists/security/security-reviewer.md +0 -53
- package/skills-library/specialists/workflow/architecture-designer.md +0 -53
- package/skills-library/specialists/workflow/cli-developer.md +0 -70
- package/skills-library/specialists/workflow/feature-forge.md +0 -65
- package/skills-library/specialists/workflow/prompt-engineer.md +0 -54
- package/skills-library/specialists/workflow/the-fool.md +0 -62
- /package/skills-library/{performance → _general/performance}/cache-augmented-generation.md +0 -0
- /package/skills-library/{debugging → parallel-debug}/FAILURE_TAXONOMY_CLASSIFICATION.md +0 -0
- /package/skills-library/{debugging → parallel-debug}/THREE_AGENT_HYPOTHESIS_DEBUGGING.md +0 -0
package/skills-library/_general/database-solutions/pg-to-mysql-schema-migration-methodology.md
ADDED
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: pg-to-mysql-schema-migration-methodology
|
|
3
|
+
category: database-solutions
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
contributed: 2026-03-06
|
|
6
|
+
contributor: ministry-lms
|
|
7
|
+
last_updated: 2026-03-06
|
|
8
|
+
contributors:
|
|
9
|
+
- ministry-lms
|
|
10
|
+
tags: [postgresql, mysql, mariadb, migration, schema, uuid, returning, xampp]
|
|
11
|
+
difficulty: medium
|
|
12
|
+
usage_count: 0
|
|
13
|
+
success_rate: 100
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
# PG to MySQL Schema Migration Methodology
|
|
17
|
+
|
|
18
|
+
## Problem
|
|
19
|
+
|
|
20
|
+
When porting a PostgreSQL application to MySQL, the runtime SQL translation layer (sql-compat.js) handles syntax differences. But tables and columns still need to exist in MySQL. PG migrations use PG-specific DDL (UUID, BOOLEAN, TEXT[], JSONB, TIMESTAMP WITH TIME ZONE, partial indexes) that MySQL doesn't support. The result: 500 errors at runtime when controllers reference tables or columns that were never created in MySQL.
|
|
21
|
+
|
|
22
|
+
**Symptoms:**
|
|
23
|
+
- 500 Internal Server Error on specific endpoints
|
|
24
|
+
- `Table 'db.tablename' doesn't exist` in server logs
|
|
25
|
+
- `Unknown column 'col' in 'field list'` errors
|
|
26
|
+
- RETURNING * emulation returns empty/wrong rows (Strategy 3 returns 0 for UUID tables)
|
|
27
|
+
|
|
28
|
+
## Solution Pattern
|
|
29
|
+
|
|
30
|
+
Systematic 4-step process per feature area:
|
|
31
|
+
|
|
32
|
+
### Step 1: Identify the 500
|
|
33
|
+
|
|
34
|
+
Trace the error: endpoint URL -> route file -> controller -> model/query -> table name + columns.
|
|
35
|
+
|
|
36
|
+
### Step 2: Check Table/Column Existence
|
|
37
|
+
|
|
38
|
+
```javascript
|
|
39
|
+
// Quick check script
|
|
40
|
+
import sql from './config/sql.js';
|
|
41
|
+
try {
|
|
42
|
+
const cols = await sql.unsafe('DESCRIBE tablename');
|
|
43
|
+
console.log(cols.map(c => c.Field));
|
|
44
|
+
} catch(e) {
|
|
45
|
+
console.log('TABLE MISSING:', e.message);
|
|
46
|
+
}
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### Step 3: Create MySQL Migration Script
|
|
50
|
+
|
|
51
|
+
Convert PG DDL to MySQL DDL with these type mappings:
|
|
52
|
+
|
|
53
|
+
| PostgreSQL | MySQL |
|
|
54
|
+
|------------|-------|
|
|
55
|
+
| `UUID PRIMARY KEY DEFAULT gen_random_uuid()` | `CHAR(36) PRIMARY KEY DEFAULT (UUID())` |
|
|
56
|
+
| `BOOLEAN DEFAULT true` | `TINYINT(1) DEFAULT 1` |
|
|
57
|
+
| `TIMESTAMP WITH TIME ZONE` | `DATETIME` |
|
|
58
|
+
| `TEXT[]` (array) | `JSON DEFAULT NULL` |
|
|
59
|
+
| `JSONB` | `JSON` |
|
|
60
|
+
| `INTEGER[]` | `JSON DEFAULT NULL` |
|
|
61
|
+
| `SERIAL` | `INT AUTO_INCREMENT` |
|
|
62
|
+
| `DECIMAL(10,2)` | `DECIMAL(10,2)` (same) |
|
|
63
|
+
| `VARCHAR(255)` | `VARCHAR(255)` (same) |
|
|
64
|
+
| `REFERENCES table(id) ON DELETE CASCADE` | Omit FK constraints (simpler with UUID tables) |
|
|
65
|
+
| Partial index `WHERE condition` | Regular index (MySQL doesn't support partial) |
|
|
66
|
+
| `CREATE TYPE ... AS ENUM` | `VARCHAR(50)` with application validation |
|
|
67
|
+
| `NOW()` | `CURRENT_TIMESTAMP` (in DEFAULT) or `NOW()` (in queries) |
|
|
68
|
+
|
|
69
|
+
### Step 4: Fix RETURNING * for UUID Tables
|
|
70
|
+
|
|
71
|
+
When a table uses `CHAR(36) DEFAULT (UUID())` as primary key:
|
|
72
|
+
- `LAST_INSERT_ID()` returns 0 (only works for AUTO_INCREMENT)
|
|
73
|
+
- The RETURNING emulation Strategy 1 needs `id` in the INSERT column list
|
|
74
|
+
- **Fix:** Generate UUID in JavaScript and include it explicitly
|
|
75
|
+
|
|
76
|
+
```javascript
|
|
77
|
+
import { v4 as uuidv4 } from 'uuid';
|
|
78
|
+
|
|
79
|
+
// Before (broken — RETURNING can't find the row)
|
|
80
|
+
const result = await sql`
|
|
81
|
+
INSERT INTO courses (title, description)
|
|
82
|
+
VALUES (${title}, ${desc})
|
|
83
|
+
RETURNING *
|
|
84
|
+
`;
|
|
85
|
+
|
|
86
|
+
// After (works — Strategy 1 finds row by id)
|
|
87
|
+
const id = uuidv4();
|
|
88
|
+
const result = await sql`
|
|
89
|
+
INSERT INTO courses (id, title, description)
|
|
90
|
+
VALUES (${id}, ${title}, ${desc})
|
|
91
|
+
RETURNING *
|
|
92
|
+
`;
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
## Migration Script Template
|
|
96
|
+
|
|
97
|
+
Use idempotent JS migrations with existence checks:
|
|
98
|
+
|
|
99
|
+
```javascript
|
|
100
|
+
/**
|
|
101
|
+
* MySQL Migration: {description}
|
|
102
|
+
* Run with: node --env-file=.env.local migrations/{number}_{name}.js
|
|
103
|
+
*/
|
|
104
|
+
import sql from '../config/sql.js';
|
|
105
|
+
|
|
106
|
+
async function addColumnIfMissing(table, column, definition) {
|
|
107
|
+
const cols = await sql.unsafe(`DESCRIBE ${table}`);
|
|
108
|
+
const colNames = cols.map(c => c.Field);
|
|
109
|
+
if (!colNames.includes(column)) {
|
|
110
|
+
await sql.unsafe(`ALTER TABLE ${table} ADD COLUMN ${column} ${definition}`);
|
|
111
|
+
console.log(` Added ${table}.${column}`);
|
|
112
|
+
return true;
|
|
113
|
+
}
|
|
114
|
+
console.log(` ${table}.${column} already exists`);
|
|
115
|
+
return false;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
async function migrate() {
|
|
119
|
+
try {
|
|
120
|
+
// CREATE TABLE IF NOT EXISTS for new tables
|
|
121
|
+
await sql.unsafe(`
|
|
122
|
+
CREATE TABLE IF NOT EXISTS tablename (
|
|
123
|
+
id CHAR(36) PRIMARY KEY DEFAULT (UUID()),
|
|
124
|
+
-- columns here
|
|
125
|
+
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
126
|
+
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
127
|
+
INDEX idx_name (column)
|
|
128
|
+
)
|
|
129
|
+
`);
|
|
130
|
+
|
|
131
|
+
// ALTER TABLE for missing columns on existing tables
|
|
132
|
+
await addColumnIfMissing('existing_table', 'new_col', 'VARCHAR(255) DEFAULT NULL');
|
|
133
|
+
|
|
134
|
+
console.log('Migration complete!');
|
|
135
|
+
} catch (error) {
|
|
136
|
+
console.error('Migration error:', error.message);
|
|
137
|
+
} finally {
|
|
138
|
+
await sql.end();
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
migrate();
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
## Diagnostic Cheat Sheet
|
|
146
|
+
|
|
147
|
+
| HTTP Status | Likely Cause | Check |
|
|
148
|
+
|-------------|-------------|-------|
|
|
149
|
+
| 500 on GET | Missing table or column | `DESCRIBE tablename` |
|
|
150
|
+
| 500 on POST | Missing column in INSERT | Compare INSERT columns vs DESCRIBE |
|
|
151
|
+
| 401 instead of 500 | Table exists, auth works | Fixed! |
|
|
152
|
+
| Empty response on POST | RETURNING emulation failed | Check if `id` is in INSERT columns |
|
|
153
|
+
| Wrong row returned | Strategy 4 race condition | Add explicit UUID to INSERT |
|
|
154
|
+
|
|
155
|
+
## When to Use
|
|
156
|
+
|
|
157
|
+
- Porting a PostgreSQL app to MySQL/MariaDB/XAMPP
|
|
158
|
+
- When you see 500 errors on endpoints that work in PG
|
|
159
|
+
- When the sql-compat runtime layer handles syntax but tables are missing
|
|
160
|
+
- When RETURNING * returns empty or wrong rows on UUID tables
|
|
161
|
+
- When multiple PG migrations need to be consolidated into MySQL equivalents
|
|
162
|
+
|
|
163
|
+
## When NOT to Use
|
|
164
|
+
|
|
165
|
+
- For SQL syntax translation at runtime (use postgresql-to-mysql-runtime-translation)
|
|
166
|
+
- When the app uses an ORM that handles schema (Prisma, Sequelize)
|
|
167
|
+
- For new applications (design for MySQL from the start)
|
|
168
|
+
- When PG-specific features have no MySQL equivalent (PostGIS, row-level security)
|
|
169
|
+
|
|
170
|
+
## Common Mistakes
|
|
171
|
+
|
|
172
|
+
- Forgetting `ON UPDATE CURRENT_TIMESTAMP` for `updated_at` columns (PG uses triggers)
|
|
173
|
+
- Using `LAST_INSERT_ID()` with UUID tables (returns 0)
|
|
174
|
+
- Not making migrations idempotent (crashes on re-run if table/column exists)
|
|
175
|
+
- Copying PG foreign key constraints (keep it simple — omit FKs for UUID tables)
|
|
176
|
+
- Not restarting the server after migration (Node.js caches modules)
|
|
177
|
+
- Using `BOOLEAN` in MySQL DDL without realizing it becomes `TINYINT(1)` (functional, but explicit is clearer)
|
|
178
|
+
|
|
179
|
+
## Related Skills
|
|
180
|
+
|
|
181
|
+
- [postgresql-to-mysql-runtime-translation](../database-solutions/postgresql-to-mysql-runtime-translation.md) - Runtime SQL translation layer
|
|
182
|
+
- [reserved-word-context-aware-quoting](../database-solutions/reserved-word-context-aware-quoting.md) - Quoting reserved words
|
|
183
|
+
- [regex-alternation-ordering-sql-types](../database-solutions/regex-alternation-ordering-sql-types.md) - Type cast regex ordering
|
|
184
|
+
|
|
185
|
+
## References
|
|
186
|
+
|
|
187
|
+
- MySQL 8.0 CREATE TABLE: https://dev.mysql.com/doc/refman/8.0/en/create-table.html
|
|
188
|
+
- MySQL UUID(): https://dev.mysql.com/doc/refman/8.0/en/miscellaneous-functions.html#function_uuid
|
|
189
|
+
- Discovered during: MINISTRY-LMS migration (15+ tables ported in 3 sessions)
|
|
190
|
+
- Contributed from: ministry-lms
|
|
@@ -0,0 +1,306 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: sql-dialect-compatibility-matrix
|
|
3
|
+
category: database-solutions
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
contributed: 2026-03-10
|
|
6
|
+
contributor: MINISTRY-LMS, research
|
|
7
|
+
last_updated: 2026-03-10
|
|
8
|
+
tags: [postgresql, mysql, sqlite, sql-server, mariadb, migration, dialect, translation]
|
|
9
|
+
difficulty: hard
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# SQL Dialect Compatibility Matrix
|
|
13
|
+
|
|
14
|
+
## Problem
|
|
15
|
+
|
|
16
|
+
When migrating between databases or building cross-database applications, developers hit dialect differences that cause silent data corruption, runtime errors, or lost functionality. No single reference covers the practical translation rules needed for AI-assisted migration.
|
|
17
|
+
## Solution Pattern
|
|
18
|
+
|
|
19
|
+
Use this matrix as a lookup table during migration planning and execution. Each section is organized by **task** ("what do you want to do?") rather than by database, following the Wikibooks SQL Dialects Reference structure.
|
|
20
|
+
|
|
21
|
+
**Critical principle:** Always verify translations by running against the target database. Rules handle the deterministic 80%; the remaining 20% requires human judgment or LLM-assisted review with verification.
|
|
22
|
+
|
|
23
|
+
## SQL Syntax Translation Rules
|
|
24
|
+
|
|
25
|
+
### Auto-Increment / Sequential IDs
|
|
26
|
+
|
|
27
|
+
| PostgreSQL | MySQL/MariaDB | SQLite | SQL Server |
|
|
28
|
+
|---|---|---|---|
|
|
29
|
+
| `SERIAL` | `INT AUTO_INCREMENT` | `INTEGER PRIMARY KEY` (implicit ROWID) | `INT IDENTITY(1,1)` |
|
|
30
|
+
| `BIGSERIAL` | `BIGINT AUTO_INCREMENT` | same (64-bit ROWID) | `BIGINT IDENTITY(1,1)` |
|
|
31
|
+
| `GENERATED ALWAYS AS IDENTITY` | N/A | N/A | `IDENTITY(start, increment)` |
|
|
32
|
+
|
|
33
|
+
**Gotcha:** MySQL `LAST_INSERT_ID()` returns 0 for UUID primary key tables (`CHAR(36) DEFAULT (UUID())`). Generate UUID in application code and include `id` in INSERT.
|
|
34
|
+
|
|
35
|
+
### Boolean
|
|
36
|
+
|
|
37
|
+
| PostgreSQL | MySQL/MariaDB | SQLite | SQL Server |
|
|
38
|
+
|---|---|---|---|
|
|
39
|
+
| `BOOLEAN` (native) | `TINYINT(1)` / `BOOL` alias | `INTEGER` (0/1) | `BIT` |
|
|
40
|
+
|
|
41
|
+
**Gotcha:** MySQL `BOOL` is literally `TINYINT(1)` — stores 0-127, not just 0/1. Validate value ranges when migrating to PG.
|
|
42
|
+
|
|
43
|
+
### Text / String Types
|
|
44
|
+
|
|
45
|
+
| PostgreSQL | MySQL | SQLite | SQL Server |
|
|
46
|
+
|---|---|---|---|
|
|
47
|
+
| `VARCHAR(n)` up to 10M | `VARCHAR(n)` up to 65K | `TEXT` (all strings) | `VARCHAR(n)` up to 8K; `VARCHAR(MAX)` |
|
|
48
|
+
| `TEXT` (unlimited) | `TINYTEXT/TEXT/MEDIUMTEXT/LONGTEXT` | `TEXT` | `TEXT`/`NTEXT` |
|
|
49
|
+
|
|
50
|
+
**Gotcha:** MySQL silently truncates in some SQL modes; PG raises error. pgloader maps all MySQL TEXT variants to PG `TEXT`.
|
|
51
|
+
|
|
52
|
+
### Date / Time Types
|
|
53
|
+
|
|
54
|
+
| PostgreSQL | MySQL | SQLite | SQL Server |
|
|
55
|
+
|---|---|---|---|
|
|
56
|
+
| `TIMESTAMP` | `DATETIME` | `TEXT` (ISO 8601) | `DATETIME2(p)` |
|
|
57
|
+
| `TIMESTAMPTZ` | `TIMESTAMP` (auto UTC) | `TEXT` | `DATETIMEOFFSET(p)` |
|
|
58
|
+
| `INTERVAL` | N/A | N/A | N/A |
|
|
59
|
+
|
|
60
|
+
**Gotcha:** MySQL allows `0000-00-00` dates; PG rejects them. pgloader converts to NULL. **HIGH data loss risk** for timezone conversions.
|
|
61
|
+
|
|
62
|
+
### UUID
|
|
63
|
+
|
|
64
|
+
| PostgreSQL | MySQL/MariaDB | SQLite | SQL Server |
|
|
65
|
+
|---|---|---|---|
|
|
66
|
+
| `UUID` (native) | `CHAR(36)` / `VARCHAR(36)` | `TEXT` | `UNIQUEIDENTIFIER` |
|
|
67
|
+
| `gen_random_uuid()` | `UUID()` | N/A (app-side) | `NEWID()` |
|
|
68
|
+
|
|
69
|
+
### JSON
|
|
70
|
+
|
|
71
|
+
| PostgreSQL | MySQL | SQLite | SQL Server | MariaDB |
|
|
72
|
+
|---|---|---|---|---|
|
|
73
|
+
| `JSONB` (binary, indexable) | `JSON` (validated) | `JSON` (3.45+ JSONB) | `NVARCHAR(MAX)` | `JSON` (alias for `LONGTEXT`) |
|
|
74
|
+
| `col->>'key'` | `JSON_UNQUOTE(JSON_EXTRACT(col, '$.key'))` | `json_extract(col, '$.key')` | `JSON_VALUE(col, '$.key')` | same as MySQL |
|
|
75
|
+
| `col->'key'` | `JSON_EXTRACT(col, '$.key')` | `json_extract(col, '$.key')` | `JSON_QUERY(col, '$.key')` | same as MySQL |
|
|
76
|
+
| `col @> '{"k":"v"}'` | N/A | N/A | N/A | N/A |
|
|
77
|
+
| GIN index on JSONB | Generated column + B-tree | N/A | Computed column + index | N/A |
|
|
78
|
+
|
|
79
|
+
**Gotcha:** PG `->` uses plain key names; MySQL uses JSONPath (`$.key`). Completely different path syntax.
|
|
80
|
+
|
|
81
|
+
### Arrays
|
|
82
|
+
|
|
83
|
+
| PostgreSQL | MySQL | SQLite | SQL Server | MariaDB |
|
|
84
|
+
|---|---|---|---|---|
|
|
85
|
+
| `TEXT[]`, `INT[]` (native) | N/A (use JSON) | N/A | N/A | N/A |
|
|
86
|
+
|
|
87
|
+
**PG-only.** Must denormalize to JSON array or junction table for other databases.
|
|
88
|
+
|
|
89
|
+
### Enums
|
|
90
|
+
|
|
91
|
+
| PostgreSQL | MySQL/MariaDB | SQLite | SQL Server |
|
|
92
|
+
|---|---|---|---|
|
|
93
|
+
| `CREATE TYPE status AS ENUM(...)` (type-level) | `ENUM(...)` (column-level inline) | N/A (use CHECK) | N/A (use CHECK) |
|
|
94
|
+
|
|
95
|
+
**Gotcha:** pgloader creates separate `CREATE TYPE` for each MySQL inline ENUM.
|
|
96
|
+
|
|
97
|
+
## SQL Syntax Differences
|
|
98
|
+
|
|
99
|
+
### RETURNING Clause
|
|
100
|
+
|
|
101
|
+
| Database | Support | Syntax |
|
|
102
|
+
|---|---|---|
|
|
103
|
+
| PostgreSQL | Full (INSERT/UPDATE/DELETE) | `INSERT ... RETURNING *` |
|
|
104
|
+
| MySQL | **None** | Use `LAST_INSERT_ID()` or re-SELECT |
|
|
105
|
+
| SQLite | Full (3.35+) | `INSERT ... RETURNING *` |
|
|
106
|
+
| SQL Server | Full | `OUTPUT inserted.*` / `OUTPUT deleted.*` |
|
|
107
|
+
| MariaDB | Partial (INSERT/DELETE only) | `INSERT ... RETURNING *` |
|
|
108
|
+
|
|
109
|
+
**MINISTRY-LMS pattern:** 4-strategy fallback chain:
|
|
110
|
+
1. UUID lookup (best for UUID PKs)
|
|
111
|
+
2. Unique column lookup (for upserts)
|
|
112
|
+
3. `LAST_INSERT_ID()` (auto-increment only — returns 0 for UUID!)
|
|
113
|
+
4. Most recent row by `created_at` (race condition risk)
|
|
114
|
+
|
|
115
|
+
### UPSERT / Merge
|
|
116
|
+
|
|
117
|
+
| Database | Syntax |
|
|
118
|
+
|---|---|
|
|
119
|
+
| PostgreSQL | `INSERT ... ON CONFLICT (col) DO UPDATE SET ...` |
|
|
120
|
+
| MySQL/MariaDB | `INSERT ... ON DUPLICATE KEY UPDATE ...` |
|
|
121
|
+
| SQLite | `INSERT ... ON CONFLICT (col) DO UPDATE SET ...` (same as PG) |
|
|
122
|
+
| SQL Server | `MERGE INTO ... USING ... WHEN MATCHED THEN UPDATE ...` |
|
|
123
|
+
|
|
124
|
+
**Translation:** `ON CONFLICT ... DO UPDATE` → `ON DUPLICATE KEY UPDATE`, `EXCLUDED.col` → `VALUES(col)`, `DO NOTHING` → `INSERT IGNORE INTO`.
|
|
125
|
+
|
|
126
|
+
### LIMIT / OFFSET
|
|
127
|
+
|
|
128
|
+
| Database | Syntax |
|
|
129
|
+
|---|---|
|
|
130
|
+
| PostgreSQL | `LIMIT n OFFSET k` |
|
|
131
|
+
| MySQL/MariaDB | `LIMIT n OFFSET k` or `LIMIT k, n` |
|
|
132
|
+
| SQLite | `LIMIT n OFFSET k` |
|
|
133
|
+
| SQL Server | `OFFSET k ROWS FETCH NEXT n ROWS ONLY` (requires ORDER BY) |
|
|
134
|
+
|
|
135
|
+
**Gotcha:** MySQL rejects `LIMIT '20'` (string); PG silently casts. Always `parseInt()` LIMIT/OFFSET from Express `req.query`.
|
|
136
|
+
|
|
137
|
+
### String Concatenation
|
|
138
|
+
|
|
139
|
+
| Database | Syntax |
|
|
140
|
+
|---|---|
|
|
141
|
+
| PostgreSQL | `'a' \|\| 'b'` |
|
|
142
|
+
| MySQL | `CONCAT('a', 'b')` (`\|\|` means OR by default) |
|
|
143
|
+
| SQLite | `'a' \|\| 'b'` |
|
|
144
|
+
| SQL Server | `'a' + 'b'` |
|
|
145
|
+
|
|
146
|
+
### Identifier Quoting
|
|
147
|
+
|
|
148
|
+
| Database | Quote Character |
|
|
149
|
+
|---|---|
|
|
150
|
+
| PostgreSQL | `"double quotes"` (case-preserving) |
|
|
151
|
+
| MySQL/MariaDB | `` `backticks` `` |
|
|
152
|
+
| SQLite | `"double quotes"` or `` `backticks` `` |
|
|
153
|
+
| SQL Server | `[brackets]` or `"double quotes"` |
|
|
154
|
+
|
|
155
|
+
### NULL Sort Order
|
|
156
|
+
|
|
157
|
+
| Database | Default ASC | Default DESC |
|
|
158
|
+
|---|---|---|
|
|
159
|
+
| PostgreSQL | NULLs LAST | NULLs FIRST |
|
|
160
|
+
| MySQL | NULLs FIRST | NULLs LAST |
|
|
161
|
+
| SQLite | NULLs FIRST | NULLs LAST |
|
|
162
|
+
| SQL Server | NULLs FIRST | NULLs LAST |
|
|
163
|
+
|
|
164
|
+
**Translation:** PG `NULLS LAST` → MySQL `ORDER BY col IS NULL, col DESC`. PG `NULLS FIRST` → MySQL `ORDER BY col IS NOT NULL, col ASC`.
|
|
165
|
+
|
|
166
|
+
### Type Casting
|
|
167
|
+
|
|
168
|
+
| Database | Shorthand | Standard |
|
|
169
|
+
|---|---|---|
|
|
170
|
+
| PostgreSQL | `x::type` | `CAST(x AS type)` |
|
|
171
|
+
| MySQL | N/A | `CAST(x AS type)` / `CONVERT(x, type)` |
|
|
172
|
+
| SQLite | N/A | `CAST(x AS type)` |
|
|
173
|
+
| SQL Server | N/A | `CAST(x AS type)` / `CONVERT(type, x)` |
|
|
174
|
+
|
|
175
|
+
**Translation:** Strip all PG `::type` patterns for MySQL/SQLite. Use `CAST()` for portability.
|
|
176
|
+
|
|
177
|
+
## Function Translation
|
|
178
|
+
|
|
179
|
+
### Date Functions
|
|
180
|
+
|
|
181
|
+
| Operation | PostgreSQL | MySQL | SQLite | SQL Server |
|
|
182
|
+
|---|---|---|---|---|
|
|
183
|
+
| Current time | `NOW()` | `NOW()` | `datetime('now')` | `GETDATE()` |
|
|
184
|
+
| Extract part | `EXTRACT(YEAR FROM d)` | `YEAR(d)` | `strftime('%Y', d)` | `DATEPART(year, d)` |
|
|
185
|
+
| Date add | `d + INTERVAL '1 day'` | `DATE_ADD(d, INTERVAL 1 DAY)` | `datetime(d, '+1 day')` | `DATEADD(day, 1, d)` |
|
|
186
|
+
| Date diff | `d1 - d2` (interval) | `DATEDIFF(d1, d2)` (days) | `julianday(d1) - julianday(d2)` | `DATEDIFF(day, d1, d2)` |
|
|
187
|
+
| Format | `TO_CHAR(d, 'YYYY-MM-DD')` | `DATE_FORMAT(d, '%Y-%m-%d')` | `strftime('%Y-%m-%d', d)` | `FORMAT(d, 'yyyy-MM-dd')` |
|
|
188
|
+
| Truncate | `DATE_TRUNC('month', d)` | `DATE_FORMAT(d, '%Y-%m-01')` | `strftime('%Y-%m-01', d)` | `DATETRUNC(month, d)` |
|
|
189
|
+
|
|
190
|
+
**Format token mapping (PG → MySQL):** `YYYY→%Y`, `MM→%m`, `DD→%d`, `HH24→%H`, `MI→%i`, `SS→%s`.
|
|
191
|
+
|
|
192
|
+
### String Functions
|
|
193
|
+
|
|
194
|
+
| Operation | PostgreSQL | MySQL | SQLite | SQL Server |
|
|
195
|
+
|---|---|---|---|---|
|
|
196
|
+
| Length | `LENGTH(s)` | `LENGTH(s)` | `LENGTH(s)` | `LEN(s)` |
|
|
197
|
+
| Position | `POSITION(sub IN s)` | `LOCATE(sub, s)` | `INSTR(s, sub)` | `CHARINDEX(sub, s)` |
|
|
198
|
+
| Regex match | `~ 'pattern'` | `REGEXP 'pattern'` | N/A | N/A |
|
|
199
|
+
| Case-insensitive LIKE | `ILIKE` | `LIKE` (CI by default) | `LIKE` (CI for ASCII) | `LIKE` (collation) |
|
|
200
|
+
| String split | `split_part(s, ',', 2)` | `SUBSTRING_INDEX(SUBSTRING_INDEX(s, ',', 2), ',', -1)` | N/A | N/A |
|
|
201
|
+
|
|
202
|
+
### Aggregate Functions
|
|
203
|
+
|
|
204
|
+
| Operation | PostgreSQL | MySQL | SQLite | SQL Server |
|
|
205
|
+
|---|---|---|---|---|
|
|
206
|
+
| String agg | `STRING_AGG(col, ',')` | `GROUP_CONCAT(col SEPARATOR ',')` | `GROUP_CONCAT(col, ',')` | `STRING_AGG(col, ',')` (2017+) |
|
|
207
|
+
| JSON agg | `json_agg(col)` | `CONCAT('[', GROUP_CONCAT(col), ']')` | `json_group_array(col)` | N/A |
|
|
208
|
+
| Filtered agg | `COUNT(*) FILTER (WHERE x)` | `SUM(CASE WHEN x THEN 1 ELSE 0 END)` | N/A | N/A |
|
|
209
|
+
| JSON object | `jsonb_build_object('k', v)` | `JSON_OBJECT('k', v)` | `json_object('k', v)` | N/A |
|
|
210
|
+
|
|
211
|
+
## Constraints & Indexing
|
|
212
|
+
|
|
213
|
+
### Constraint Support
|
|
214
|
+
|
|
215
|
+
| Feature | PostgreSQL | MySQL (InnoDB) | SQLite | SQL Server |
|
|
216
|
+
|---|---|---|---|---|
|
|
217
|
+
| CHECK constraints | Full | Enforced 8.0.16+ (ignored before!) | Full | Full |
|
|
218
|
+
| Deferred constraints | `DEFERRABLE INITIALLY DEFERRED` | **Not supported** | Supported | **Not supported** |
|
|
219
|
+
| EXCLUDE constraints | Full (GiST) | **Not supported** | **Not supported** | **Not supported** |
|
|
220
|
+
| Multiple cascade paths | Allowed | Allowed | Allowed | **Not allowed** |
|
|
221
|
+
|
|
222
|
+
**Gotcha:** MySQL CHECK constraints were silently ignored for years. Data may violate constraints after PG migration.
|
|
223
|
+
|
|
224
|
+
### Index Types
|
|
225
|
+
|
|
226
|
+
| Feature | PostgreSQL | MySQL | SQLite | SQL Server |
|
|
227
|
+
|---|---|---|---|---|
|
|
228
|
+
| Partial index | `WHERE condition` | **No** | Yes (3.8+) | Yes (filtered) |
|
|
229
|
+
| Expression index | `ON (lower(col))` | **No** (use generated column) | Yes (3.9+) | Computed column |
|
|
230
|
+
| GIN (inverted) | Yes | **No** | **No** | **No** |
|
|
231
|
+
| Covering (INCLUDE) | Yes (11+) | **No** | **No** | Yes |
|
|
232
|
+
| Concurrent creation | `CONCURRENTLY` | `ALGORITHM=INPLACE` | **No** | `ONLINE = ON` |
|
|
233
|
+
|
|
234
|
+
## Automatable vs Human Judgment
|
|
235
|
+
|
|
236
|
+
### Fully Automatable (lookup table)
|
|
237
|
+
- Basic type mappings (INT, VARCHAR, TEXT, DATE)
|
|
238
|
+
- Auto-increment syntax
|
|
239
|
+
- LIMIT/OFFSET syntax
|
|
240
|
+
- String concatenation
|
|
241
|
+
- Identifier quoting
|
|
242
|
+
- UPSERT templates
|
|
243
|
+
- RETURNING clause templates
|
|
244
|
+
- Type cast stripping (`::type`)
|
|
245
|
+
- ILIKE → LIKE
|
|
246
|
+
- Interval syntax (`INTERVAL '30 days'` → `INTERVAL 30 DAY`)
|
|
247
|
+
|
|
248
|
+
### Partially Automatable (rules + validation)
|
|
249
|
+
- Unsigned integer upsizing (MySQL UNSIGNED INT → PG BIGINT)
|
|
250
|
+
- BOOLEAN conversion (validate TINYINT(1) value ranges)
|
|
251
|
+
- Zero-date handling (`0000-00-00` → NULL)
|
|
252
|
+
- ENUM extraction (inline → CREATE TYPE)
|
|
253
|
+
- Text encoding conversion (detect charset first)
|
|
254
|
+
|
|
255
|
+
### Requires Human Judgment
|
|
256
|
+
- ARRAY type decomposition (JSON vs junction table — depends on access patterns)
|
|
257
|
+
- Timezone semantics (TIMESTAMP vs TIMESTAMPTZ behavior)
|
|
258
|
+
- DECIMAL precision alignment for financial data
|
|
259
|
+
- Index strategy redesign (GIN/GiST have no equivalents)
|
|
260
|
+
- Stored procedure rewriting (procedural syntax differs fundamentally)
|
|
261
|
+
- Collation and case-sensitivity behavior
|
|
262
|
+
- Constraint validation (lax MySQL CHECK → strict PG)
|
|
263
|
+
|
|
264
|
+
## Tools Reference
|
|
265
|
+
|
|
266
|
+
| Tool | Direction | Type | Best For |
|
|
267
|
+
|------|-----------|------|----------|
|
|
268
|
+
| **SQLGlot** | 31+ dialects | Deterministic (Python) | Automated SQL transpiling |
|
|
269
|
+
| **pgloader** | MySQL/SQLite → PG | Declarative config | One-shot migration with type mapping |
|
|
270
|
+
| **SQLines** | 10+ dialects | Rule-based | DDL + DML + stored procedures |
|
|
271
|
+
| **AWS SCT** | Any → AWS DB | Assessment + conversion | Migration complexity scoring |
|
|
272
|
+
| **sql-compat.js** (MINISTRY-LMS) | PG → MySQL | Runtime layer | Live bilingual applications |
|
|
273
|
+
|
|
274
|
+
## When to Use
|
|
275
|
+
|
|
276
|
+
- Planning a database migration (any direction)
|
|
277
|
+
- Building cross-database applications
|
|
278
|
+
- Writing the DATABASE phase of `/fire-resurrect`
|
|
279
|
+
- Reviewing ORM migration portability
|
|
280
|
+
- Auditing SQL for dialect-specific constructs before migration
|
|
281
|
+
|
|
282
|
+
## When NOT to Use
|
|
283
|
+
|
|
284
|
+
- Single-database projects with no migration plans
|
|
285
|
+
- NoSQL databases (MongoDB, Redis, DynamoDB)
|
|
286
|
+
- Data warehouse migrations (Snowflake, BigQuery — different paradigm)
|
|
287
|
+
|
|
288
|
+
## Related Skills
|
|
289
|
+
|
|
290
|
+
- [pg-to-mysql-schema-migration-methodology](pg-to-mysql-schema-migration-methodology.md)
|
|
291
|
+
- [mysql-limit-offset-string-coercion](mysql-limit-offset-string-coercion.md)
|
|
292
|
+
- [mysql-to-pg-migration](mysql-to-pg-migration.md)
|
|
293
|
+
- [sqlite-to-pg-migration](sqlite-to-pg-migration.md)
|
|
294
|
+
- [orm-schema-portability](orm-schema-portability.md)
|
|
295
|
+
- [data-type-mapping-reference](data-type-mapping-reference.md)
|
|
296
|
+
|
|
297
|
+
## References
|
|
298
|
+
|
|
299
|
+
- PARROT Benchmark (NeurIPS 2025) — SQL translation accuracy evaluation
|
|
300
|
+
- CrackSQL (SIGMOD 2025) — Hybrid rule+LLM dialect translation
|
|
301
|
+
- RISE (arXiv 2601.05579, 2026) — Rule-driven SQL dialect translation
|
|
302
|
+
- SQLGlot (github.com/tobymao/sqlglot) — Python SQL transpiler, 31+ dialects
|
|
303
|
+
- pgloader (pgloader.readthedocs.io) — MySQL/SQLite to PostgreSQL migration
|
|
304
|
+
- Troels Arvin — SQL implementation comparison (troels.arvin.dk/db/rdbms/)
|
|
305
|
+
- Wikibooks SQL Dialects Reference
|
|
306
|
+
- MINISTRY-LMS sql-compat.js — 27 production-proven translation rules
|