{
  "$schema": "https://docs.sqlparser.com/capabilities/v1/schema/dialect.schema.json",
  "dialect": "soql",
  "display_name": "Salesforce SOQL",
  "aliases": [],
  "product": "General SQL Parser",
  "edition": "java",
  "version": "4.1.9",
  "measured_at": "2026-08-03T03:25:59.446114891Z",
  "provenance": {
    "kind": "measured",
    "artifact_sha256": "9bf7ca575030",
    "corpus_commit": "8bce26814",
    "corpus_files": 30,
    "methodology_url": "https://docs.sqlparser.com/reference/sql-syntax/#methodology"
  },
  "parse_coverage": {
    "kind": "measured",
    "note": "Pass rates are over GSP's documented-example corpus for this dialect, not a percentage of the entire SQL dialect.",
    "constructs": {"passed": 28, "total": 30},
    "statements": {"passed": 101, "total": 106},
    "statement_classes": {
      "select": {"constructs": {"passed": 28, "total": 30}, "statements": {"passed": 101, "total": 106}},
      "dml": {"constructs": {"passed": 0, "total": 0}, "statements": {"passed": 0, "total": 0}},
      "stored_procedures": {"constructs": {"passed": 0, "total": 0}, "statements": {"passed": 0, "total": 0}}
    }
  },
  "keywords": {
    "kind": "measured",
    "measured_at": "2026-07-29T23:46:37Z",
    "total": 541,
    "allowed_as_identifier": 500,
    "context_specific": 2,
    "blocked": 39,
    "details_url": "https://docs.sqlparser.com/reference/sql-syntax/soql/keyword-compatibility/"
  },
  "docs_url": "https://docs.sqlparser.com/reference/sql-syntax/soql/",
  "constructs": [
    {"name": "Aggregate Functions", "category": "SELECT", "passed": 6, "total": 6, "source": "https://developer.salesforce.com/docs/atlas.en-us.soql_sosl.meta/soql_sosl/sforce_api_calls_soql_select_agg_functions.htm"},
    {"name": "convertCurrency() and Currency Literals", "category": "SELECT", "passed": 4, "total": 4, "source": "https://developer.salesforce.com/docs/atlas.en-us.soql_sosl.meta/soql_sosl/sforce_api_calls_soql_querying_currency_fields.htm"},
    {"name": "COUNT() and COUNT(fieldName)", "category": "SELECT", "passed": 5, "total": 5, "source": "https://developer.salesforce.com/docs/atlas.en-us.soql_sosl.meta/soql_sosl/sforce_api_calls_soql_select_count.htm"},
    {"name": "Date Functions", "category": "SELECT", "passed": 4, "total": 4, "source": "https://developer.salesforce.com/docs/atlas.en-us.soql_sosl.meta/soql_sosl/sforce_api_calls_soql_select_date_functions.htm"},
    {"name": "Date Literals", "category": "SELECT", "passed": 5, "total": 6, "source": "https://developer.salesforce.com/docs/atlas.en-us.soql_sosl.meta/soql_sosl/sforce_api_calls_soql_select_dateformats.htm"},
    {"name": "FIELDS()", "category": "SELECT", "passed": 6, "total": 6, "source": "https://developer.salesforce.com/docs/atlas.en-us.soql_sosl.meta/soql_sosl/sforce_api_calls_soql_select_fields.htm"},
    {"name": "FOR UPDATE", "category": "SELECT", "passed": 1, "total": 1, "source": "https://developer.salesforce.com/docs/atlas.en-us.soql_sosl.meta/soql_sosl/sforce_api_calls_soql_select_for_update.htm"},
    {"name": "FOR VIEW and FOR REFERENCE", "category": "SELECT", "passed": 2, "total": 2, "source": "https://developer.salesforce.com/docs/atlas.en-us.soql_sosl.meta/soql_sosl/sforce_api_calls_soql_select_for_view_for_reference.htm"},
    {"name": "FORMAT()", "category": "SELECT", "passed": 5, "total": 5, "source": "https://developer.salesforce.com/docs/atlas.en-us.soql_sosl.meta/soql_sosl/sforce_api_calls_soql_select_format.htm"},
    {"name": "GROUP BY", "category": "SELECT", "passed": 2, "total": 2, "source": "https://developer.salesforce.com/docs/atlas.en-us.soql_sosl.meta/soql_sosl/sforce_api_calls_soql_select_groupby.htm"},
    {"name": "GROUP BY CUBE", "category": "SELECT", "passed": 1, "total": 1, "source": "https://developer.salesforce.com/docs/atlas.en-us.soql_sosl.meta/soql_sosl/sforce_api_calls_soql_select_groupby_cube.htm"},
    {"name": "GROUP BY ROLLUP", "category": "SELECT", "passed": 2, "total": 2, "source": "https://developer.salesforce.com/docs/atlas.en-us.soql_sosl.meta/soql_sosl/sforce_api_calls_soql_select_groupby_rollup.htm"},
    {"name": "HAVING", "category": "SELECT", "passed": 3, "total": 3, "source": "https://developer.salesforce.com/docs/atlas.en-us.soql_sosl.meta/soql_sosl/sforce_api_calls_soql_select_having.htm"},
    {"name": "IN and NOT IN", "category": "SELECT", "passed": 5, "total": 5, "source": "https://developer.salesforce.com/docs/atlas.en-us.soql_sosl.meta/soql_sosl/sforce_api_calls_soql_select_comparisonoperators.htm"},
    {"name": "LIKE", "category": "SELECT", "passed": 2, "total": 2, "source": "https://developer.salesforce.com/docs/atlas.en-us.soql_sosl.meta/soql_sosl/sforce_api_calls_soql_select_comparisonoperators.htm"},
    {"name": "LIMIT", "category": "SELECT", "passed": 2, "total": 2, "source": "https://developer.salesforce.com/docs/atlas.en-us.soql_sosl.meta/soql_sosl/sforce_api_calls_soql_select_limit.htm"},
    {"name": "Logical Operators", "category": "SELECT", "passed": 2, "total": 2, "source": "https://developer.salesforce.com/docs/atlas.en-us.soql_sosl.meta/soql_sosl/sforce_api_calls_soql_select_logicaloperators.htm"},
    {"name": "Multi-Select Picklists (INCLUDES and EXCLUDES)", "category": "SELECT", "passed": 3, "total": 3, "source": "https://developer.salesforce.com/docs/atlas.en-us.soql_sosl.meta/soql_sosl/sforce_api_calls_soql_querying_multiselect_picklists.htm"},
    {"name": "null in WHERE", "category": "SELECT", "passed": 2, "total": 2, "source": "https://developer.salesforce.com/docs/atlas.en-us.soql_sosl.meta/soql_sosl/sforce_api_calls_soql_null.htm"},
    {"name": "OFFSET", "category": "SELECT", "passed": 3, "total": 3, "source": "https://developer.salesforce.com/docs/atlas.en-us.soql_sosl.meta/soql_sosl/sforce_api_calls_soql_select_offset.htm"},
    {"name": "ORDER BY", "category": "SELECT", "passed": 6, "total": 6, "source": "https://developer.salesforce.com/docs/atlas.en-us.soql_sosl.meta/soql_sosl/sforce_api_calls_soql_select_orderby.htm"},
    {"name": "Relationship Query (child-to-parent)", "category": "SELECT", "passed": 3, "total": 3, "source": "https://developer.salesforce.com/docs/atlas.en-us.soql_sosl.meta/soql_sosl/sforce_api_calls_soql_relationships_query_using.htm"},
    {"name": "Relationship Query (parent-to-child subquery)", "category": "SELECT", "passed": 5, "total": 5, "source": "https://developer.salesforce.com/docs/atlas.en-us.soql_sosl.meta/soql_sosl/sforce_api_calls_soql_relationships_query_using.htm"},
    {"name": "SELECT (basic)", "category": "SELECT", "passed": 4, "total": 4, "source": "https://developer.salesforce.com/docs/atlas.en-us.soql_sosl.meta/soql_sosl/sforce_api_calls_soql_select.htm"},
    {"name": "toLabel()", "category": "SELECT", "passed": 3, "total": 3, "source": "https://developer.salesforce.com/docs/atlas.en-us.soql_sosl.meta/soql_sosl/sforce_api_calls_soql_select_tolabel.htm"},
    {"name": "TYPEOF", "category": "SELECT", "passed": 4, "total": 4, "source": "https://developer.salesforce.com/docs/atlas.en-us.soql_sosl.meta/soql_sosl/sforce_api_calls_soql_select_typeof.htm"},
    {"name": "USING SCOPE", "category": "SELECT", "passed": 4, "total": 4, "source": "https://developer.salesforce.com/docs/atlas.en-us.soql_sosl.meta/soql_sosl/sforce_api_calls_soql_select_using_scope.htm"},
    {"name": "WHERE", "category": "SELECT", "passed": 4, "total": 4, "source": "https://developer.salesforce.com/docs/atlas.en-us.soql_sosl.meta/soql_sosl/sforce_api_calls_soql_select_conditionexpression.htm"},
    {"name": "WITH DATA CATEGORY", "category": "SELECT", "passed": 3, "total": 3, "source": "https://developer.salesforce.com/docs/atlas.en-us.soql_sosl.meta/soql_sosl/sforce_api_calls_soql_select_with_datacategory.htm"},
    {"name": "WITH SECURITY_ENFORCED", "category": "SELECT", "passed": 0, "total": 4, "source": "https://developer.salesforce.com/docs/atlas.en-us.256.0.apexcode.meta/apexcode/apex_classes_with_security_enforced.htm"}
  ]
}
