Projects STRLCPY graphql-engine Commits 59de1c3c
🤬
  • Update the ndc-postgres dependency to the latest version. (#386)

    This seems appropriate now that we've stabilized the new configuration.
    Of note are the configuration updates and the use of an environment
    variable to specify the connection URI. This upgrade also fixes the
    health checks.
    
    Regenerating the configuration lost the table descriptions, which seems
    to be because they were not present in the Chinook SQL. I have dragged
    the Chinook SQL in from ndc-postgres and kept it separate from the
    initialization of other tables.
    
    The auto-generated configuration is slightly different from the
    manually-created configuration in that the collection names are
    singular, not plural. This means that I had to change a lot of test
    metadata files too.
    
    V3_GIT_ORIGIN_REV_ID: 2b66fd3049aaf4daeb386915ea3b64a209b1f393
  • Loading...
  • Samir Talwar committed with hasura-bot 2 months ago
    59de1c3c
    1 parent 8142819a
Revision indexing in progress... (symbol navigation in revisions will be accurate after indexed)
  • ■ ■ ■ ■ ■ ■
    v3/README.md
    skipped 152 lines
    153 153  METADATA_PATH=crates/engine/tests/schema.json AUTHN_CONFIG_PATH=auth_config.json docker compose up postgres_connector engine
    154 154  ```
    155 155   
    156  -If you are running the v3-engine locally through cargo, then you'll need to update the value of the
    157  -`singleUrl` present in the `crates/engine/tests/chinook/chinook_engine_metadata.json**
    158  -from http://postgres_connector:8100 to http://localhost:8100 .
     156 +If you are running the v3-engine locally through cargo, then you'll need to
     157 +update the value of the `singleUrl` present in `crates/engine/tests/chinook/schema.json**
     158 +from `"http://postgres_connector:8080"` to `"http://localhost:8100"`.
    159 159   
    160 160  ### Running tests with a single command
    161 161   
    skipped 54 lines
  • ■ ■ ■ ■ ■ ■
    v3/ci.docker-compose.yaml
    skipped 12 lines
    13 13   target: /var/lib/postgresql/data
    14 14   - type: bind
    15 15   source: ./crates/engine/tests/db_definition.sql
    16  - target: /docker-entrypoint-initdb.d/db_definition.sql
     16 + target: /docker-entrypoint-initdb.d/01-db_definition.sql
     17 + read_only: true
     18 + - type: bind
     19 + source: ./crates/engine/tests/chinook-postgres.sql
     20 + target: /docker-entrypoint-initdb.d/02-chinook.sql
    17 21   read_only: true
    18 22   healthcheck:
    19 23   test:
    skipped 5 lines
    25 29   retries: 20
    26 30   
    27 31   postgres_connector:
    28  - image: ghcr.io/hasura/ndc-postgres:dev-main-0452625e7
    29  - command:
    30  - - serve
    31  - - --configuration
    32  - - /config.json
     32 + image: ghcr.io/hasura/ndc-postgres:dev-main
    33 33   ports:
    34  - - "8100:8100"
     34 + - 8100:8080
     35 + environment:
     36 + CONNECTION_URI: "postgresql://postgres:password@postgres"
    35 37   volumes:
    36  - - ./crates/engine/tests/pg_ndc_config.json:/config.json
     38 + - type: bind
     39 + source: ./crates/engine/tests/ndc-postgres-configuration
     40 + target: /etc/connector
     41 + read_only: true
    37 42   depends_on:
    38 43   postgres:
    39 44   condition: service_healthy
    skipped 35 lines
    75 80   postgres:
    76 81   condition: service_healthy
    77 82   postgres_connector:
    78  - condition: service_started
     83 + condition: service_healthy
    79 84   custom_connector:
    80 85   condition: service_healthy
    81 86   volumes:
    skipped 13 lines
  • v3/crates/engine/tests/chinook-postgres.sql
    Diff is too large to be displayed.
  • v3/crates/engine/tests/db_definition.sql
    Diff is too large to be displayed.
  • ■ ■ ■ ■
    v3/crates/engine/tests/execute/apollo_federation_fields/common_metadata.json
    skipped 107 lines
    108 108   "objectType": "author",
    109 109   "source": {
    110 110   "dataConnectorName": "db",
    111  - "collection": "authors"
     111 + "collection": "author"
    112 112   },
    113 113   "graphql": {
    114 114   "selectUniques": [
    skipped 72 lines
  • ■ ■ ■ ■ ■ ■
    v3/crates/engine/tests/execute/common_metadata/postgres_connector_schema.json
    skipped 8 lines
    9 9   "name": "db",
    10 10   "url": {
    11 11   "singleUrl": {
    12  - "value": "http://postgres_connector:8100"
     12 + "value": "http://postgres_connector:8080"
    13 13   }
    14 14   },
    15 15   "schema": {
    skipped 556 lines
    572 572   },
    573 573   "collections": [
    574 574   {
    575  - "name": "articles",
     575 + "name": "article",
    576 576   "description": "A collection of articles",
    577 577   "arguments": {},
    578 578   "type": "article",
    skipped 8 lines
    587 587   "foreign_keys": {}
    588 588   },
    589 589   {
    590  - "name": "authors",
     590 + "name": "author",
    591 591   "description": "A collection of authors",
    592 592   "arguments": {},
    593 593   "type": "author",
    skipped 265 lines
    859 859   }
    860 860   ]
    861 861  }
     862 + 
  • ■ ■ ■ ■ ■ ■
    v3/crates/engine/tests/execute/common_metadata/two_connectors_schema.json
    skipped 585 lines
    586 586   "name": "db",
    587 587   "url": {
    588 588   "singleUrl": {
    589  - "value": "http://postgres_connector:8100"
     589 + "value": "http://postgres_connector:8080"
    590 590   }
    591 591   },
    592 592   "headers": {},
    skipped 259 lines
    852 852   },
    853 853   "collections": [
    854 854   {
    855  - "name": "articles",
     855 + "name": "article",
    856 856   "description": "A collection of articles",
    857 857   "arguments": {},
    858 858   "type": "article",
    skipped 8 lines
    867 867   "foreign_keys": {}
    868 868   },
    869 869   {
    870  - "name": "authors",
     870 + "name": "author",
    871 871   "description": "A collection of authors",
    872 872   "arguments": {},
    873 873   "type": "author",
    skipped 219 lines
  • ■ ■ ■ ■ ■ ■
    v3/crates/engine/tests/execute/common_metadata/two_postgres_connector_schema.json
    skipped 8 lines
    9 9   "name": "db",
    10 10   "url": {
    11 11   "singleUrl": {
    12  - "value": "http://postgres_connector:8100"
     12 + "value": "http://postgres_connector:8080"
    13 13   }
    14 14   },
    15 15   "schema": {
    skipped 521 lines
    537 537   },
    538 538   "collections": [
    539 539   {
    540  - "name": "articles",
     540 + "name": "article",
    541 541   "description": "A collection of articles",
    542 542   "arguments": {},
    543 543   "type": "article",
    skipped 8 lines
    552 552   "foreign_keys": {}
    553 553   },
    554 554   {
    555  - "name": "authors",
     555 + "name": "author",
    556 556   "description": "A collection of authors",
    557 557   "arguments": {},
    558 558   "type": "author",
    skipped 258 lines
    817 817   "name": "db",
    818 818   "url": {
    819 819   "singleUrl": {
    820  - "value": "http://postgres_connector:8100"
     820 + "value": "http://postgres_connector:8080"
    821 821   }
    822 822   },
    823 823   "schema": {
    skipped 522 lines
    1346 1346   },
    1347 1347   "collections": [
    1348 1348   {
    1349  - "name": "articles",
     1349 + "name": "article",
    1350 1350   "description": "A collection of articles",
    1351 1351   "arguments": {},
    1352 1352   "type": "article",
    skipped 8 lines
    1361 1361   "foreign_keys": {}
    1362 1362   },
    1363 1363   {
    1364  - "name": "authors",
     1364 + "name": "author",
    1365 1365   "description": "A collection of authors",
    1366 1366   "arguments": {},
    1367 1367   "type": "author",
    skipped 252 lines
    1620 1620   }
    1621 1621   ]
    1622 1622  }
     1623 + 
  • ■ ■ ■ ■
    v3/crates/engine/tests/execute/models/select_many/limit_offset/common_metadata/metadata.json
    skipped 79 lines
    80 80   "objectType": "author",
    81 81   "source": {
    82 82   "dataConnectorName": "db",
    83  - "collection": "authors"
     83 + "collection": "author"
    84 84   },
    85 85   "graphql": {
    86 86   "selectUniques": [],
    skipped 124 lines
  • ■ ■ ■ ■
    v3/crates/engine/tests/execute/models/select_many/order_by/filter/metadata.json
    skipped 79 lines
    80 80   "objectType": "author",
    81 81   "source": {
    82 82   "dataConnectorName": "db",
    83  - "collection": "authors"
     83 + "collection": "author"
    84 84   },
    85 85   "graphql": {
    86 86   "selectUniques": [],
    skipped 90 lines
  • ■ ■ ■ ■
    v3/crates/engine/tests/execute/models/select_many/order_by/metadata.json
    skipped 79 lines
    80 80   "objectType": "author",
    81 81   "source": {
    82 82   "dataConnectorName": "db",
    83  - "collection": "authors"
     83 + "collection": "author"
    84 84   },
    85 85   "graphql": {
    86 86   "selectUniques": [],
    skipped 258 lines
  • ■ ■ ■ ■
    v3/crates/engine/tests/execute/models/select_many/order_by/with_graphql_config/metadata.json
    skipped 74 lines
    75 75   "objectType": "author",
    76 76   "source": {
    77 77   "dataConnectorName": "db",
    78  - "collection": "authors"
     78 + "collection": "author"
    79 79   },
    80 80   "graphql": {
    81 81   "selectUniques": [],
    skipped 267 lines
  • ■ ■ ■ ■
    v3/crates/engine/tests/execute/models/select_many/predicate/is_null/metadata.json
    skipped 74 lines
    75 75   "objectType": "author",
    76 76   "source": {
    77 77   "dataConnectorName": "db",
    78  - "collection": "authors"
     78 + "collection": "author"
    79 79   },
    80 80   "graphql": {
    81 81   "selectUniques": [],
    skipped 85 lines
  • ■ ■ ■ ■
    v3/crates/engine/tests/execute/models/select_many/select_with_args/filter/metadata.json
    skipped 135 lines
    136 136   "globalIdSource": true,
    137 137   "source": {
    138 138   "dataConnectorName": "db",
    139  - "collection": "articles"
     139 + "collection": "article"
    140 140   },
    141 141   "graphql": {
    142 142   "selectUniques": [
    skipped 93 lines
  • ■ ■ ■ ■
    v3/crates/engine/tests/execute/models/select_many/select_with_args/metadata.json
    skipped 135 lines
    136 136   "globalIdSource": true,
    137 137   "source": {
    138 138   "dataConnectorName": "db",
    139  - "collection": "articles"
     139 + "collection": "article"
    140 140   },
    141 141   "graphql": {
    142 142   "selectUniques": [
    skipped 69 lines
  • ■ ■ ■ ■
    v3/crates/engine/tests/execute/models/select_many/simple_select/filter/metadata.json
    skipped 79 lines
    80 80   "objectType": "author",
    81 81   "source": {
    82 82   "dataConnectorName": "db",
    83  - "collection": "authors"
     83 + "collection": "author"
    84 84   },
    85 85   "graphql": {
    86 86   "selectUniques": [],
    skipped 89 lines
  • ■ ■ ■ ■
    v3/crates/engine/tests/execute/models/select_many/simple_select/introspection/introspection/metadata.json
    skipped 115 lines
    116 116   "objectType": "author",
    117 117   "source": {
    118 118   "dataConnectorName": "db",
    119  - "collection": "authors"
     119 + "collection": "author"
    120 120   },
    121 121   "graphql": {
    122 122   "selectUniques": [],
    skipped 67 lines
  • ■ ■ ■ ■
    v3/crates/engine/tests/execute/models/select_many/simple_select/introspection/introspection_user_1/metadata.json
    skipped 79 lines
    80 80   "objectType": "author",
    81 81   "source": {
    82 82   "dataConnectorName": "db",
    83  - "collection": "authors"
     83 + "collection": "author"
    84 84   },
    85 85   "graphql": {
    86 86   "selectUniques": [],
    skipped 65 lines
  • ■ ■ ■ ■
    v3/crates/engine/tests/execute/models/select_many/simple_select/introspection/with_graphql_config/metadata.json
    skipped 115 lines
    116 116   "objectType": "author",
    117 117   "source": {
    118 118   "dataConnectorName": "db",
    119  - "collection": "authors"
     119 + "collection": "author"
    120 120   },
    121 121   "graphql": {
    122 122   "selectUniques": [],
    skipped 67 lines
  • ■ ■ ■ ■
    v3/crates/engine/tests/execute/models/select_many/simple_select/metadata.json
    skipped 112 lines
    113 113   "objectType": "author",
    114 114   "source": {
    115 115   "dataConnectorName": "db",
    116  - "collection": "authors"
     116 + "collection": "author"
    117 117   },
    118 118   "graphql": {
    119 119   "selectUniques": [],
    skipped 65 lines
  • ■ ■ ■ ■
    v3/crates/engine/tests/execute/models/select_many/type_permission/order_by/metadata.json
    skipped 112 lines
    113 113   "objectType": "author",
    114 114   "source": {
    115 115   "dataConnectorName": "db",
    116  - "collection": "authors"
     116 + "collection": "author"
    117 117   },
    118 118   "graphql": {
    119 119   "selectUniques": [],
    skipped 82 lines
  • ■ ■ ■ ■
    v3/crates/engine/tests/execute/models/select_many/type_permission/where/metadata.json
    skipped 112 lines
    113 113   "objectType": "author",
    114 114   "source": {
    115 115   "dataConnectorName": "db",
    116  - "collection": "authors"
     116 + "collection": "author"
    117 117   },
    118 118   "graphql": {
    119 119   "selectUniques": [],
    skipped 82 lines
  • ■ ■ ■ ■
    v3/crates/engine/tests/execute/models/select_many/where/filter/metadata.json
    skipped 112 lines
    113 113   "objectType": "author",
    114 114   "source": {
    115 115   "dataConnectorName": "db",
    116  - "collection": "authors"
     116 + "collection": "author"
    117 117   },
    118 118   "graphql": {
    119 119   "selectUniques": [],
    skipped 90 lines
  • ■ ■ ■ ■
    v3/crates/engine/tests/execute/models/select_many/where/is_null/metadata.json
    skipped 112 lines
    113 113   "objectType": "author",
    114 114   "source": {
    115 115   "dataConnectorName": "db",
    116  - "collection": "authors"
     116 + "collection": "author"
    117 117   },
    118 118   "graphql": {
    119 119   "selectUniques": [],
    skipped 66 lines
  • ■ ■ ■ ■
    v3/crates/engine/tests/execute/models/select_many/where/simple/metadata.json
    skipped 115 lines
    116 116   "objectType": "author",
    117 117   "source": {
    118 118   "dataConnectorName": "db",
    119  - "collection": "authors"
     119 + "collection": "author"
    120 120   },
    121 121   "graphql": {
    122 122   "selectUniques": [],
    skipped 82 lines
  • ■ ■ ■ ■
    v3/crates/engine/tests/execute/models/select_many/where/with_graphql_config/metadata.json
    skipped 113 lines
    114 114   "objectType": "author",
    115 115   "source": {
    116 116   "dataConnectorName": "db",
    117  - "collection": "authors"
     117 + "collection": "author"
    118 118   },
    119 119   "graphql": {
    120 120   "selectUniques": [],
    skipped 82 lines
  • ■ ■ ■ ■
    v3/crates/engine/tests/execute/models/select_one/custom_scalar/metadata.json
    skipped 89 lines
    90 90   "objectType": "author",
    91 91   "source": {
    92 92   "dataConnectorName": "db",
    93  - "collection": "authors"
     93 + "collection": "author"
    94 94   },
    95 95   "graphql": {
    96 96   "selectUniques": [
    skipped 69 lines
  • ■ ■ ■ ■
    v3/crates/engine/tests/execute/models/select_one/simple_select/filter/metadata.json
    skipped 79 lines
    80 80   "objectType": "author",
    81 81   "source": {
    82 82   "dataConnectorName": "db",
    83  - "collection": "authors"
     83 + "collection": "author"
    84 84   },
    85 85   "graphql": {
    86 86   "selectUniques": [
    skipped 93 lines
  • ■ ■ ■ ■
    v3/crates/engine/tests/execute/models/select_one/simple_select/introspection/introspection/metadata.json
    skipped 79 lines
    80 80   "objectType": "author",
    81 81   "source": {
    82 82   "dataConnectorName": "db",
    83  - "collection": "authors"
     83 + "collection": "author"
    84 84   },
    85 85   "graphql": {
    86 86   "selectUniques": [
    skipped 69 lines
  • ■ ■ ■ ■
    v3/crates/engine/tests/execute/models/select_one/simple_select/metadata.json
    skipped 79 lines
    80 80   "objectType": "author",
    81 81   "source": {
    82 82   "dataConnectorName": "db",
    83  - "collection": "authors"
     83 + "collection": "author"
    84 84   },
    85 85   "graphql": {
    86 86   "selectUniques": [
    skipped 69 lines
  • ■ ■ ■ ■
    v3/crates/engine/tests/execute/models/select_one/type_permission/metadata.json
    skipped 79 lines
    80 80   "objectType": "author",
    81 81   "source": {
    82 82   "dataConnectorName": "db",
    83  - "collection": "authors"
     83 + "collection": "author"
    84 84   },
    85 85   "graphql": {
    86 86   "selectUniques": [
    skipped 78 lines
  • ■ ■ ■ ■ ■ ■
    v3/crates/engine/tests/execute/multiple_root_fields/custom_connector_fields_failing/metadata.json
    skipped 612 lines
    613 613   "name": "db",
    614 614   "url": {
    615 615   "singleUrl": {
    616  - "value": "http://postgres_connector:8100"
     616 + "value": "http://postgres_connector:8080"
    617 617   }
    618 618   },
    619 619   "headers": {},
    skipped 153 lines
    773 773   },
    774 774   "collections": [
    775 775   {
    776  - "name": "articles",
     776 + "name": "article",
    777 777   "description": "A collection of articles",
    778 778   "arguments": {},
    779 779   "type": "article",
    skipped 8 lines
    788 788   "foreign_keys": {}
    789 789   },
    790 790   {
    791  - "name": "authors",
     791 + "name": "author",
    792 792   "description": "A collection of authors",
    793 793   "arguments": {},
    794 794   "type": "author",
    skipped 225 lines
    1020 1020   "objectType": "author",
    1021 1021   "source": {
    1022 1022   "dataConnectorName": "db",
    1023  - "collection": "authors",
     1023 + "collection": "author",
    1024 1024   "typeMapping": {
    1025 1025   "author": {
    1026 1026   "fieldMapping": {
    skipped 122 lines
    1149 1149   }
    1150 1150   ]
    1151 1151  }
     1152 + 
  • ■ ■ ■ ■ ■ ■
    v3/crates/engine/tests/execute/multiple_root_fields/non_nullable_custom_connector_fields_failing/metadata.json
    skipped 612 lines
    613 613   "name": "db",
    614 614   "url": {
    615 615   "singleUrl": {
    616  - "value": "http://postgres_connector:8100"
     616 + "value": "http://postgres_connector:8080"
    617 617   }
    618 618   },
    619 619   "headers": {},
    skipped 167 lines
    787 787   },
    788 788   "collections": [
    789 789   {
    790  - "name": "articles",
     790 + "name": "article",
    791 791   "description": "A collection of articles",
    792 792   "arguments": {},
    793 793   "type": "article",
    skipped 8 lines
    802 802   "foreign_keys": {}
    803 803   },
    804 804   {
    805  - "name": "authors",
     805 + "name": "author",
    806 806   "description": "A collection of authors",
    807 807   "arguments": {},
    808 808   "type": "author",
    skipped 211 lines
    1020 1020   "objectType": "author",
    1021 1021   "source": {
    1022 1022   "dataConnectorName": "db",
    1023  - "collection": "authors",
     1023 + "collection": "author",
    1024 1024   "typeMapping": {
    1025 1025   "author": {
    1026 1026   "fieldMapping": {
    skipped 122 lines
    1149 1149   }
    1150 1150   ]
    1151 1151  }
     1152 + 
  • ■ ■ ■ ■ ■ ■
    v3/crates/engine/tests/execute/multiple_root_fields/postgres_connector_fields_failing/metadata.json
    skipped 772 lines
    773 773   },
    774 774   "collections": [
    775 775   {
    776  - "name": "articles",
     776 + "name": "article",
    777 777   "description": "A collection of articles",
    778 778   "arguments": {},
    779 779   "type": "article",
    skipped 8 lines
    788 788   "foreign_keys": {}
    789 789   },
    790 790   {
    791  - "name": "authors",
     791 + "name": "author",
    792 792   "description": "A collection of authors",
    793 793   "arguments": {},
    794 794   "type": "author",
    skipped 225 lines
    1020 1020   "objectType": "author",
    1021 1021   "source": {
    1022 1022   "dataConnectorName": "db",
    1023  - "collection": "authors",
     1023 + "collection": "author",
    1024 1024   "typeMapping": {
    1025 1025   "author": {
    1026 1026   "fieldMapping": {
    skipped 122 lines
    1149 1149   }
    1150 1150   ]
    1151 1151  }
     1152 + 
  • ■ ■ ■ ■ ■ ■
    v3/crates/engine/tests/execute/multiple_root_fields/successful_execution/metadata.json
    skipped 614 lines
    615 615   "name": "db",
    616 616   "url": {
    617 617   "singleUrl": {
    618  - "value": "http://postgres_connector:8100"
     618 + "value": "http://postgres_connector:8080"
    619 619   }
    620 620   },
    621 621   "headers": {},
    skipped 158 lines
    780 780   },
    781 781   "collections": [
    782 782   {
    783  - "name": "articles",
     783 + "name": "article",
    784 784   "description": "A collection of articles",
    785 785   "arguments": {},
    786 786   "type": "article",
    skipped 8 lines
    795 795   "foreign_keys": {}
    796 796   },
    797 797   {
    798  - "name": "authors",
     798 + "name": "author",
    799 799   "description": "A collection of authors",
    800 800   "arguments": {},
    801 801   "type": "author",
    skipped 249 lines
    1051 1051   "objectType": "author",
    1052 1052   "source": {
    1053 1053   "dataConnectorName": "db",
    1054  - "collection": "authors"
     1054 + "collection": "author"
    1055 1055   },
    1056 1056   "graphql": {
    1057 1057   "selectUniques": [
    skipped 93 lines
  • ■ ■ ■ ■ ■ ■
    v3/crates/engine/tests/execute/relationships/across_namespace/metadata.json
    skipped 79 lines
    80 80   "objectType": "author",
    81 81   "source": {
    82 82   "dataConnectorName": "db",
    83  - "collection": "authors"
     83 + "collection": "author"
    84 84   },
    85 85   "orderableFields": [
    86 86   {
    skipped 189 lines
    276 276   "globalIdSource": true,
    277 277   "source": {
    278 278   "dataConnectorName": "db",
    279  - "collection": "articles"
     279 + "collection": "article"
    280 280   },
    281 281   "graphql": {
    282 282   "selectUniques": [],
    skipped 137 lines
  • ■ ■ ■ ■ ■ ■
    v3/crates/engine/tests/execute/relationships/across_namespace/namespaced_connectors.json
    skipped 10 lines
    11 11   "name": "db",
    12 12   "url": {
    13 13   "singleUrl": {
    14  - "value": "http://postgres_connector:8100"
     14 + "value": "http://postgres_connector:8080"
    15 15   }
    16 16   },
    17 17   "headers": {},
    skipped 161 lines
    179 179   },
    180 180   "collections": [
    181 181   {
    182  - "name": "articles",
     182 + "name": "article",
    183 183   "description": "A collection of articles",
    184 184   "arguments": {},
    185 185   "type": "article",
    skipped 8 lines
    194 194   "foreign_keys": {}
    195 195   },
    196 196   {
    197  - "name": "authors",
     197 + "name": "author",
    198 198   "description": "A collection of authors",
    199 199   "arguments": {},
    200 200   "type": "author",
    skipped 196 lines
    397 397   "name": "db",
    398 398   "url": {
    399 399   "singleUrl": {
    400  - "value": "http://postgres_connector:8100"
     400 + "value": "http://postgres_connector:8080"
    401 401   }
    402 402   },
    403 403   "headers": {},
    skipped 161 lines
    565 565   },
    566 566   "collections": [
    567 567   {
    568  - "name": "articles",
     568 + "name": "article",
    569 569   "description": "A collection of articles",
    570 570   "arguments": {},
    571 571   "type": "article",
    skipped 8 lines
    580 580   "foreign_keys": {}
    581 581   },
    582 582   {
    583  - "name": "authors",
     583 + "name": "author",
    584 584   "description": "A collection of authors",
    585 585   "arguments": {},
    586 586   "type": "author",
    skipped 188 lines
    775 775   }
    776 776   ]
    777 777  }
     778 + 
  • ■ ■ ■ ■ ■ ■
    v3/crates/engine/tests/execute/relationships/array/arguments/metadata.json
    skipped 79 lines
    80 80   "objectType": "author",
    81 81   "source": {
    82 82   "dataConnectorName": "db",
    83  - "collection": "authors"
     83 + "collection": "author"
    84 84   },
    85 85   "graphql": {
    86 86   "selectUniques": [
    skipped 188 lines
    275 275   "globalIdSource": true,
    276 276   "source": {
    277 277   "dataConnectorName": "db",
    278  - "collection": "articles"
     278 + "collection": "article"
    279 279   },
    280 280   "filterExpressionType": "article_bool_exp",
    281 281   "orderableFields": [
    skipped 167 lines
  • ■ ■ ■ ■ ■ ■
    v3/crates/engine/tests/execute/relationships/array/arguments/with_graphql_config/metadata.json
    skipped 79 lines
    80 80   "objectType": "author",
    81 81   "source": {
    82 82   "dataConnectorName": "db",
    83  - "collection": "authors"
     83 + "collection": "author"
    84 84   },
    85 85   "graphql": {
    86 86   "selectUniques": [
    skipped 172 lines
    259 259   "globalIdSource": true,
    260 260   "source": {
    261 261   "dataConnectorName": "db",
    262  - "collection": "articles"
     262 + "collection": "article"
    263 263   },
    264 264   "filterExpressionType": "article_bool_exp",
    265 265   "orderableFields": [
    skipped 122 lines
  • ■ ■ ■ ■ ■ ■
    v3/crates/engine/tests/execute/relationships/array/metadata.json
    skipped 79 lines
    80 80   "objectType": "author",
    81 81   "source": {
    82 82   "dataConnectorName": "db",
    83  - "collection": "authors"
     83 + "collection": "author"
    84 84   },
    85 85   "graphql": {
    86 86   "selectUniques": [
    skipped 155 lines
    242 242   "globalIdSource": true,
    243 243   "source": {
    244 244   "dataConnectorName": "db",
    245  - "collection": "articles"
     245 + "collection": "article"
    246 246   },
    247 247   "graphql" :{
    248 248   "selectUniques": [
    skipped 165 lines
  • ■ ■ ■ ■ ■ ■
    v3/crates/engine/tests/execute/relationships/multi_mapping/metadata.json
    skipped 79 lines
    80 80   "objectType": "author",
    81 81   "source": {
    82 82   "dataConnectorName": "db",
    83  - "collection": "authors"
     83 + "collection": "author"
    84 84   },
    85 85   "orderableFields": [
    86 86   {
    skipped 142 lines
    229 229   "globalIdSource": true,
    230 230   "source": {
    231 231   "dataConnectorName": "db",
    232  - "collection": "articles"
     232 + "collection": "article"
    233 233   },
    234 234   "graphql": {
    235 235   "selectUniques": [
    skipped 182 lines
  • ■ ■ ■ ■ ■ ■
    v3/crates/engine/tests/execute/relationships/no_relationship_capability/metadata.json
    skipped 10 lines
    11 11   "name": "db",
    12 12   "url": {
    13 13   "singleUrl": {
    14  - "value": "http://postgres_connector:8100"
     14 + "value": "http://postgres_connector:8080"
    15 15   }
    16 16   },
    17 17   "headers": {},
    skipped 158 lines
    176 176   },
    177 177   "collections": [
    178 178   {
    179  - "name": "articles",
     179 + "name": "article",
    180 180   "description": "A collection of articles",
    181 181   "arguments": {},
    182 182   "type": "article",
    skipped 8 lines
    191 191   "foreign_keys": {}
    192 192   },
    193 193   {
    194  - "name": "authors",
     194 + "name": "author",
    195 195   "description": "A collection of authors",
    196 196   "arguments": {},
    197 197   "type": "author",
    skipped 260 lines
    458 458   "objectType": "author",
    459 459   "source": {
    460 460   "dataConnectorName": "db",
    461  - "collection": "authors"
     461 + "collection": "author"
    462 462   },
    463 463   "orderableFields": [
    464 464   {
    skipped 110 lines
    575 575   "globalIdSource": true,
    576 576   "source": {
    577 577   "dataConnectorName": "db",
    578  - "collection": "articles"
     578 + "collection": "article"
    579 579   },
    580 580   "graphql": {
    581 581   "selectUniques": [
    skipped 101 lines
  • ■ ■ ■ ■ ■ ■
    v3/crates/engine/tests/execute/relationships/permissions/source_type_permission/metadata.json
    skipped 79 lines
    80 80   "objectType": "author",
    81 81   "source": {
    82 82   "dataConnectorName": "db",
    83  - "collection": "authors"
     83 + "collection": "author"
    84 84   },
    85 85   "orderableFields": [
    86 86   {
    skipped 126 lines
    213 213   "globalIdSource": true,
    214 214   "source": {
    215 215   "dataConnectorName": "db",
    216  - "collection": "articles"
     216 + "collection": "article"
    217 217   },
    218 218   "graphql": {
    219 219   "selectUniques": [
    skipped 116 lines
  • ■ ■ ■ ■ ■ ■
    v3/crates/engine/tests/execute/relationships/permissions/target_model_not_selectable/metadata.json
    skipped 79 lines
    80 80   "objectType": "author",
    81 81   "source": {
    82 82   "dataConnectorName": "db",
    83  - "collection": "authors"
     83 + "collection": "author"
    84 84   },
    85 85   "orderableFields": [
    86 86   {
    skipped 95 lines
    182 182   "globalIdSource": true,
    183 183   "source": {
    184 184   "dataConnectorName": "db",
    185  - "collection": "articles"
     185 + "collection": "article"
    186 186   },
    187 187   "graphql": {
    188 188   "selectUniques": [
    skipped 101 lines
  • ■ ■ ■ ■ ■ ■
    v3/crates/engine/tests/execute/relationships/permissions/target_model_type_field_not_selectable/metadata.json
    skipped 79 lines
    80 80   "objectType": "author",
    81 81   "source": {
    82 82   "dataConnectorName": "db",
    83  - "collection": "authors"
     83 + "collection": "author"
    84 84   },
    85 85   "orderableFields": [
    86 86   {
    skipped 109 lines
    196 196   "globalIdSource": true,
    197 197   "source": {
    198 198   "dataConnectorName": "db",
    199  - "collection": "articles"
     199 + "collection": "article"
    200 200   },
    201 201   "graphql": {
    202 202   "selectUniques": [
    skipped 101 lines
  • ■ ■ ■ ■ ■ ■
    v3/crates/engine/tests/execute/relationships/permissions/target_model_type_permission/metadata.json
    skipped 79 lines
    80 80   "objectType": "author",
    81 81   "source": {
    82 82   "dataConnectorName": "db",
    83  - "collection": "authors"
     83 + "collection": "author"
    84 84   },
    85 85   "orderableFields": [
    86 86   {
    skipped 125 lines
    212 212   "globalIdSource": true,
    213 213   "source": {
    214 214   "dataConnectorName": "db",
    215  - "collection": "articles"
     215 + "collection": "article"
    216 216   },
    217 217   "graphql": {
    218 218   "selectUniques": [
    skipped 117 lines
  • ■ ■ ■ ■ ■ ■
    v3/crates/engine/tests/execute/relationships/same_relationship_name/metadata.json
    skipped 79 lines
    80 80   "objectType": "author",
    81 81   "source": {
    82 82   "dataConnectorName": "db",
    83  - "collection": "authors"
     83 + "collection": "author"
    84 84   },
    85 85   "graphql": {
    86 86   "selectUniques": [
    skipped 120 lines
    207 207   "globalIdSource": true,
    208 208   "source": {
    209 209   "dataConnectorName": "db",
    210  - "collection": "articles"
     210 + "collection": "article"
    211 211   },
    212 212   "orderableFields": [
    213 213   {
    skipped 193 lines
    407 407   "globalIdSource": true,
    408 408   "source": {
    409 409   "dataConnectorName": "db",
    410  - "collection": "articles"
     410 + "collection": "article"
    411 411   },
    412 412   "orderableFields": [
    413 413   {
    skipped 104 lines
  • ■ ■ ■ ■
    v3/crates/engine/tests/execute/relay/article_metadata.json
    skipped 91 lines
    92 92   "globalIdSource": true,
    93 93   "source": {
    94 94   "dataConnectorName": "db",
    95  - "collection": "articles"
     95 + "collection": "article"
    96 96   },
    97 97   "orderableFields": [
    98 98   {
    skipped 60 lines
  • ■ ■ ■ ■
    v3/crates/engine/tests/execute/relay/relay/metadata.json
    skipped 83 lines
    84 84   "globalIdSource": true,
    85 85   "source": {
    86 86   "dataConnectorName": "db",
    87  - "collection": "authors"
     87 + "collection": "author"
    88 88   },
    89 89   "graphql": {
    90 90   "selectUniques": [
    skipped 95 lines
  • ■ ■ ■ ■
    v3/crates/engine/tests/execute/relay/relay_global_id_permission/metadata.json
    skipped 84 lines
    85 85   "globalIdSource": true,
    86 86   "source": {
    87 87   "dataConnectorName": "db",
    88  - "collection": "authors"
     88 + "collection": "author"
    89 89   },
    90 90   "graphql": {
    91 91   "selectUniques": [
    skipped 110 lines
  • ■ ■ ■ ■ ■ ■
    v3/crates/engine/tests/execute/relay/relay_id_in_select/metadata.json
    skipped 83 lines
    84 84   "globalIdSource": true,
    85 85   "source": {
    86 86   "dataConnectorName": "db",
    87  - "collection": "authors"
     87 + "collection": "author"
    88 88   },
    89 89   "graphql": {
    90 90   "selectUniques": [
    skipped 140 lines
    231 231   "globalIdSource": true,
    232 232   "source": {
    233 233   "dataConnectorName": "db",
    234  - "collection": "articles"
     234 + "collection": "article"
    235 235   },
    236 236   "orderableFields": [
    237 237   {
    skipped 129 lines
  • ■ ■ ■ ■
    v3/crates/engine/tests/execute/relay/relay_node_field/metadata.json
    skipped 83 lines
    84 84   "globalIdSource": true,
    85 85   "source": {
    86 86   "dataConnectorName": "db",
    87  - "collection": "authors"
     87 + "collection": "author"
    88 88   },
    89 89   "graphql": {
    90 90   "selectUniques": [
    skipped 78 lines
  • ■ ■ ■ ■
    v3/crates/engine/tests/execute/relay/relay_node_field_permissions/metadata.json
    skipped 83 lines
    84 84   "globalIdSource": true,
    85 85   "source": {
    86 86   "dataConnectorName": "db",
    87  - "collection": "authors"
     87 + "collection": "author"
    88 88   },
    89 89   "graphql": {
    90 90   "selectUniques": [
    skipped 78 lines
  • ■ ■ ■ ■ ■ ■
    v3/crates/engine/tests/execute/relay/relay_node_interface_permission/metadata.json
    skipped 134 lines
    135 135   "globalIdSource": true,
    136 136   "source": {
    137 137   "dataConnectorName": "db",
    138  - "collection": "authors"
     138 + "collection": "author"
    139 139   },
    140 140   "graphql": {
    141 141   "selectUniques": [
    skipped 36 lines
    178 178   "globalIdSource": true,
    179 179   "source": {
    180 180   "dataConnectorName": "db",
    181  - "collection": "articles"
     181 + "collection": "article"
    182 182   },
    183 183   "orderableFields": [
    184 184   {
    skipped 128 lines
  • ■ ■ ■ ■ ■ ■
    v3/crates/engine/tests/execute/relay/relay_node_model_select_permissions/no_select_permission_exists_for_role/metadata.json
    skipped 133 lines
    134 134   "globalIdSource": true,
    135 135   "source": {
    136 136   "dataConnectorName": "db",
    137  - "collection": "authors"
     137 + "collection": "author"
    138 138   },
    139 139   "graphql": {
    140 140   "selectUniques": [
    skipped 36 lines
    177 177   "globalIdSource": true,
    178 178   "source": {
    179 179   "dataConnectorName": "db",
    180  - "collection": "articles"
     180 + "collection": "article"
    181 181   },
    182 182   "orderableFields": [
    183 183   {
    skipped 155 lines
  • ■ ■ ■ ■
    v3/crates/engine/tests/execute/relay/relay_node_model_select_permissions/successful_model_select_permissions/metadata.json
    skipped 83 lines
    84 84   "globalIdSource": true,
    85 85   "source": {
    86 86   "dataConnectorName": "db",
    87  - "collection": "authors"
     87 + "collection": "author"
    88 88   },
    89 89   "graphql": {
    90 90   "selectUniques": [
    skipped 145 lines
  • ■ ■ ■ ■ ■ ■
    v3/crates/engine/tests/execute/relay/relay_node_type_permissions/metadata.json
    skipped 133 lines
    134 134   "globalIdSource": true,
    135 135   "source": {
    136 136   "dataConnectorName": "db",
    137  - "collection": "authors"
     137 + "collection": "author"
    138 138   },
    139 139   "graphql": {
    140 140   "selectUniques": [
    skipped 122 lines
    263 263   "globalIdSource": true,
    264 264   "source": {
    265 265   "dataConnectorName": "db",
    266  - "collection": "articles"
     266 + "collection": "article"
    267 267   },
    268 268   "orderableFields": [
    269 269   {
    skipped 60 lines
  • ■ ■ ■ ■ ■ ■
    v3/crates/engine/tests/execute/remote_relationships/array/arguments/metadata.json
    skipped 116 lines
    117 117   "globalIdSource": true,
    118 118   "source": {
    119 119   "dataConnectorName": "db",
    120  - "collection": "articles"
     120 + "collection": "article"
    121 121   },
    122 122   "orderableFields": [
    123 123   {
    skipped 208 lines
    332 332   "objectType": "author",
    333 333   "source": {
    334 334   "dataConnectorName": "db",
    335  - "collection": "authors"
     335 + "collection": "author"
    336 336   },
    337 337   "graphql": {
    338 338   "selectUniques": [
    skipped 137 lines
  • ■ ■ ■ ■ ■ ■
    v3/crates/engine/tests/execute/remote_relationships/array/metadata.json
    skipped 83 lines
    84 84   "globalIdSource": true,
    85 85   "source": {
    86 86   "dataConnectorName": "db",
    87  - "collection": "articles"
     87 + "collection": "article"
    88 88   },
    89 89   "orderableFields": [
    90 90   {
    skipped 193 lines
    284 284   "objectType": "author",
    285 285   "source": {
    286 286   "dataConnectorName": "db",
    287  - "collection": "authors"
     287 + "collection": "author"
    288 288   },
    289 289   "graphql": {
    290 290   "selectUniques": [
    skipped 137 lines
  • ■ ■ ■ ■
    v3/crates/engine/tests/execute/remote_relationships/remote_in_local/local_array_remote_object/custom_ndc_and_pg_ndc/metadata.json
    skipped 384 lines
    385 385   "arguments": [],
    386 386   "source": {
    387 387   "dataConnectorName": "db",
    388  - "collection": "authors"
     388 + "collection": "author"
    389 389   },
    390 390   "graphql": {
    391 391   "selectUniques": [
    skipped 607 lines
  • ■ ■ ■ ■ ■
    v3/crates/engine/tests/explain/field_with_local_relationship/expected.json
    skipped 5 lines
    6 6   "ndcRequest": {
    7 7   "type": "query",
    8 8   "value": {
    9  - "collection": "authors",
     9 + "collection": "author",
    10 10   "query": {
    11 11   "fields": {
    12 12   "author_id": {
    skipped 29 lines
    42 42   "id": "author_id"
    43 43   },
    44 44   "relationship_type": "array",
    45  - "target_collection": "articles",
     45 + "target_collection": "article",
    46 46   "arguments": {}
    47 47   }
    48 48   }
    skipped 10 lines
    59 59   }
    60 60   }
    61 61  }
     62 + 
  • ■ ■ ■ ■ ■ ■
    v3/crates/engine/tests/explain/field_with_remote_relationship/expected.json
    skipped 8 lines
    9 9   "ndcRequest": {
    10 10   "type": "query",
    11 11   "value": {
    12  - "collection": "authors",
     12 + "collection": "author",
    13 13   "query": {
    14 14   "fields": {
    15 15   "author_id": {
    skipped 31 lines
    47 47   "ndcRequest": {
    48 48   "type": "query",
    49 49   "value": {
    50  - "collection": "articles",
     50 + "collection": "article",
    51 51   "query": {
    52 52   "fields": {
    53 53   "title": {
    skipped 41 lines
  • ■ ■ ■ ■
    v3/crates/engine/tests/explain/multi_root_field_queries/expected.json
    skipped 48 lines
    49 49   "ndcRequest": {
    50 50   "type": "query",
    51 51   "value": {
    52  - "collection": "authors",
     52 + "collection": "author",
    53 53   "query": {
    54 54   "fields": {
    55 55   "author_id": {
    skipped 71 lines
  • ■ ■ ■ ■ ■ ■
    v3/crates/engine/tests/generate_ir/get_by_id/expected.json
    skipped 99 lines
    100 100   "name": "db"
    101 101   },
    102 102   "url": {
    103  - "singleUrl": "http://postgres_connector:8100/"
     103 + "singleUrl": "http://postgres_connector:8080/"
    104 104   },
    105 105   "headers": {
    106 106   "hasura-m-auth-token": "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_.~!#$&'()*+,/:;=?@[]\""
    107 107   }
    108 108   },
    109  - "collection": "articles",
     109 + "collection": "article",
    110 110   "arguments": {},
    111 111   "filter_clause": {
    112 112   "expressions": [
    skipped 59 lines
  • ■ ■ ■ ■ ■ ■
    v3/crates/engine/tests/generate_ir/get_many/expected.json
    skipped 92 lines
    93 93   "name": "db"
    94 94   },
    95 95   "url": {
    96  - "singleUrl": "http://postgres_connector:8100/"
     96 + "singleUrl": "http://postgres_connector:8080/"
    97 97   },
    98 98   "headers": {
    99 99   "hasura-m-auth-token": "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_.~!#$&'()*+,/:;=?@[]\""
    100 100   }
    101 101   },
    102  - "collection": "articles",
     102 + "collection": "article",
    103 103   "arguments": {},
    104 104   "filter_clause": {
    105 105   "expressions": [],
    skipped 50 lines
  • ■ ■ ■ ■ ■ ■
    v3/crates/engine/tests/generate_ir/get_many_model_count/expected.json
    skipped 31 lines
    32 32   "name": "db"
    33 33   },
    34 34   "url": {
    35  - "singleUrl": "http://postgres_connector:8100/"
     35 + "singleUrl": "http://postgres_connector:8080/"
    36 36   },
    37 37   "headers": {
    38 38   "hasura-m-auth-token": "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_.~!#$&'()*+,/:;=?@[]\""
    39 39   }
    40 40   },
    41  - "collection": "articles",
     41 + "collection": "article",
    42 42   "type_mappings": {
    43 43   "{\"subgraph\":\"default\",\"name\":\"article\"}": {
    44 44   "Object": {
    skipped 97 lines
    142 142   "name": "db"
    143 143   },
    144 144   "url": {
    145  - "singleUrl": "http://postgres_connector:8100/"
     145 + "singleUrl": "http://postgres_connector:8080/"
    146 146   },
    147 147   "headers": {
    148 148   "hasura-m-auth-token": "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_.~!#$&'()*+,/:;=?@[]\""
    149 149   }
    150 150   },
    151  - "collection": "authors",
     151 + "collection": "author",
    152 152   "type_mappings": {
    153 153   "{\"subgraph\":\"default\",\"name\":\"author\"}": {
    154 154   "Object": {
    skipped 97 lines
    252 252   "name": "db"
    253 253   },
    254 254   "url": {
    255  - "singleUrl": "http://postgres_connector:8100/"
     255 + "singleUrl": "http://postgres_connector:8080/"
    256 256   },
    257 257   "headers": {
    258 258   "hasura-m-auth-token": "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_.~!#$&'()*+,/:;=?@[]\""
    259 259   }
    260 260   },
    261  - "collection": "articles",
     261 + "collection": "article",
    262 262   "type_mappings": {
    263 263   "{\"subgraph\":\"default\",\"name\":\"article\"}": {
    264 264   "Object": {
    skipped 197 lines
    462 462   "name": "db"
    463 463   },
    464 464   "url": {
    465  - "singleUrl": "http://postgres_connector:8100/"
     465 + "singleUrl": "http://postgres_connector:8080/"
    466 466   },
    467 467   "headers": {
    468 468   "hasura-m-auth-token": "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_.~!#$&'()*+,/:;=?@[]\""
    skipped 12 lines
    481 481   "name": "db"
    482 482   },
    483 483   "url": {
    484  - "singleUrl": "http://postgres_connector:8100/"
     484 + "singleUrl": "http://postgres_connector:8080/"
    485 485   },
    486 486   "headers": {
    487 487   "hasura-m-auth-token": "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_.~!#$&'()*+,/:;=?@[]\""
    488 488   }
    489 489   },
    490  - "collection": "articles",
     490 + "collection": "article",
    491 491   "arguments": {},
    492 492   "filter_clause": {
    493 493   "expressions": [],
    skipped 13 lines
    507 507   "name": "db"
    508 508   },
    509 509   "url": {
    510  - "singleUrl": "http://postgres_connector:8100/"
     510 + "singleUrl": "http://postgres_connector:8080/"
    511 511   },
    512 512   "headers": {
    513 513   "hasura-m-auth-token": "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_.~!#$&'()*+,/:;=?@[]\""
    514 514   }
    515 515   },
    516  - "collection": "authors",
     516 + "collection": "author",
    517 517   "arguments": {},
    518 518   "filter_clause": {
    519 519   "expressions": [],
    skipped 13 lines
    533 533   "name": "db"
    534 534   },
    535 535   "url": {
    536  - "singleUrl": "http://postgres_connector:8100/"
     536 + "singleUrl": "http://postgres_connector:8080/"
    537 537   },
    538 538   "headers": {
    539 539   "hasura-m-auth-token": "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_.~!#$&'()*+,/:;=?@[]\""
    540 540   }
    541 541   },
    542  - "collection": "articles",
     542 + "collection": "article",
    543 543   "arguments": {},
    544 544   "filter_clause": {
    545 545   "expressions": [],
    skipped 33 lines
    579 579   "name": "db"
    580 580   },
    581 581   "url": {
    582  - "singleUrl": "http://postgres_connector:8100/"
     582 + "singleUrl": "http://postgres_connector:8080/"
    583 583   },
    584 584   "headers": {
    585 585   "hasura-m-auth-token": "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_.~!#$&'()*+,/:;=?@[]\""
    skipped 37 lines
    623 623   "name": "db"
    624 624   },
    625 625   "url": {
    626  - "singleUrl": "http://postgres_connector:8100/"
     626 + "singleUrl": "http://postgres_connector:8080/"
    627 627   },
    628 628   "headers": {
    629 629   "hasura-m-auth-token": "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_.~!#$&'()*+,/:;=?@[]\""
    630 630   }
    631 631   },
    632  - "collection": "articles",
     632 + "collection": "article",
    633 633   "type_mappings": {
    634 634   "{\"subgraph\":\"default\",\"name\":\"article\"}": {
    635 635   "Object": {
    skipped 69 lines
    705 705   "name": "db"
    706 706   },
    707 707   "url": {
    708  - "singleUrl": "http://postgres_connector:8100/"
     708 + "singleUrl": "http://postgres_connector:8080/"
    709 709   },
    710 710   "headers": {
    711 711   "hasura-m-auth-token": "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_.~!#$&'()*+,/:;=?@[]\""
    skipped 37 lines
    749 749   "name": "db"
    750 750   },
    751 751   "url": {
    752  - "singleUrl": "http://postgres_connector:8100/"
     752 + "singleUrl": "http://postgres_connector:8080/"
    753 753   },
    754 754   "headers": {
    755 755   "hasura-m-auth-token": "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_.~!#$&'()*+,/:;=?@[]\""
    756 756   }
    757 757   },
    758  - "collection": "authors",
     758 + "collection": "author",
    759 759   "type_mappings": {
    760 760   "{\"subgraph\":\"default\",\"name\":\"author\"}": {
    761 761   "Object": {
    skipped 69 lines
    831 831   "name": "db"
    832 832   },
    833 833   "url": {
    834  - "singleUrl": "http://postgres_connector:8100/"
     834 + "singleUrl": "http://postgres_connector:8080/"
    835 835   },
    836 836   "headers": {
    837 837   "hasura-m-auth-token": "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_.~!#$&'()*+,/:;=?@[]\""
    skipped 37 lines
    875 875   "name": "db"
    876 876   },
    877 877   "url": {
    878  - "singleUrl": "http://postgres_connector:8100/"
     878 + "singleUrl": "http://postgres_connector:8080/"
    879 879   },
    880 880   "headers": {
    881 881   "hasura-m-auth-token": "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_.~!#$&'()*+,/:;=?@[]\""
    882 882   }
    883 883   },
    884  - "collection": "articles",
     884 + "collection": "article",
    885 885   "type_mappings": {
    886 886   "{\"subgraph\":\"default\",\"name\":\"article\"}": {
    887 887   "Object": {
    skipped 99 lines
  • ■ ■ ■ ■ ■ ■
    v3/crates/engine/tests/generate_ir/get_many_user_2/expected.json
    skipped 99 lines
    100 100   "name": "db"
    101 101   },
    102 102   "url": {
    103  - "singleUrl": "http://postgres_connector:8100/"
     103 + "singleUrl": "http://postgres_connector:8080/"
    104 104   },
    105 105   "headers": {
    106 106   "hasura-m-auth-token": "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_.~!#$&'()*+,/:;=?@[]\""
    107 107   }
    108 108   },
    109  - "collection": "articles",
     109 + "collection": "article",
    110 110   "arguments": {},
    111 111   "filter_clause": {
    112 112   "expressions": [
    skipped 81 lines
  • ■ ■ ■ ■ ■ ■
    v3/crates/engine/tests/generate_ir/get_many_where/expected.json
    skipped 92 lines
    93 93   "name": "db"
    94 94   },
    95 95   "url": {
    96  - "singleUrl": "http://postgres_connector:8100/"
     96 + "singleUrl": "http://postgres_connector:8080/"
    97 97   },
    98 98   "headers": {
    99 99   "hasura-m-auth-token": "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_.~!#$&'()*+,/:;=?@[]\""
    100 100   }
    101 101   },
    102  - "collection": "articles",
     102 + "collection": "article",
    103 103   "arguments": {},
    104 104   "filter_clause": {
    105 105   "expressions": [
    skipped 164 lines
    270 270   "name": "db"
    271 271   },
    272 272   "url": {
    273  - "singleUrl": "http://postgres_connector:8100/"
     273 + "singleUrl": "http://postgres_connector:8080/"
    274 274   },
    275 275   "headers": {
    276 276   "hasura-m-auth-token": "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_.~!#$&'()*+,/:;=?@[]\""
    277 277   }
    278 278   },
    279  - "collection": "authors",
     279 + "collection": "author",
    280 280   "arguments": {},
    281 281   "filter_clause": {
    282 282   "expressions": [
    skipped 63 lines
  • ■ ■ ■ ■ ■ ■
    v3/crates/engine/tests/pg_ndc_config.json v3/crates/engine/tests/ndc-postgres-configuration/configuration.json
    1 1  {
    2 2   "version": "3",
    3  - "connectionUri": {
    4  - "uri": {
    5  - "value": "postgresql://postgres:password@postgres"
    6  - }
     3 + "$schema": "schema.json",
     4 + "connectionSettings": {
     5 + "connectionUri": {
     6 + "variable": "CONNECTION_URI"
     7 + },
     8 + "poolSettings": {
     9 + "maxConnections": 50,
     10 + "poolTimeout": 30,
     11 + "idleTimeout": 180,
     12 + "connectionLifetime": 600
     13 + },
     14 + "isolationLevel": "ReadCommitted"
    7 15   },
    8 16   "metadata": {
    9 17   "tables": {
    10  - "articles": {
    11  - "schemaName": "public",
    12  - "tableName": "article",
    13  - "columns": {
    14  - "author_id": {
    15  - "name": "author_id",
    16  - "type": {
    17  - "scalarType": "int4"
    18  - },
    19  - "nullable": "nullable",
    20  - "description": null
    21  - },
    22  - "id": {
    23  - "name": "id",
    24  - "type": {
    25  - "scalarType": "int4"
    26  - },
    27  - "nullable": "nonNullable",
    28  - "description": null
    29  - },
    30  - "title": {
    31  - "name": "title",
    32  - "type": {
    33  - "scalarType": "text"
    34  - },
    35  - "nullable": "nullable",
    36  - "description": null
    37  - }
    38  - },
    39  - "uniquenessConstraints": {
    40  - "article_pkey": [
    41  - "id"
    42  - ]
    43  - },
    44  - "foreignRelations": {
    45  - "FK_article_author_id": {
    46  - "foreignTable": "author",
    47  - "columnMapping": {
    48  - "author_id": "id"
    49  - }
    50  - }
    51  - },
    52  - "description": null
    53  - },
    54  - "authors": {
    55  - "schemaName": "public",
    56  - "tableName": "author",
    57  - "columns": {
    58  - "first_name": {
    59  - "name": "first_name",
    60  - "type": {
    61  - "scalarType": "text"
    62  - },
    63  - "nullable": "nullable",
    64  - "description": null
    65  - },
    66  - "id": {
    67  - "name": "id",
    68  - "type": {
    69  - "scalarType": "int4"
    70  - },
    71  - "nullable": "nonNullable",
    72  - "description": null
    73  - },
    74  - "last_name": {
    75  - "name": "last_name",
    76  - "type": {
    77  - "scalarType": "text"
    78  - },
    79  - "nullable": "nullable",
    80  - "description": null
    81  - }
    82  - },
    83  - "uniquenessConstraints": {
    84  - "author_pkey": [
    85  - "id"
    86  - ]
    87  - },
    88  - "foreignRelations": {},
    89  - "description": null
    90  - },
    91 18   "Album": {
    92 19   "schemaName": "public",
    93 20   "tableName": "Album",
    skipped 734 lines
    828 755   },
    829 756   "description": null
    830 757   },
    831  - "movie_analytics": {
     758 + "article": {
    832 759   "schemaName": "public",
    833  - "tableName": "movie_analytics",
     760 + "tableName": "article",
    834 761   "columns": {
    835  - "id": {
    836  - "name": "id",
     762 + "author_id": {
     763 + "name": "author_id",
    837 764   "type": {
    838 765   "scalarType": "int4"
    839 766   },
    840  - "nullable": "nonNullable",
    841  - "hasDefault": "hasDefault",
     767 + "nullable": "nullable",
    842 768   "description": null
    843 769   },
    844  - "movie_id": {
    845  - "name": "movie_id",
     770 + "id": {
     771 + "name": "id",
    846 772   "type": {
    847 773   "scalarType": "int4"
    848 774   },
    849 775   "nullable": "nonNullable",
    850 776   "description": null
    851 777   },
    852  - "movie_name": {
    853  - "name": "movie_name",
     778 + "title": {
     779 + "name": "title",
    854 780   "type": {
    855 781   "scalarType": "text"
    856 782   },
    857 783   "nullable": "nullable",
    858 784   "description": null
    859  - },
    860  - "num_votes_day": {
    861  - "name": "num_votes_day",
    862  - "type": {
    863  - "scalarType": "int4"
    864  - },
    865  - "nullable": "nullable",
    866  - "description": null
    867  - },
    868  - "num_views_day": {
    869  - "name": "num_views_day",
    870  - "type": {
    871  - "scalarType": "int4"
    872  - },
    873  - "nullable": "nullable",
    874  - "description": null
    875  - },
    876  - "num_users_faved": {
    877  - "name": "num_users_faved",
    878  - "type": {
    879  - "scalarType": "int4"
    880  - },
    881  - "nullable": "nullable",
    882  - "description": null
    883  - },
    884  - "num_users_watchlisted": {
    885  - "name": "num_users_watchlisted",
     785 + }
     786 + },
     787 + "uniquenessConstraints": {
     788 + "article_pkey": [
     789 + "id"
     790 + ]
     791 + },
     792 + "foreignRelations": {},
     793 + "description": null
     794 + },
     795 + "author": {
     796 + "schemaName": "public",
     797 + "tableName": "author",
     798 + "columns": {
     799 + "first_name": {
     800 + "name": "first_name",
    886 801   "type": {
    887  - "scalarType": "int4"
     802 + "scalarType": "text"
    888 803   },
    889 804   "nullable": "nullable",
    890 805   "description": null
    891 806   },
    892  - "total_votes": {
    893  - "name": "total_votes",
     807 + "id": {
     808 + "name": "id",
    894 809   "type": {
    895 810   "scalarType": "int4"
    896 811   },
    897  - "nullable": "nullable",
     812 + "nullable": "nonNullable",
    898 813   "description": null
    899 814   },
    900  - "prev_day_scores": {
    901  - "name": "prev_day_scores",
     815 + "last_name": {
     816 + "name": "last_name",
    902 817   "type": {
    903  - "scalarType": "int4"
     818 + "scalarType": "text"
    904 819   },
    905 820   "nullable": "nullable",
    906 821   "description": null
    907 822   }
    908 823   },
    909 824   "uniquenessConstraints": {
    910  - "movie_analytics_pkey": [
     825 + "author_pkey": [
    911 826   "id"
    912 827   ]
    913 828   },
    914 829   "foreignRelations": {},
    915 830   "description": null
    916 831   },
    917  - "geography_columns": {
     832 + "movie_analytics": {
    918 833   "schemaName": "public",
    919  - "tableName": "geography_columns",
     834 + "tableName": "movie_analytics",
    920 835   "columns": {
    921  - "coord_dimension": {
    922  - "name": "coord_dimension",
     836 + "id": {
     837 + "name": "id",
    923 838   "type": {
    924 839   "scalarType": "int4"
    925 840   },
    926  - "nullable": "nullable",
     841 + "nullable": "nonNullable",
     842 + "hasDefault": "hasDefault",
    927 843   "description": null
    928 844   },
    929  - "f_geography_column": {
    930  - "name": "f_geography_column",
     845 + "movie_id": {
     846 + "name": "movie_id",
    931 847   "type": {
    932  - "scalarType": "name"
     848 + "scalarType": "int4"
    933 849   },
    934  - "nullable": "nullable",
     850 + "nullable": "nonNullable",
    935 851   "description": null
    936 852   },
    937  - "f_table_catalog": {
    938  - "name": "f_table_catalog",
     853 + "movie_name": {
     854 + "name": "movie_name",
    939 855   "type": {
    940  - "scalarType": "name"
     856 + "scalarType": "text"
    941 857   },
    942 858   "nullable": "nullable",
    943 859   "description": null
    944 860   },
    945  - "f_table_name": {
    946  - "name": "f_table_name",
     861 + "num_users_faved": {
     862 + "name": "num_users_faved",
    947 863   "type": {
    948  - "scalarType": "name"
     864 + "scalarType": "int4"
    949 865   },
    950 866   "nullable": "nullable",
    951 867   "description": null
    952 868   },
    953  - "f_table_schema": {
    954  - "name": "f_table_schema",
     869 + "num_users_watchlisted": {
     870 + "name": "num_users_watchlisted",
    955 871   "type": {
    956  - "scalarType": "name"
     872 + "scalarType": "int4"
    957 873   },
    958 874   "nullable": "nullable",
    959 875   "description": null
    960 876   },
    961  - "srid": {
    962  - "name": "srid",
     877 + "num_views_day": {
     878 + "name": "num_views_day",
    963 879   "type": {
    964 880   "scalarType": "int4"
    965 881   },
    966 882   "nullable": "nullable",
    967 883   "description": null
    968 884   },
    969  - "type": {
    970  - "name": "type",
     885 + "num_votes_day": {
     886 + "name": "num_votes_day",
    971 887   "type": {
    972  - "scalarType": "text"
     888 + "scalarType": "int4"
    973 889   },
    974 890   "nullable": "nullable",
    975 891   "description": null
    976  - }
    977  - },
    978  - "uniquenessConstraints": {},
    979  - "foreignRelations": {},
    980  - "description": null
    981  - },
    982  - "geometry_columns": {
    983  - "schemaName": "public",
    984  - "tableName": "geometry_columns",
    985  - "columns": {
    986  - "coord_dimension": {
    987  - "name": "coord_dimension",
     892 + },
     893 + "prev_day_scores": {
     894 + "name": "prev_day_scores",
    988 895   "type": {
    989 896   "scalarType": "int4"
    990 897   },
    991 898   "nullable": "nullable",
    992 899   "description": null
    993 900   },
    994  - "f_geometry_column": {
    995  - "name": "f_geometry_column",
     901 + "total_votes": {
     902 + "name": "total_votes",
    996 903   "type": {
    997  - "scalarType": "name"
     904 + "scalarType": "int4"
    998 905   },
    999 906   "nullable": "nullable",
    1000 907   "description": null
    1001  - },
    1002  - "f_table_catalog": {
    1003  - "name": "f_table_catalog",
     908 + }
     909 + },
     910 + "uniquenessConstraints": {
     911 + "movie_analytics_pkey": [
     912 + "id"
     913 + ]
     914 + },
     915 + "foreignRelations": {},
     916 + "description": null
     917 + },
     918 + "spatial_ref_sys": {
     919 + "schemaName": "public",
     920 + "tableName": "spatial_ref_sys",
     921 + "columns": {
     922 + "auth_name": {
     923 + "name": "auth_name",
    1004 924   "type": {
    1005 925   "scalarType": "varchar"
    1006 926   },
    1007 927   "nullable": "nullable",
    1008 928   "description": null
    1009 929   },
    1010  - "f_table_name": {
    1011  - "name": "f_table_name",
     930 + "auth_srid": {
     931 + "name": "auth_srid",
    1012 932   "type": {
    1013  - "scalarType": "name"
     933 + "scalarType": "int4"
    1014 934   },
    1015 935   "nullable": "nullable",
    1016 936   "description": null
    1017 937   },
    1018  - "f_table_schema": {
    1019  - "name": "f_table_schema",
     938 + "proj4text": {
     939 + "name": "proj4text",
    1020 940   "type": {
    1021  - "scalarType": "name"
     941 + "scalarType": "varchar"
    1022 942   },
    1023 943   "nullable": "nullable",
    1024 944   "description": null
    skipped 3 lines
    1028 948   "type": {
    1029 949   "scalarType": "int4"
    1030 950   },
    1031  - "nullable": "nullable",
     951 + "nullable": "nonNullable",
    1032 952   "description": null
    1033 953   },
    1034  - "type": {
    1035  - "name": "type",
     954 + "srtext": {
     955 + "name": "srtext",
    1036 956   "type": {
    1037 957   "scalarType": "varchar"
    1038 958   },
    skipped 1 lines
    1040 960   "description": null
    1041 961   }
    1042 962   },
    1043  - "uniquenessConstraints": {},
     963 + "uniquenessConstraints": {
     964 + "spatial_ref_sys_pkey": [
     965 + "srid"
     966 + ]
     967 + },
    1044 968   "foreignRelations": {},
    1045 969   "description": null
    1046 970   },
    1047  - "layer": {
     971 + "topology_layer": {
    1048 972   "schemaName": "topology",
    1049 973   "tableName": "layer",
    1050 974   "columns": {
    skipped 85 lines
    1136 1060   },
    1137 1061   "description": null
    1138 1062   },
    1139  - "spatial_ref_sys": {
    1140  - "schemaName": "public",
    1141  - "tableName": "spatial_ref_sys",
    1142  - "columns": {
    1143  - "auth_name": {
    1144  - "name": "auth_name",
    1145  - "type": {
    1146  - "scalarType": "varchar"
    1147  - },
    1148  - "nullable": "nullable",
    1149  - "description": null
    1150  - },
    1151  - "auth_srid": {
    1152  - "name": "auth_srid",
    1153  - "type": {
    1154  - "scalarType": "int4"
    1155  - },
    1156  - "nullable": "nullable",
    1157  - "description": null
    1158  - },
    1159  - "proj4text": {
    1160  - "name": "proj4text",
    1161  - "type": {
    1162  - "scalarType": "varchar"
    1163  - },
    1164  - "nullable": "nullable",
    1165  - "description": null
    1166  - },
    1167  - "srid": {
    1168  - "name": "srid",
    1169  - "type": {
    1170  - "scalarType": "int4"
    1171  - },
    1172  - "nullable": "nonNullable",
    1173  - "description": null
    1174  - },
    1175  - "srtext": {
    1176  - "name": "srtext",
    1177  - "type": {
    1178  - "scalarType": "varchar"
    1179  - },
    1180  - "nullable": "nullable",
    1181  - "description": null
    1182  - }
    1183  - },
    1184  - "uniquenessConstraints": {
    1185  - "spatial_ref_sys_pkey": [
    1186  - "srid"
    1187  - ]
    1188  - },
    1189  - "foreignRelations": {},
    1190  - "description": null
    1191  - },
    1192  - "topology": {
     1063 + "topology_topology": {
    1193 1064   "schemaName": "topology",
    1194 1065   "tableName": "topology",
    1195 1066   "columns": {
    skipped 52 lines
    1248 1119   "description": null
    1249 1120   }
    1250 1121   },
     1122 + "compositeTypes": {},
    1251 1123   "nativeQueries": {
    1252  - "articles_by_author": {
    1253  - "sql": "SELECT * FROM public.\"article\" WHERE author_id = {{author_id}}",
    1254  - "columns": {
    1255  - "id": {
    1256  - "name": "id",
    1257  - "type": {
    1258  - "scalarType": "integer"
    1259  - },
    1260  - "nullable": "nonNullable"
    1261  - },
    1262  - "title": {
    1263  - "name": "title",
    1264  - "type": {
    1265  - "scalarType": "character varying"
    1266  - },
    1267  - "nullable": "nonNullable"
    1268  - },
    1269  - "author_id": {
    1270  - "name": "author_id",
    1271  - "type": {
    1272  - "scalarType": "integer"
    1273  - },
    1274  - "nullable": "nonNullable"
    1275  - }
    1276  - },
    1277  - "arguments": {
    1278  - "author_id": {
    1279  - "name": "id",
    1280  - "type": {
    1281  - "scalarType": "integer"
    1282  - }
    1283  - }
    1284  - }
    1285  - },
    1286 1124   "album_by_title": {
    1287 1125   "sql": "SELECT * FROM public.\"Album\" WHERE \"Title\" LIKE {{title}} AND \"AlbumId\" < {{id}}",
    1288 1126   "columns": {
    skipped 35 lines
    1324 1162   "name": "title",
    1325 1163   "type": {
    1326 1164   "scalarType": "varchar"
     1165 + },
     1166 + "nullable": "nullable",
     1167 + "description": null
     1168 + }
     1169 + },
     1170 + "description": null
     1171 + },
     1172 + "articles_by_author": {
     1173 + "sql": "SELECT * FROM public.\"article\" WHERE author_id = {{author_id}}",
     1174 + "columns": {
     1175 + "author_id": {
     1176 + "name": "author_id",
     1177 + "type": {
     1178 + "scalarType": "int4"
     1179 + },
     1180 + "nullable": "nonNullable",
     1181 + "description": null
     1182 + },
     1183 + "id": {
     1184 + "name": "id",
     1185 + "type": {
     1186 + "scalarType": "int4"
     1187 + },
     1188 + "nullable": "nonNullable",
     1189 + "description": null
     1190 + },
     1191 + "title": {
     1192 + "name": "title",
     1193 + "type": {
     1194 + "scalarType": "character varying"
     1195 + },
     1196 + "nullable": "nonNullable",
     1197 + "description": null
     1198 + }
     1199 + },
     1200 + "arguments": {
     1201 + "author_id": {
     1202 + "name": "id",
     1203 + "type": {
     1204 + "scalarType": "int4"
    1327 1205   },
    1328 1206   "nullable": "nullable",
    1329 1207   "description": null
    skipped 322 lines
    1652 1530   }
    1653 1531   },
    1654 1532   "aggregateFunctions": {
    1655  - "bit": {
    1656  - "bit_and": {
    1657  - "returnType": "bit"
    1658  - },
    1659  - "bit_or": {
    1660  - "returnType": "bit"
    1661  - },
    1662  - "bit_xor": {
    1663  - "returnType": "bit"
    1664  - }
    1665  - },
    1666 1533   "bool": {
    1667 1534   "bool_and": {
    1668 1535   "returnType": "bool"
    skipped 11 lines
    1680 1547   },
    1681 1548   "min": {
    1682 1549   "returnType": "bpchar"
     1550 + }
     1551 + },
     1552 + "char": {
     1553 + "max": {
     1554 + "returnType": "text"
     1555 + },
     1556 + "min": {
     1557 + "returnType": "text"
    1683 1558   }
    1684 1559   },
    1685 1560   "date": {
    skipped 68 lines
    1754 1629   "returnType": "float8"
    1755 1630   }
    1756 1631   },
    1757  - "geometry": {
    1758  - "st_3dextent": {
    1759  - "returnType": "box3d"
    1760  - },
    1761  - "st_collect": {
    1762  - "returnType": "geometry"
    1763  - },
    1764  - "st_coverageunion": {
    1765  - "returnType": "geometry"
    1766  - },
    1767  - "st_extent": {
    1768  - "returnType": "box2d"
    1769  - },
    1770  - "st_makeline": {
    1771  - "returnType": "geometry"
    1772  - },
    1773  - "st_memcollect": {
    1774  - "returnType": "geometry"
    1775  - },
    1776  - "st_memunion": {
    1777  - "returnType": "geometry"
    1778  - },
    1779  - "st_polygonize": {
    1780  - "returnType": "geometry"
    1781  - },
    1782  - "st_union": {
    1783  - "returnType": "geometry"
    1784  - }
    1785  - },
    1786  - "inet": {
    1787  - "max": {
    1788  - "returnType": "inet"
    1789  - },
    1790  - "min": {
    1791  - "returnType": "inet"
    1792  - }
    1793  - },
    1794 1632   "int2": {
    1795 1633   "avg": {
    1796 1634   "returnType": "numeric"
    skipped 131 lines
    1928 1766   "returnType": "interval"
    1929 1767   }
    1930 1768   },
    1931  - "money": {
    1932  - "max": {
    1933  - "returnType": "money"
    1934  - },
    1935  - "min": {
    1936  - "returnType": "money"
    1937  - },
    1938  - "sum": {
    1939  - "returnType": "money"
    1940  - }
    1941  - },
    1942 1769   "numeric": {
    1943 1770   "avg": {
    1944 1771   "returnType": "numeric"
    skipped 26 lines
    1971 1798   "returnType": "numeric"
    1972 1799   }
    1973 1800   },
    1974  - "oid": {
    1975  - "max": {
    1976  - "returnType": "oid"
    1977  - },
    1978  - "min": {
    1979  - "returnType": "oid"
    1980  - }
    1981  - },
    1982  - "pg_lsn": {
    1983  - "max": {
    1984  - "returnType": "pg_lsn"
    1985  - },
    1986  - "min": {
    1987  - "returnType": "pg_lsn"
    1988  - }
    1989  - },
    1990 1801   "text": {
    1991 1802   "max": {
    1992 1803   "returnType": "text"
    skipped 2 lines
    1995 1806   "returnType": "text"
    1996 1807   }
    1997 1808   },
    1998  - "tid": {
    1999  - "max": {
    2000  - "returnType": "tid"
    2001  - },
    2002  - "min": {
    2003  - "returnType": "tid"
    2004  - }
    2005  - },
    2006 1809   "time": {
     1810 + "avg": {
     1811 + "returnType": "interval"
     1812 + },
    2007 1813   "max": {
    2008 1814   "returnType": "time"
    2009 1815   },
    2010 1816   "min": {
    2011 1817   "returnType": "time"
     1818 + },
     1819 + "sum": {
     1820 + "returnType": "interval"
    2012 1821   }
    2013 1822   },
    2014 1823   "timestamp": {
    skipped 20 lines
    2035 1844   "returnType": "timetz"
    2036 1845   }
    2037 1846   },
    2038  - "topoelement": {
    2039  - "topoelementarray_agg": {
    2040  - "returnType": "topoelementarray"
    2041  - }
    2042  - },
    2043  - "xid8": {
     1847 + "varchar": {
    2044 1848   "max": {
    2045  - "returnType": "xid8"
     1849 + "returnType": "bpchar"
    2046 1850   },
    2047 1851   "min": {
    2048  - "returnType": "xid8"
    2049  - }
    2050  - },
    2051  - "xml": {
    2052  - "xmlagg": {
    2053  - "returnType": "xml"
     1852 + "returnType": "bpchar"
    2054 1853   }
    2055 1854   }
    2056 1855   },
    2057 1856   "comparisonOperators": {
    2058  - "bit": {
    2059  - "_eq": {
    2060  - "operatorName": "=",
    2061  - "argumentType": "bit"
    2062  - },
    2063  - "_gt": {
    2064  - "operatorName": ">",
    2065  - "argumentType": "bit"
    2066  - },
    2067  - "_gte": {
    2068  - "operatorName": ">=",
    2069  - "argumentType": "bit"
    2070  - },
    2071  - "_lt": {
    2072  - "operatorName": "<",
    2073  - "argumentType": "bit"
    2074  - },
    2075  - "_lte": {
    2076  - "operatorName": "<=",
    2077  - "argumentType": "bit"
    2078  - },
    2079  - "_neq": {
    2080  - "operatorName": "!=",
    2081  - "argumentType": "bit"
    2082  - }
    2083  - },
    2084 1857   "bool": {
    2085 1858   "_eq": {
    2086 1859   "operatorName": "=",
     1860 + "operatorKind": "equal",
    2087 1861   "argumentType": "bool",
    2088 1862   "isInfix": true
    2089 1863   },
    2090 1864   "_gt": {
    2091 1865   "operatorName": ">",
     1866 + "operatorKind": "custom",
    2092 1867   "argumentType": "bool",
    2093 1868   "isInfix": true
    2094 1869   },
    2095 1870   "_gte": {
    2096 1871   "operatorName": ">=",
     1872 + "operatorKind": "custom",
     1873 + "argumentType": "bool",
     1874 + "isInfix": true
     1875 + },
     1876 + "_in": {
     1877 + "operatorName": "IN",
     1878 + "operatorKind": "in",
    2097 1879   "argumentType": "bool",
    2098 1880   "isInfix": true
    2099 1881   },
    2100 1882   "_lt": {
    2101 1883   "operatorName": "<",
     1884 + "operatorKind": "custom",
    2102 1885   "argumentType": "bool",
    2103 1886   "isInfix": true
    2104 1887   },
    2105 1888   "_lte": {
    2106 1889   "operatorName": "<=",
     1890 + "operatorKind": "custom",
    2107 1891   "argumentType": "bool",
    2108 1892   "isInfix": true
    2109 1893   },
    2110 1894   "_neq": {
    2111 1895   "operatorName": "<>",
     1896 + "operatorKind": "custom",
    2112 1897   "argumentType": "bool",
    2113 1898   "isInfix": true
    2114 1899   }
    skipped 1 lines
    2116 1901   "bpchar": {
    2117 1902   "_eq": {
    2118 1903   "operatorName": "=",
    2119  - "argumentType": "bpchar"
     1904 + "operatorKind": "equal",
     1905 + "argumentType": "bpchar",
     1906 + "isInfix": true
    2120 1907   },
    2121 1908   "_gt": {
    2122 1909   "operatorName": ">",
    2123  - "argumentType": "bpchar"
     1910 + "operatorKind": "custom",
     1911 + "argumentType": "bpchar",
     1912 + "isInfix": true
    2124 1913   },
    2125 1914   "_gte": {
    2126 1915   "operatorName": ">=",
    2127  - "argumentType": "bpchar"
     1916 + "operatorKind": "custom",
     1917 + "argumentType": "bpchar",
     1918 + "isInfix": true
     1919 + },
     1920 + "_ilike": {
     1921 + "operatorName": "~~*",
     1922 + "operatorKind": "custom",
     1923 + "argumentType": "text",
     1924 + "isInfix": true
     1925 + },
     1926 + "_in": {
     1927 + "operatorName": "IN",
     1928 + "operatorKind": "in",
     1929 + "argumentType": "bpchar",
     1930 + "isInfix": true
     1931 + },
     1932 + "_iregex": {
     1933 + "operatorName": "~*",
     1934 + "operatorKind": "custom",
     1935 + "argumentType": "text",
     1936 + "isInfix": true
     1937 + },
     1938 + "_like": {
     1939 + "operatorName": "~~",
     1940 + "operatorKind": "custom",
     1941 + "argumentType": "text",
     1942 + "isInfix": true
    2128 1943   },
    2129 1944   "_lt": {
    2130 1945   "operatorName": "<",
    2131  - "argumentType": "bpchar"
     1946 + "operatorKind": "custom",
     1947 + "argumentType": "bpchar",
     1948 + "isInfix": true
    2132 1949   },
    2133 1950   "_lte": {
    2134 1951   "operatorName": "<=",
    2135  - "argumentType": "bpchar"
     1952 + "operatorKind": "custom",
     1953 + "argumentType": "bpchar",
     1954 + "isInfix": true
    2136 1955   },
    2137 1956   "_neq": {
    2138  - "operatorName": "!=",
    2139  - "argumentType": "bpchar"
     1957 + "operatorName": "<>",
     1958 + "operatorKind": "custom",
     1959 + "argumentType": "bpchar",
     1960 + "isInfix": true
     1961 + },
     1962 + "_nilike": {
     1963 + "operatorName": "!~~*",
     1964 + "operatorKind": "custom",
     1965 + "argumentType": "text",
     1966 + "isInfix": true
     1967 + },
     1968 + "_niregex": {
     1969 + "operatorName": "!~*",
     1970 + "operatorKind": "custom",
     1971 + "argumentType": "text",
     1972 + "isInfix": true
     1973 + },
     1974 + "_nlike": {
     1975 + "operatorName": "!~~",
     1976 + "operatorKind": "custom",
     1977 + "argumentType": "text",
     1978 + "isInfix": true
     1979 + },
     1980 + "_nregex": {
     1981 + "operatorName": "!~",
     1982 + "operatorKind": "custom",
     1983 + "argumentType": "text",
     1984 + "isInfix": true
     1985 + },
     1986 + "_regex": {
     1987 + "operatorName": "~",
     1988 + "operatorKind": "custom",
     1989 + "argumentType": "text",
     1990 + "isInfix": true
     1991 + },
     1992 + "st_coveredby": {
     1993 + "operatorName": "st_coveredby",
     1994 + "operatorKind": "custom",
     1995 + "argumentType": "bpchar",
     1996 + "isInfix": false
     1997 + },
     1998 + "st_covers": {
     1999 + "operatorName": "st_covers",
     2000 + "operatorKind": "custom",
     2001 + "argumentType": "bpchar",
     2002 + "isInfix": false
     2003 + },
     2004 + "st_intersects": {
     2005 + "operatorName": "st_intersects",
     2006 + "operatorKind": "custom",
     2007 + "argumentType": "bpchar",
     2008 + "isInfix": false
     2009 + },
     2010 + "st_relatematch": {
     2011 + "operatorName": "st_relatematch",
     2012 + "operatorKind": "custom",
     2013 + "argumentType": "bpchar",
     2014 + "isInfix": false
     2015 + },
     2016 + "starts_with": {
     2017 + "operatorName": "starts_with",
     2018 + "operatorKind": "custom",
     2019 + "argumentType": "bpchar",
     2020 + "isInfix": false
     2021 + },
     2022 + "ts_match_tt": {
     2023 + "operatorName": "ts_match_tt",
     2024 + "operatorKind": "custom",
     2025 + "argumentType": "bpchar",
     2026 + "isInfix": false
    2140 2027   }
    2141 2028   },
    2142 2029   "char": {
    2143 2030   "_eq": {
    2144 2031   "operatorName": "=",
    2145  - "argumentType": "char"
     2032 + "operatorKind": "equal",
     2033 + "argumentType": "char",
     2034 + "isInfix": true
    2146 2035   },
    2147 2036   "_gt": {
    2148 2037   "operatorName": ">",
    2149  - "argumentType": "char"
     2038 + "operatorKind": "custom",
     2039 + "argumentType": "char",
     2040 + "isInfix": true
    2150 2041   },
    2151 2042   "_gte": {
    2152 2043   "operatorName": ">=",
    2153  - "argumentType": "char"
     2044 + "operatorKind": "custom",
     2045 + "argumentType": "char",
     2046 + "isInfix": true
     2047 + },
     2048 + "_ilike": {
     2049 + "operatorName": "~~*",
     2050 + "operatorKind": "custom",
     2051 + "argumentType": "char",
     2052 + "isInfix": true
     2053 + },
     2054 + "_in": {
     2055 + "operatorName": "IN",
     2056 + "operatorKind": "in",
     2057 + "argumentType": "char",
     2058 + "isInfix": true
     2059 + },
     2060 + "_iregex": {
     2061 + "operatorName": "~*",
     2062 + "operatorKind": "custom",
     2063 + "argumentType": "char",
     2064 + "isInfix": true
     2065 + },
     2066 + "_like": {
     2067 + "operatorName": "~~",
     2068 + "operatorKind": "custom",
     2069 + "argumentType": "char",
     2070 + "isInfix": true
    2154 2071   },
    2155 2072   "_lt": {
    2156 2073   "operatorName": "<",
    2157  - "argumentType": "char"
     2074 + "operatorKind": "custom",
     2075 + "argumentType": "char",
     2076 + "isInfix": true
    2158 2077   },
    2159 2078   "_lte": {
    2160 2079   "operatorName": "<=",
    2161  - "argumentType": "char"
     2080 + "operatorKind": "custom",
     2081 + "argumentType": "char",
     2082 + "isInfix": true
    2162 2083   },
    2163 2084   "_neq": {
    2164  - "operatorName": "!=",
    2165  - "argumentType": "char"
    2166  - }
    2167  - },
    2168  - "date": {
    2169  - "_eq": {
    2170  - "operatorName": "=",
    2171  - "argumentType": "date"
     2085 + "operatorName": "<>",
     2086 + "operatorKind": "custom",
     2087 + "argumentType": "char",
     2088 + "isInfix": true
    2172 2089   },
    2173  - "_gt": {
    2174  - "operatorName": ">",
    2175  - "argumentType": "date"
     2090 + "_nilike": {
     2091 + "operatorName": "!~~*",
     2092 + "operatorKind": "custom",
     2093 + "argumentType": "char",
     2094 + "isInfix": true
    2176 2095   },
    2177  - "_gte": {
    2178  - "operatorName": ">=",
    2179  - "argumentType": "date"
     2096 + "_niregex": {
     2097 + "operatorName": "!~*",
     2098 + "operatorKind": "custom",
     2099 + "argumentType": "char",
     2100 + "isInfix": true
    2180 2101   },
    2181  - "_lt": {
    2182  - "operatorName": "<",
    2183  - "argumentType": "date"
     2102 + "_nlike": {
     2103 + "operatorName": "!~~",
     2104 + "operatorKind": "custom",
     2105 + "argumentType": "char",
     2106 + "isInfix": true
    2184 2107   },
    2185  - "_lte": {
    2186  - "operatorName": "<=",
    2187  - "argumentType": "date"
     2108 + "_nregex": {
     2109 + "operatorName": "!~",
     2110 + "operatorKind": "custom",
     2111 + "argumentType": "char",
     2112 + "isInfix": true
    2188 2113   },
    2189  - "_neq": {
    2190  - "operatorName": "!=",
    2191  - "argumentType": "date"
    2192  - }
    2193  - },
    2194  - "float4": {
    2195  - "_eq": {
    2196  - "operatorName": "=",
    2197  - "argumentType": "float4"
     2114 + "_regex": {
     2115 + "operatorName": "~",
     2116 + "operatorKind": "custom",
     2117 + "argumentType": "char",
     2118 + "isInfix": true
    2198 2119   },
    2199  - "_gt": {
    2200  - "operatorName": ">",
    2201  - "argumentType": "float4"
     2120 + "st_coveredby": {
     2121 + "operatorName": "st_coveredby",
     2122 + "operatorKind": "custom",
     2123 + "argumentType": "char",
     2124 + "isInfix": false
    2202 2125   },
    2203  - "_gte": {
    2204  - "operatorName": ">=",
    2205  - "argumentType": "float4"
     2126 + "st_covers": {
     2127 + "operatorName": "st_covers",
     2128 + "operatorKind": "custom",
     2129 + "argumentType": "char",
     2130 + "isInfix": false
    2206 2131   },
    2207  - "_lt": {
    2208  - "operatorName": "<",
    2209  - "argumentType": "float4"
     2132 + "st_intersects": {
     2133 + "operatorName": "st_intersects",
     2134 + "operatorKind": "custom",
     2135 + "argumentType": "char",
     2136 + "isInfix": false
    2210 2137   },
    2211  - "_lte": {
    2212  - "operatorName": "<=",
    2213  - "argumentType": "float4"
     2138 + "st_relatematch": {
     2139 + "operatorName": "st_relatematch",
     2140 + "operatorKind": "custom",
     2141 + "argumentType": "char",
     2142 + "isInfix": false
    2214 2143   },
    2215  - "_neq": {
    2216  - "operatorName": "!=",
    2217  - "argumentType": "float4"
     2144 + "starts_with": {
     2145 + "operatorName": "starts_with",
     2146 + "operatorKind": "custom",
     2147 + "argumentType": "char",
     2148 + "isInfix": false
     2149 + },
     2150 + "ts_match_tt": {
     2151 + "operatorName": "ts_match_tt",
     2152 + "operatorKind": "custom",
     2153 + "argumentType": "char",
     2154 + "isInfix": false
    2218 2155   }
    2219 2156   },
    2220  - "float8": {
     2157 + "date": {
    2221 2158   "_eq": {
    2222 2159   "operatorName": "=",
    2223  - "argumentType": "float8",
     2160 + "operatorKind": "equal",
     2161 + "argumentType": "date",
    2224 2162   "isInfix": true
    2225 2163   },
    2226 2164   "_gt": {
    2227 2165   "operatorName": ">",
    2228  - "argumentType": "float8",
     2166 + "operatorKind": "custom",
     2167 + "argumentType": "date",
    2229 2168   "isInfix": true
    2230 2169   },
    2231 2170   "_gte": {
    2232 2171   "operatorName": ">=",
    2233  - "argumentType": "float8",
     2172 + "operatorKind": "custom",
     2173 + "argumentType": "date",
     2174 + "isInfix": true
     2175 + },
     2176 + "_in": {
     2177 + "operatorName": "IN",
     2178 + "operatorKind": "in",
     2179 + "argumentType": "date",
    2234 2180   "isInfix": true
    2235 2181   },
    2236 2182   "_lt": {
    2237 2183   "operatorName": "<",
    2238  - "argumentType": "float8",
     2184 + "operatorKind": "custom",
     2185 + "argumentType": "date",
    2239 2186   "isInfix": true
    2240 2187   },
    2241 2188   "_lte": {
    2242 2189   "operatorName": "<=",
    2243  - "argumentType": "float8",
     2190 + "operatorKind": "custom",
     2191 + "argumentType": "date",
    2244 2192   "isInfix": true
    2245 2193   },
    2246 2194   "_neq": {
    2247 2195   "operatorName": "<>",
    2248  - "argumentType": "float8",
     2196 + "operatorKind": "custom",
     2197 + "argumentType": "date",
    2249 2198   "isInfix": true
    2250 2199   }
    2251 2200   },
    2252  - "geometry": {
     2201 + "float4": {
    2253 2202   "_eq": {
    2254 2203   "operatorName": "=",
    2255  - "argumentType": "geometry"
     2204 + "operatorKind": "equal",
     2205 + "argumentType": "float4",
     2206 + "isInfix": true
    2256 2207   },
    2257 2208   "_gt": {
    2258 2209   "operatorName": ">",
    2259  - "argumentType": "geometry"
     2210 + "operatorKind": "custom",
     2211 + "argumentType": "float4",
     2212 + "isInfix": true
    2260 2213   },
    2261 2214   "_gte": {
    2262 2215   "operatorName": ">=",
    2263  - "argumentType": "geometry"
     2216 + "operatorKind": "custom",
     2217 + "argumentType": "float4",
     2218 + "isInfix": true
     2219 + },
     2220 + "_in": {
     2221 + "operatorName": "IN",
     2222 + "operatorKind": "in",
     2223 + "argumentType": "float4",
     2224 + "isInfix": true
    2264 2225   },
    2265 2226   "_lt": {
    2266 2227   "operatorName": "<",
    2267  - "argumentType": "geometry"
     2228 + "operatorKind": "custom",
     2229 + "argumentType": "float4",
     2230 + "isInfix": true
    2268 2231   },
    2269 2232   "_lte": {
    2270 2233   "operatorName": "<=",
    2271  - "argumentType": "geometry"
     2234 + "operatorKind": "custom",
     2235 + "argumentType": "float4",
     2236 + "isInfix": true
    2272 2237   },
    2273 2238   "_neq": {
    2274  - "operatorName": "!=",
    2275  - "argumentType": "geometry"
     2239 + "operatorName": "<>",
     2240 + "operatorKind": "custom",
     2241 + "argumentType": "float4",
     2242 + "isInfix": true
    2276 2243   }
    2277 2244   },
    2278  - "inet": {
     2245 + "float8": {
    2279 2246   "_eq": {
    2280 2247   "operatorName": "=",
    2281  - "argumentType": "inet"
     2248 + "operatorKind": "equal",
     2249 + "argumentType": "float8",
     2250 + "isInfix": true
    2282 2251   },
    2283 2252   "_gt": {
    2284 2253   "operatorName": ">",
    2285  - "argumentType": "inet"
     2254 + "operatorKind": "custom",
     2255 + "argumentType": "float8",
     2256 + "isInfix": true
    2286 2257   },
    2287 2258   "_gte": {
    2288 2259   "operatorName": ">=",
    2289  - "argumentType": "inet"
     2260 + "operatorKind": "custom",
     2261 + "argumentType": "float8",
     2262 + "isInfix": true
     2263 + },
     2264 + "_in": {
     2265 + "operatorName": "IN",
     2266 + "operatorKind": "in",
     2267 + "argumentType": "float8",
     2268 + "isInfix": true
    2290 2269   },
    2291 2270   "_lt": {
    2292 2271   "operatorName": "<",
    2293  - "argumentType": "inet"
     2272 + "operatorKind": "custom",
     2273 + "argumentType": "float8",
     2274 + "isInfix": true
    2294 2275   },
    2295 2276   "_lte": {
    2296 2277   "operatorName": "<=",
    2297  - "argumentType": "inet"
     2278 + "operatorKind": "custom",
     2279 + "argumentType": "float8",
     2280 + "isInfix": true
    2298 2281   },
    2299 2282   "_neq": {
    2300  - "operatorName": "!=",
    2301  - "argumentType": "inet"
     2283 + "operatorName": "<>",
     2284 + "operatorKind": "custom",
     2285 + "argumentType": "float8",
     2286 + "isInfix": true
    2302 2287   }
    2303 2288   },
    2304 2289   "int2": {
    2305 2290   "_eq": {
    2306 2291   "operatorName": "=",
    2307  - "argumentType": "int2"
     2292 + "operatorKind": "equal",
     2293 + "argumentType": "int2",
     2294 + "isInfix": true
    2308 2295   },
    2309 2296   "_gt": {
    2310 2297   "operatorName": ">",
    2311  - "argumentType": "int2"
     2298 + "operatorKind": "custom",
     2299 + "argumentType": "int2",
     2300 + "isInfix": true
    2312 2301   },
    2313 2302   "_gte": {
    2314 2303   "operatorName": ">=",
    2315  - "argumentType": "int2"
     2304 + "operatorKind": "custom",
     2305 + "argumentType": "int2",
     2306 + "isInfix": true
     2307 + },
     2308 + "_in": {
     2309 + "operatorName": "IN",
     2310 + "operatorKind": "in",
     2311 + "argumentType": "int2",
     2312 + "isInfix": true
    2316 2313   },
    2317 2314   "_lt": {
    2318 2315   "operatorName": "<",
    2319  - "argumentType": "int2"
     2316 + "operatorKind": "custom",
     2317 + "argumentType": "int2",
     2318 + "isInfix": true
    2320 2319   },
    2321 2320   "_lte": {
    2322 2321   "operatorName": "<=",
    2323  - "argumentType": "int2"
     2322 + "operatorKind": "custom",
     2323 + "argumentType": "int2",
     2324 + "isInfix": true
    2324 2325   },
    2325 2326   "_neq": {
    2326  - "operatorName": "!=",
    2327  - "argumentType": "int2"
     2327 + "operatorName": "<>",
     2328 + "operatorKind": "custom",
     2329 + "argumentType": "int2",
     2330 + "isInfix": true
    2328 2331   }
    2329 2332   },
    2330 2333   "int4": {
    2331 2334   "_eq": {
    2332 2335   "operatorName": "=",
     2336 + "operatorKind": "equal",
    2333 2337   "argumentType": "int4",
    2334 2338   "isInfix": true
    2335 2339   },
    2336 2340   "_gt": {
    2337 2341   "operatorName": ">",
     2342 + "operatorKind": "custom",
    2338 2343   "argumentType": "int4",
    2339 2344   "isInfix": true
    2340 2345   },
    2341 2346   "_gte": {
    2342 2347   "operatorName": ">=",
     2348 + "operatorKind": "custom",
     2349 + "argumentType": "int4",
     2350 + "isInfix": true
     2351 + },
     2352 + "_in": {
     2353 + "operatorName": "IN",
     2354 + "operatorKind": "in",
    2343 2355   "argumentType": "int4",
    2344 2356   "isInfix": true
    2345 2357   },
    2346 2358   "_lt": {
    2347 2359   "operatorName": "<",
     2360 + "operatorKind": "custom",
    2348 2361   "argumentType": "int4",
    2349 2362   "isInfix": true
    2350 2363   },
    2351 2364   "_lte": {
    2352 2365   "operatorName": "<=",
     2366 + "operatorKind": "custom",
    2353 2367   "argumentType": "int4",
    2354 2368   "isInfix": true
    2355 2369   },
    2356 2370   "_neq": {
    2357 2371   "operatorName": "<>",
     2372 + "operatorKind": "custom",
    2358 2373   "argumentType": "int4",
    2359 2374   "isInfix": true
    2360 2375   }
    skipped 1 lines
    2362 2377   "int8": {
    2363 2378   "_eq": {
    2364 2379   "operatorName": "=",
    2365  - "argumentType": "int8"
     2380 + "operatorKind": "equal",
     2381 + "argumentType": "int8",
     2382 + "isInfix": true
    2366 2383   },
    2367 2384   "_gt": {
    2368 2385   "operatorName": ">",
    2369  - "argumentType": "int8"
     2386 + "operatorKind": "custom",
     2387 + "argumentType": "int8",
     2388 + "isInfix": true
    2370 2389   },
    2371 2390   "_gte": {
    2372 2391   "operatorName": ">=",
    2373  - "argumentType": "int8"
     2392 + "operatorKind": "custom",
     2393 + "argumentType": "int8",
     2394 + "isInfix": true
     2395 + },
     2396 + "_in": {
     2397 + "operatorName": "IN",
     2398 + "operatorKind": "in",
     2399 + "argumentType": "int8",
     2400 + "isInfix": true
    2374 2401   },
    2375 2402   "_lt": {
    2376 2403   "operatorName": "<",
    2377  - "argumentType": "int8"
     2404 + "operatorKind": "custom",
     2405 + "argumentType": "int8",
     2406 + "isInfix": true
    2378 2407   },
    2379 2408   "_lte": {
    2380 2409   "operatorName": "<=",
    2381  - "argumentType": "int8"
     2410 + "operatorKind": "custom",
     2411 + "argumentType": "int8",
     2412 + "isInfix": true
    2382 2413   },
    2383 2414   "_neq": {
    2384  - "operatorName": "!=",
    2385  - "argumentType": "int8"
    2386  - }
    2387  - },
    2388  - "integer": {
    2389  - "_eq": {
    2390  - "operatorName": "=",
    2391  - "argumentType": "integer"
     2415 + "operatorName": "<>",
     2416 + "operatorKind": "custom",
     2417 + "argumentType": "int8",
     2418 + "isInfix": true
    2392 2419   }
    2393 2420   },
    2394 2421   "interval": {
    2395 2422   "_eq": {
    2396 2423   "operatorName": "=",
    2397  - "argumentType": "interval"
     2424 + "operatorKind": "equal",
     2425 + "argumentType": "interval",
     2426 + "isInfix": true
    2398 2427   },
    2399 2428   "_gt": {
    2400 2429   "operatorName": ">",
    2401  - "argumentType": "interval"
     2430 + "operatorKind": "custom",
     2431 + "argumentType": "interval",
     2432 + "isInfix": true
    2402 2433   },
    2403 2434   "_gte": {
    2404 2435   "operatorName": ">=",
    2405  - "argumentType": "interval"
    2406  - },
    2407  - "_lt": {
    2408  - "operatorName": "<",
    2409  - "argumentType": "interval"
    2410  - },
    2411  - "_lte": {
    2412  - "operatorName": "<=",
    2413  - "argumentType": "interval"
    2414  - },
    2415  - "_neq": {
    2416  - "operatorName": "!=",
    2417  - "argumentType": "interval"
    2418  - }
    2419  - },
    2420  - "money": {
    2421  - "_eq": {
    2422  - "operatorName": "=",
    2423  - "argumentType": "money"
    2424  - },
    2425  - "_gt": {
    2426  - "operatorName": ">",
    2427  - "argumentType": "money"
    2428  - },
    2429  - "_gte": {
    2430  - "operatorName": ">=",
    2431  - "argumentType": "money"
    2432  - },
    2433  - "_lt": {
    2434  - "operatorName": "<",
    2435  - "argumentType": "money"
    2436  - },
    2437  - "_lte": {
    2438  - "operatorName": "<=",
    2439  - "argumentType": "money"
    2440  - },
    2441  - "_neq": {
    2442  - "operatorName": "!=",
    2443  - "argumentType": "money"
    2444  - }
    2445  - },
    2446  - "name": {
    2447  - "_eq": {
    2448  - "operatorName": "=",
    2449  - "argumentType": "name"
     2436 + "operatorKind": "custom",
     2437 + "argumentType": "interval",
     2438 + "isInfix": true
    2450 2439   },
    2451  - "_gt": {
    2452  - "operatorName": ">",
    2453  - "argumentType": "name"
    2454  - },
    2455  - "_gte": {
    2456  - "operatorName": ">=",
    2457  - "argumentType": "name"
     2440 + "_in": {
     2441 + "operatorName": "IN",
     2442 + "operatorKind": "in",
     2443 + "argumentType": "interval",
     2444 + "isInfix": true
    2458 2445   },
    2459 2446   "_lt": {
    2460 2447   "operatorName": "<",
    2461  - "argumentType": "name"
     2448 + "operatorKind": "custom",
     2449 + "argumentType": "interval",
     2450 + "isInfix": true
    2462 2451   },
    2463 2452   "_lte": {
    2464 2453   "operatorName": "<=",
    2465  - "argumentType": "name"
     2454 + "operatorKind": "custom",
     2455 + "argumentType": "interval",
     2456 + "isInfix": true
    2466 2457   },
    2467 2458   "_neq": {
    2468  - "operatorName": "!=",
    2469  - "argumentType": "name"
     2459 + "operatorName": "<>",
     2460 + "operatorKind": "custom",
     2461 + "argumentType": "interval",
     2462 + "isInfix": true
    2470 2463   }
    2471 2464   },
    2472 2465   "numeric": {
    2473 2466   "_eq": {
    2474 2467   "operatorName": "=",
     2468 + "operatorKind": "equal",
    2475 2469   "argumentType": "numeric",
    2476 2470   "isInfix": true
    2477 2471   },
    2478 2472   "_gt": {
    2479 2473   "operatorName": ">",
     2474 + "operatorKind": "custom",
    2480 2475   "argumentType": "numeric",
    2481 2476   "isInfix": true
    2482 2477   },
    2483 2478   "_gte": {
    2484 2479   "operatorName": ">=",
     2480 + "operatorKind": "custom",
     2481 + "argumentType": "numeric",
     2482 + "isInfix": true
     2483 + },
     2484 + "_in": {
     2485 + "operatorName": "IN",
     2486 + "operatorKind": "in",
    2485 2487   "argumentType": "numeric",
    2486 2488   "isInfix": true
    2487 2489   },
    2488 2490   "_lt": {
    2489 2491   "operatorName": "<",
     2492 + "operatorKind": "custom",
    2490 2493   "argumentType": "numeric",
    2491 2494   "isInfix": true
    2492 2495   },
    2493 2496   "_lte": {
    2494 2497   "operatorName": "<=",
     2498 + "operatorKind": "custom",
    2495 2499   "argumentType": "numeric",
    2496 2500   "isInfix": true
    2497 2501   },
    2498 2502   "_neq": {
    2499 2503   "operatorName": "<>",
     2504 + "operatorKind": "custom",
    2500 2505   "argumentType": "numeric",
    2501 2506   "isInfix": true
    2502 2507   }
    2503 2508   },
    2504  - "oid": {
    2505  - "_eq": {
    2506  - "operatorName": "=",
    2507  - "argumentType": "oid"
    2508  - },
    2509  - "_gt": {
    2510  - "operatorName": ">",
    2511  - "argumentType": "oid"
    2512  - },
    2513  - "_gte": {
    2514  - "operatorName": ">=",
    2515  - "argumentType": "oid"
    2516  - },
    2517  - "_lt": {
    2518  - "operatorName": "<",
    2519  - "argumentType": "oid"
    2520  - },
    2521  - "_lte": {
    2522  - "operatorName": "<=",
    2523  - "argumentType": "oid"
    2524  - },
    2525  - "_neq": {
    2526  - "operatorName": "!=",
    2527  - "argumentType": "oid"
    2528  - }
    2529  - },
    2530  - "pg_lsn": {
    2531  - "_eq": {
    2532  - "operatorName": "=",
    2533  - "argumentType": "pg_lsn"
    2534  - },
    2535  - "_gt": {
    2536  - "operatorName": ">",
    2537  - "argumentType": "pg_lsn"
    2538  - },
    2539  - "_gte": {
    2540  - "operatorName": ">=",
    2541  - "argumentType": "pg_lsn"
    2542  - },
    2543  - "_lt": {
    2544  - "operatorName": "<",
    2545  - "argumentType": "pg_lsn"
    2546  - },
    2547  - "_lte": {
    2548  - "operatorName": "<=",
    2549  - "argumentType": "pg_lsn"
    2550  - },
    2551  - "_neq": {
    2552  - "operatorName": "!=",
    2553  - "argumentType": "pg_lsn"
    2554  - }
    2555  - },
    2556 2509   "text": {
    2557 2510   "_eq": {
    2558 2511   "operatorName": "=",
     2512 + "operatorKind": "equal",
    2559 2513   "argumentType": "text",
    2560 2514   "isInfix": true
    2561 2515   },
    2562 2516   "_gt": {
    2563 2517   "operatorName": ">",
     2518 + "operatorKind": "custom",
    2564 2519   "argumentType": "text",
    2565 2520   "isInfix": true
    2566 2521   },
    2567 2522   "_gte": {
    2568 2523   "operatorName": ">=",
     2524 + "operatorKind": "custom",
    2569 2525   "argumentType": "text",
    2570 2526   "isInfix": true
    2571 2527   },
    2572 2528   "_ilike": {
    2573 2529   "operatorName": "~~*",
     2530 + "operatorKind": "custom",
     2531 + "argumentType": "text",
     2532 + "isInfix": true
     2533 + },
     2534 + "_in": {
     2535 + "operatorName": "IN",
     2536 + "operatorKind": "in",
    2574 2537   "argumentType": "text",
    2575 2538   "isInfix": true
    2576 2539   },
    2577 2540   "_iregex": {
    2578 2541   "operatorName": "~*",
     2542 + "operatorKind": "custom",
    2579 2543   "argumentType": "text",
    2580 2544   "isInfix": true
    2581 2545   },
    2582 2546   "_like": {
    2583 2547   "operatorName": "~~",
     2548 + "operatorKind": "custom",
    2584 2549   "argumentType": "text",
    2585 2550   "isInfix": true
    2586 2551   },
    2587 2552   "_lt": {
    2588 2553   "operatorName": "<",
     2554 + "operatorKind": "custom",
    2589 2555   "argumentType": "text",
    2590 2556   "isInfix": true
    2591 2557   },
    2592 2558   "_lte": {
    2593 2559   "operatorName": "<=",
     2560 + "operatorKind": "custom",
    2594 2561   "argumentType": "text",
    2595 2562   "isInfix": true
    2596 2563   },
    2597 2564   "_neq": {
    2598 2565   "operatorName": "<>",
     2566 + "operatorKind": "custom",
    2599 2567   "argumentType": "text",
    2600 2568   "isInfix": true
    2601 2569   },
    2602 2570   "_nilike": {
    2603 2571   "operatorName": "!~~*",
     2572 + "operatorKind": "custom",
    2604 2573   "argumentType": "text",
    2605 2574   "isInfix": true
    2606 2575   },
    2607 2576   "_niregex": {
    2608 2577   "operatorName": "!~*",
     2578 + "operatorKind": "custom",
    2609 2579   "argumentType": "text",
    2610 2580   "isInfix": true
    2611 2581   },
    2612 2582   "_nlike": {
    2613 2583   "operatorName": "!~~",
     2584 + "operatorKind": "custom",
    2614 2585   "argumentType": "text",
    2615 2586   "isInfix": true
    2616 2587   },
    2617 2588   "_nregex": {
    2618 2589   "operatorName": "!~",
     2590 + "operatorKind": "custom",
    2619 2591   "argumentType": "text",
    2620 2592   "isInfix": true
    2621 2593   },
    2622  - "_nsimilar": {
    2623  - "operatorName": "NOT SIMILAR TO",
    2624  - "argumentType": "text"
    2625  - },
    2626 2594   "_regex": {
    2627 2595   "operatorName": "~",
     2596 + "operatorKind": "custom",
    2628 2597   "argumentType": "text",
    2629 2598   "isInfix": true
    2630 2599   },
    2631  - "_similar": {
    2632  - "operatorName": "SIMILAR TO",
    2633  - "argumentType": "text"
    2634  - }
    2635  - },
    2636  - "tid": {
    2637  - "_eq": {
    2638  - "operatorName": "=",
    2639  - "argumentType": "tid"
     2600 + "st_coveredby": {
     2601 + "operatorName": "st_coveredby",
     2602 + "operatorKind": "custom",
     2603 + "argumentType": "text",
     2604 + "isInfix": false
    2640 2605   },
    2641  - "_gt": {
    2642  - "operatorName": ">",
    2643  - "argumentType": "tid"
     2606 + "st_covers": {
     2607 + "operatorName": "st_covers",
     2608 + "operatorKind": "custom",
     2609 + "argumentType": "text",
     2610 + "isInfix": false
    2644 2611   },
    2645  - "_gte": {
    2646  - "operatorName": ">=",
    2647  - "argumentType": "tid"
     2612 + "st_intersects": {
     2613 + "operatorName": "st_intersects",
     2614 + "operatorKind": "custom",
     2615 + "argumentType": "text",
     2616 + "isInfix": false
    2648 2617   },
    2649  - "_lt": {
    2650  - "operatorName": "<",
    2651  - "argumentType": "tid"
     2618 + "st_relatematch": {
     2619 + "operatorName": "st_relatematch",
     2620 + "operatorKind": "custom",
     2621 + "argumentType": "text",
     2622 + "isInfix": false
    2652 2623   },
    2653  - "_lte": {
    2654  - "operatorName": "<=",
    2655  - "argumentType": "tid"
     2624 + "starts_with": {
     2625 + "operatorName": "starts_with",
     2626 + "operatorKind": "custom",
     2627 + "argumentType": "text",
     2628 + "isInfix": false
    2656 2629   },
    2657  - "_neq": {
    2658  - "operatorName": "!=",
    2659  - "argumentType": "tid"
     2630 + "ts_match_tt": {
     2631 + "operatorName": "ts_match_tt",
     2632 + "operatorKind": "custom",
     2633 + "argumentType": "text",
     2634 + "isInfix": false
    2660 2635   }
    2661 2636   },
    2662 2637   "time": {
    2663 2638   "_eq": {
    2664 2639   "operatorName": "=",
    2665  - "argumentType": "time"
     2640 + "operatorKind": "equal",
     2641 + "argumentType": "time",
     2642 + "isInfix": true
    2666 2643   },
    2667 2644   "_gt": {
    2668 2645   "operatorName": ">",
    2669  - "argumentType": "time"
     2646 + "operatorKind": "custom",
     2647 + "argumentType": "time",
     2648 + "isInfix": true
    2670 2649   },
    2671 2650   "_gte": {
    2672 2651   "operatorName": ">=",
    2673  - "argumentType": "time"
     2652 + "operatorKind": "custom",
     2653 + "argumentType": "time",
     2654 + "isInfix": true
     2655 + },
     2656 + "_in": {
     2657 + "operatorName": "IN",
     2658 + "operatorKind": "in",
     2659 + "argumentType": "time",
     2660 + "isInfix": true
    2674 2661   },
    2675 2662   "_lt": {
    2676 2663   "operatorName": "<",
    2677  - "argumentType": "time"
     2664 + "operatorKind": "custom",
     2665 + "argumentType": "time",
     2666 + "isInfix": true
    2678 2667   },
    2679 2668   "_lte": {
    2680 2669   "operatorName": "<=",
    2681  - "argumentType": "time"
     2670 + "operatorKind": "custom",
     2671 + "argumentType": "time",
     2672 + "isInfix": true
    2682 2673   },
    2683 2674   "_neq": {
    2684  - "operatorName": "!=",
    2685  - "argumentType": "time"
     2675 + "operatorName": "<>",
     2676 + "operatorKind": "custom",
     2677 + "argumentType": "time",
     2678 + "isInfix": true
    2686 2679   }
    2687 2680   },
    2688 2681   "timestamp": {
    2689 2682   "_eq": {
    2690 2683   "operatorName": "=",
     2684 + "operatorKind": "equal",
    2691 2685   "argumentType": "timestamp",
    2692 2686   "isInfix": true
    2693 2687   },
    2694 2688   "_gt": {
    2695 2689   "operatorName": ">",
     2690 + "operatorKind": "custom",
    2696 2691   "argumentType": "timestamp",
    2697 2692   "isInfix": true
    2698 2693   },
    2699 2694   "_gte": {
    2700 2695   "operatorName": ">=",
     2696 + "operatorKind": "custom",
     2697 + "argumentType": "timestamp",
     2698 + "isInfix": true
     2699 + },
     2700 + "_in": {
     2701 + "operatorName": "IN",
     2702 + "operatorKind": "in",
    2701 2703   "argumentType": "timestamp",
    2702 2704   "isInfix": true
    2703 2705   },
    2704 2706   "_lt": {
    2705 2707   "operatorName": "<",
     2708 + "operatorKind": "custom",
    2706 2709   "argumentType": "timestamp",
    2707 2710   "isInfix": true
    2708 2711   },
    2709 2712   "_lte": {
    2710 2713   "operatorName": "<=",
     2714 + "operatorKind": "custom",
    2711 2715   "argumentType": "timestamp",
    2712 2716   "isInfix": true
    2713 2717   },
    2714 2718   "_neq": {
    2715 2719   "operatorName": "<>",
     2720 + "operatorKind": "custom",
    2716 2721   "argumentType": "timestamp",
    2717 2722   "isInfix": true
    2718 2723   }
    skipped 1 lines
    2720 2725   "timestamptz": {
    2721 2726   "_eq": {
    2722 2727   "operatorName": "=",
    2723  - "argumentType": "timestamptz"
     2728 + "operatorKind": "equal",
     2729 + "argumentType": "timestamptz",
     2730 + "isInfix": true
    2724 2731   },
    2725 2732   "_gt": {
    2726 2733   "operatorName": ">",
    2727  - "argumentType": "timestamptz"
     2734 + "operatorKind": "custom",
     2735 + "argumentType": "timestamptz",
     2736 + "isInfix": true
    2728 2737   },
    2729 2738   "_gte": {
    2730 2739   "operatorName": ">=",
    2731  - "argumentType": "timestamptz"
     2740 + "operatorKind": "custom",
     2741 + "argumentType": "timestamptz",
     2742 + "isInfix": true
     2743 + },
     2744 + "_in": {
     2745 + "operatorName": "IN",
     2746 + "operatorKind": "in",
     2747 + "argumentType": "timestamptz",
     2748 + "isInfix": true
    2732 2749   },
    2733 2750   "_lt": {
    2734 2751   "operatorName": "<",
    2735  - "argumentType": "timestamptz"
     2752 + "operatorKind": "custom",
     2753 + "argumentType": "timestamptz",
     2754 + "isInfix": true
    2736 2755   },
    2737 2756   "_lte": {
    2738 2757   "operatorName": "<=",
    2739  - "argumentType": "timestamptz"
     2758 + "operatorKind": "custom",
     2759 + "argumentType": "timestamptz",
     2760 + "isInfix": true
    2740 2761   },
    2741 2762   "_neq": {
    2742  - "operatorName": "!=",
    2743  - "argumentType": "timestamptz"
     2763 + "operatorName": "<>",
     2764 + "operatorKind": "custom",
     2765 + "argumentType": "timestamptz",
     2766 + "isInfix": true
    2744 2767   }
    2745 2768   },
    2746 2769   "timetz": {
    2747 2770   "_eq": {
    2748 2771   "operatorName": "=",
    2749  - "argumentType": "timetz"
     2772 + "operatorKind": "equal",
     2773 + "argumentType": "timetz",
     2774 + "isInfix": true
    2750 2775   },
    2751 2776   "_gt": {
    2752 2777   "operatorName": ">",
    2753  - "argumentType": "timetz"
     2778 + "operatorKind": "custom",
     2779 + "argumentType": "timetz",
     2780 + "isInfix": true
    2754 2781   },
    2755 2782   "_gte": {
    2756 2783   "operatorName": ">=",
    2757  - "argumentType": "timetz"
     2784 + "operatorKind": "custom",
     2785 + "argumentType": "timetz",
     2786 + "isInfix": true
    2758 2787   },
    2759  - "_lt": {
    2760  - "operatorName": "<",
    2761  - "argumentType": "timetz"
    2762  - },
    2763  - "_lte": {
    2764  - "operatorName": "<=",
    2765  - "argumentType": "timetz"
    2766  - },
    2767  - "_neq": {
    2768  - "operatorName": "!=",
    2769  - "argumentType": "timetz"
    2770  - }
    2771  - },
    2772  - "topoelement": {
    2773  - "_eq": {
    2774  - "operatorName": "=",
    2775  - "argumentType": "topoelement"
    2776  - },
    2777  - "_gt": {
    2778  - "operatorName": ">",
    2779  - "argumentType": "topoelement"
    2780  - },
    2781  - "_gte": {
    2782  - "operatorName": ">=",
    2783  - "argumentType": "topoelement"
     2788 + "_in": {
     2789 + "operatorName": "IN",
     2790 + "operatorKind": "in",
     2791 + "argumentType": "timetz",
     2792 + "isInfix": true
    2784 2793   },
    2785 2794   "_lt": {
    2786 2795   "operatorName": "<",
    2787  - "argumentType": "topoelement"
     2796 + "operatorKind": "custom",
     2797 + "argumentType": "timetz",
     2798 + "isInfix": true
    2788 2799   },
    2789 2800   "_lte": {
    2790 2801   "operatorName": "<=",
    2791  - "argumentType": "topoelement"
     2802 + "operatorKind": "custom",
     2803 + "argumentType": "timetz",
     2804 + "isInfix": true
    2792 2805   },
    2793 2806   "_neq": {
    2794  - "operatorName": "!=",
    2795  - "argumentType": "topoelement"
     2807 + "operatorName": "<>",
     2808 + "operatorKind": "custom",
     2809 + "argumentType": "timetz",
     2810 + "isInfix": true
    2796 2811   }
    2797 2812   },
    2798 2813   "uuid": {
    2799 2814   "_eq": {
    2800 2815   "operatorName": "=",
    2801  - "argumentType": "uuid"
     2816 + "operatorKind": "equal",
     2817 + "argumentType": "uuid",
     2818 + "isInfix": true
    2802 2819   },
    2803 2820   "_gt": {
    2804 2821   "operatorName": ">",
    2805  - "argumentType": "uuid"
     2822 + "operatorKind": "custom",
     2823 + "argumentType": "uuid",
     2824 + "isInfix": true
    2806 2825   },
    2807 2826   "_gte": {
    2808 2827   "operatorName": ">=",
    2809  - "argumentType": "uuid"
     2828 + "operatorKind": "custom",
     2829 + "argumentType": "uuid",
     2830 + "isInfix": true
     2831 + },
     2832 + "_in": {
     2833 + "operatorName": "IN",
     2834 + "operatorKind": "in",
     2835 + "argumentType": "uuid",
     2836 + "isInfix": true
    2810 2837   },
    2811 2838   "_lt": {
    2812 2839   "operatorName": "<",
    2813  - "argumentType": "uuid"
     2840 + "operatorKind": "custom",
     2841 + "argumentType": "uuid",
     2842 + "isInfix": true
    2814 2843   },
    2815 2844   "_lte": {
    2816 2845   "operatorName": "<=",
    2817  - "argumentType": "uuid"
     2846 + "operatorKind": "custom",
     2847 + "argumentType": "uuid",
     2848 + "isInfix": true
    2818 2849   },
    2819 2850   "_neq": {
    2820  - "operatorName": "!=",
    2821  - "argumentType": "uuid"
     2851 + "operatorName": "<>",
     2852 + "operatorKind": "custom",
     2853 + "argumentType": "uuid",
     2854 + "isInfix": true
    2822 2855   }
    2823 2856   },
    2824 2857   "varchar": {
    2825 2858   "_eq": {
    2826 2859   "operatorName": "=",
     2860 + "operatorKind": "equal",
    2827 2861   "argumentType": "varchar",
    2828 2862   "isInfix": true
    2829 2863   },
    2830 2864   "_gt": {
    2831 2865   "operatorName": ">",
     2866 + "operatorKind": "custom",
    2832 2867   "argumentType": "varchar",
    2833 2868   "isInfix": true
    2834 2869   },
    2835 2870   "_gte": {
    2836 2871   "operatorName": ">=",
     2872 + "operatorKind": "custom",
    2837 2873   "argumentType": "varchar",
    2838 2874   "isInfix": true
    2839 2875   },
    2840 2876   "_ilike": {
    2841 2877   "operatorName": "~~*",
     2878 + "operatorKind": "custom",
     2879 + "argumentType": "varchar",
     2880 + "isInfix": true
     2881 + },
     2882 + "_in": {
     2883 + "operatorName": "IN",
     2884 + "operatorKind": "in",
    2842 2885   "argumentType": "varchar",
    2843 2886   "isInfix": true
    2844 2887   },
    2845 2888   "_iregex": {
    2846 2889   "operatorName": "~*",
     2890 + "operatorKind": "custom",
    2847 2891   "argumentType": "varchar",
    2848 2892   "isInfix": true
    2849 2893   },
    2850 2894   "_like": {
    2851 2895   "operatorName": "~~",
     2896 + "operatorKind": "custom",
    2852 2897   "argumentType": "varchar",
    2853 2898   "isInfix": true
    2854 2899   },
    2855 2900   "_lt": {
    2856 2901   "operatorName": "<",
     2902 + "operatorKind": "custom",
    2857 2903   "argumentType": "varchar",
    2858 2904   "isInfix": true
    2859 2905   },
    2860 2906   "_lte": {
    2861 2907   "operatorName": "<=",
     2908 + "operatorKind": "custom",
    2862 2909   "argumentType": "varchar",
    2863 2910   "isInfix": true
    2864 2911   },
    2865 2912   "_neq": {
    2866 2913   "operatorName": "<>",
     2914 + "operatorKind": "custom",
    2867 2915   "argumentType": "varchar",
    2868 2916   "isInfix": true
    2869 2917   },
    2870 2918   "_nilike": {
    2871 2919   "operatorName": "!~~*",
     2920 + "operatorKind": "custom",
    2872 2921   "argumentType": "varchar",
    2873 2922   "isInfix": true
    2874 2923   },
    2875 2924   "_niregex": {
    2876 2925   "operatorName": "!~*",
     2926 + "operatorKind": "custom",
    2877 2927   "argumentType": "varchar",
    2878 2928   "isInfix": true
    2879 2929   },
    2880 2930   "_nlike": {
    2881 2931   "operatorName": "!~~",
     2932 + "operatorKind": "custom",
    2882 2933   "argumentType": "varchar",
    2883 2934   "isInfix": true
    2884 2935   },
    2885 2936   "_nregex": {
    2886 2937   "operatorName": "!~",
     2938 + "operatorKind": "custom",
    2887 2939   "argumentType": "varchar",
    2888 2940   "isInfix": true
    2889  - },
    2890  - "_nsimilar": {
    2891  - "operatorName": "NOT SIMILAR TO",
    2892  - "argumentType": "varchar"
    2893 2941   },
    2894 2942   "_regex": {
    2895 2943   "operatorName": "~",
     2944 + "operatorKind": "custom",
    2896 2945   "argumentType": "varchar",
    2897 2946   "isInfix": true
    2898 2947   },
    2899  - "_similar": {
    2900  - "operatorName": "SIMILAR TO",
    2901  - "argumentType": "varchar"
    2902  - }
    2903  - },
    2904  - "xid8": {
    2905  - "_eq": {
    2906  - "operatorName": "=",
    2907  - "argumentType": "xid8"
    2908  - },
    2909  - "_gt": {
    2910  - "operatorName": ">",
    2911  - "argumentType": "xid8"
     2948 + "st_coveredby": {
     2949 + "operatorName": "st_coveredby",
     2950 + "operatorKind": "custom",
     2951 + "argumentType": "varchar",
     2952 + "isInfix": false
    2912 2953   },
    2913  - "_gte": {
    2914  - "operatorName": ">=",
    2915  - "argumentType": "xid8"
     2954 + "st_covers": {
     2955 + "operatorName": "st_covers",
     2956 + "operatorKind": "custom",
     2957 + "argumentType": "varchar",
     2958 + "isInfix": false
    2916 2959   },
    2917  - "_lt": {
    2918  - "operatorName": "<",
    2919  - "argumentType": "xid8"
     2960 + "st_intersects": {
     2961 + "operatorName": "st_intersects",
     2962 + "operatorKind": "custom",
     2963 + "argumentType": "varchar",
     2964 + "isInfix": false
    2920 2965   },
    2921  - "_lte": {
    2922  - "operatorName": "<=",
    2923  - "argumentType": "xid8"
     2966 + "st_relatematch": {
     2967 + "operatorName": "st_relatematch",
     2968 + "operatorKind": "custom",
     2969 + "argumentType": "varchar",
     2970 + "isInfix": false
    2924 2971   },
    2925  - "_neq": {
    2926  - "operatorName": "!=",
    2927  - "argumentType": "xid8"
    2928  - }
    2929  - },
    2930  - "xml": {
    2931  - "_eq": {
    2932  - "operatorName": "=",
    2933  - "argumentType": "xml"
    2934  - },
    2935  - "_gt": {
    2936  - "operatorName": ">",
    2937  - "argumentType": "xml"
    2938  - },
    2939  - "_gte": {
    2940  - "operatorName": ">=",
    2941  - "argumentType": "xml"
    2942  - },
    2943  - "_lt": {
    2944  - "operatorName": "<",
    2945  - "argumentType": "xml"
    2946  - },
    2947  - "_lte": {
    2948  - "operatorName": "<=",
    2949  - "argumentType": "xml"
     2972 + "starts_with": {
     2973 + "operatorName": "starts_with",
     2974 + "operatorKind": "custom",
     2975 + "argumentType": "varchar",
     2976 + "isInfix": false
    2950 2977   },
    2951  - "_neq": {
    2952  - "operatorName": "!=",
    2953  - "argumentType": "xml"
     2978 + "ts_match_tt": {
     2979 + "operatorName": "ts_match_tt",
     2980 + "operatorKind": "custom",
     2981 + "argumentType": "varchar",
     2982 + "isInfix": false
    2954 2983   }
    2955 2984   }
    2956 2985   }
    2957 2986   },
    2958  - "excludedSchemas": [
    2959  - "information_schema",
    2960  - "pg_catalog",
    2961  - "tiger",
    2962  - "crdb_internal",
    2963  - "columnar",
    2964  - "columnar_internal"
    2965  - ]
     2987 + "introspectionOptions": {
     2988 + "excludedSchemas": [
     2989 + "information_schema",
     2990 + "pg_catalog",
     2991 + "tiger",
     2992 + "crdb_internal",
     2993 + "columnar",
     2994 + "columnar_internal"
     2995 + ],
     2996 + "unqualifiedSchemasForTables": [
     2997 + "public"
     2998 + ],
     2999 + "unqualifiedSchemasForTypesAndProcedures": [
     3000 + "public",
     3001 + "pg_catalog",
     3002 + "tiger"
     3003 + ],
     3004 + "comparisonOperatorMapping": [
     3005 + {
     3006 + "operatorName": "=",
     3007 + "exposedName": "_eq",
     3008 + "operatorKind": "equal"
     3009 + },
     3010 + {
     3011 + "operatorName": "<=",
     3012 + "exposedName": "_lte",
     3013 + "operatorKind": "custom"
     3014 + },
     3015 + {
     3016 + "operatorName": ">",
     3017 + "exposedName": "_gt",
     3018 + "operatorKind": "custom"
     3019 + },
     3020 + {
     3021 + "operatorName": ">=",
     3022 + "exposedName": "_gte",
     3023 + "operatorKind": "custom"
     3024 + },
     3025 + {
     3026 + "operatorName": "<",
     3027 + "exposedName": "_lt",
     3028 + "operatorKind": "custom"
     3029 + },
     3030 + {
     3031 + "operatorName": "!=",
     3032 + "exposedName": "_neq",
     3033 + "operatorKind": "custom"
     3034 + },
     3035 + {
     3036 + "operatorName": "LIKE",
     3037 + "exposedName": "_like",
     3038 + "operatorKind": "custom"
     3039 + },
     3040 + {
     3041 + "operatorName": "NOT LIKE",
     3042 + "exposedName": "_nlike",
     3043 + "operatorKind": "custom"
     3044 + },
     3045 + {
     3046 + "operatorName": "ILIKE",
     3047 + "exposedName": "_ilike",
     3048 + "operatorKind": "custom"
     3049 + },
     3050 + {
     3051 + "operatorName": "NOT ILIKE",
     3052 + "exposedName": "_nilike",
     3053 + "operatorKind": "custom"
     3054 + },
     3055 + {
     3056 + "operatorName": "SIMILAR TO",
     3057 + "exposedName": "_similar",
     3058 + "operatorKind": "custom"
     3059 + },
     3060 + {
     3061 + "operatorName": "NOT SIMILAR TO",
     3062 + "exposedName": "_nsimilar",
     3063 + "operatorKind": "custom"
     3064 + },
     3065 + {
     3066 + "operatorName": "<>",
     3067 + "exposedName": "_neq",
     3068 + "operatorKind": "custom"
     3069 + },
     3070 + {
     3071 + "operatorName": "~~",
     3072 + "exposedName": "_like",
     3073 + "operatorKind": "custom"
     3074 + },
     3075 + {
     3076 + "operatorName": "!~~",
     3077 + "exposedName": "_nlike",
     3078 + "operatorKind": "custom"
     3079 + },
     3080 + {
     3081 + "operatorName": "~~*",
     3082 + "exposedName": "_ilike",
     3083 + "operatorKind": "custom"
     3084 + },
     3085 + {
     3086 + "operatorName": "!~~*",
     3087 + "exposedName": "_nilike",
     3088 + "operatorKind": "custom"
     3089 + },
     3090 + {
     3091 + "operatorName": "~",
     3092 + "exposedName": "_regex",
     3093 + "operatorKind": "custom"
     3094 + },
     3095 + {
     3096 + "operatorName": "!~",
     3097 + "exposedName": "_nregex",
     3098 + "operatorKind": "custom"
     3099 + },
     3100 + {
     3101 + "operatorName": "~*",
     3102 + "exposedName": "_iregex",
     3103 + "operatorKind": "custom"
     3104 + },
     3105 + {
     3106 + "operatorName": "!~*",
     3107 + "exposedName": "_niregex",
     3108 + "operatorKind": "custom"
     3109 + }
     3110 + ],
     3111 + "introspectPrefixFunctionComparisonOperators": [
     3112 + "box_above",
     3113 + "box_below",
     3114 + "box_contain",
     3115 + "box_contain_pt",
     3116 + "box_contained",
     3117 + "box_left",
     3118 + "box_overabove",
     3119 + "box_overbelow",
     3120 + "box_overlap",
     3121 + "box_overleft",
     3122 + "box_overright",
     3123 + "box_right",
     3124 + "box_same",
     3125 + "circle_above",
     3126 + "circle_below",
     3127 + "circle_contain",
     3128 + "circle_contain_pt",
     3129 + "circle_contained",
     3130 + "circle_left",
     3131 + "circle_overabove",
     3132 + "circle_overbelow",
     3133 + "circle_overlap",
     3134 + "circle_overleft",
     3135 + "circle_overright",
     3136 + "circle_right",
     3137 + "circle_same",
     3138 + "contains_2d",
     3139 + "equals",
     3140 + "geography_overlaps",
     3141 + "geometry_above",
     3142 + "geometry_below",
     3143 + "geometry_contained_3d",
     3144 + "geometry_contains",
     3145 + "geometry_contains_3d",
     3146 + "geometry_contains_nd",
     3147 + "geometry_left",
     3148 + "geometry_overabove",
     3149 + "geometry_overbelow",
     3150 + "geometry_overlaps",
     3151 + "geometry_overlaps_3d",
     3152 + "geometry_overlaps_nd",
     3153 + "geometry_overleft",
     3154 + "geometry_overright",
     3155 + "geometry_right",
     3156 + "geometry_same",
     3157 + "geometry_same_3d",
     3158 + "geometry_same_nd",
     3159 + "geometry_within",
     3160 + "geometry_within_nd",
     3161 + "inet_same_family",
     3162 + "inter_lb",
     3163 + "inter_sb",
     3164 + "inter_sl",
     3165 + "is_contained_2d",
     3166 + "ishorizontal",
     3167 + "isparallel",
     3168 + "isperp",
     3169 + "isvertical",
     3170 + "jsonb_contained",
     3171 + "jsonb_contains",
     3172 + "jsonb_exists",
     3173 + "jsonb_path_exists_opr",
     3174 + "jsonb_path_match_opr",
     3175 + "line_intersect",
     3176 + "line_parallel",
     3177 + "line_perp",
     3178 + "lseg_intersect",
     3179 + "lseg_parallel",
     3180 + "lseg_perp",
     3181 + "network_overlap",
     3182 + "network_sub",
     3183 + "network_sup",
     3184 + "on_pb",
     3185 + "on_pl",
     3186 + "on_ppath",
     3187 + "on_ps",
     3188 + "on_sb",
     3189 + "on_sl",
     3190 + "overlaps_2d",
     3191 + "path_contain_pt",
     3192 + "path_inter",
     3193 + "point_above",
     3194 + "point_below",
     3195 + "point_horiz",
     3196 + "point_left",
     3197 + "point_right",
     3198 + "point_vert",
     3199 + "poly_above",
     3200 + "poly_below",
     3201 + "poly_contain",
     3202 + "poly_contain_pt",
     3203 + "poly_contained",
     3204 + "poly_left",
     3205 + "poly_overabove",
     3206 + "poly_overbelow",
     3207 + "poly_overlap",
     3208 + "poly_overleft",
     3209 + "poly_overright",
     3210 + "poly_right",
     3211 + "poly_same",
     3212 + "pt_contained_poly",
     3213 + "st_3dintersects",
     3214 + "st_contains",
     3215 + "st_containsproperly",
     3216 + "st_coveredby",
     3217 + "st_covers",
     3218 + "st_crosses",
     3219 + "st_disjoint",
     3220 + "st_equals",
     3221 + "st_intersects",
     3222 + "st_isvalid",
     3223 + "st_orderingequals",
     3224 + "st_overlaps",
     3225 + "st_relatematch",
     3226 + "st_touches",
     3227 + "st_within",
     3228 + "starts_with",
     3229 + "ts_match_qv",
     3230 + "ts_match_tq",
     3231 + "ts_match_tt",
     3232 + "ts_match_vq",
     3233 + "tsq_mcontained",
     3234 + "tsq_mcontains",
     3235 + "xmlexists",
     3236 + "xmlvalidate",
     3237 + "xpath_exists"
     3238 + ]
     3239 + },
     3240 + "mutationsVersion": null
    2966 3241  }
    2967 3242   
  • ■ ■ ■ ■ ■ ■
    v3/crates/engine/tests/ndc-postgres-configuration/regenerate.sh
     1 +#!/usr/bin/env bash
     2 + 
     3 +# Regenerates the configuration.json file from the current database schema.
     4 + 
     5 +set -e
     6 +set -u
     7 + 
     8 +cd "$(dirname -- "${BASH_SOURCE[0]}")"
     9 +ROOT_DIR="$(cd -- ../../../.. && pwd)"
     10 +NDC_POSTGRES_DIR="${ROOT_DIR}/../ndc-postgres"
     11 + 
     12 +function ndc-postgres-cli {
     13 + "${NDC_POSTGRES_DIR}/target/debug/ndc-postgres-cli" "$@"
     14 +}
     15 + 
     16 +echo 'INFO: This script assumes that you have checked out and updated ndc-postgres next to this repository.'
     17 + 
     18 +echo 'Building ndc-postgres-cli...'
     19 +(
     20 + cd "$NDC_POSTGRES_DIR"
     21 + if [[ -e .envrc.local ]]; then
     22 + eval "$(direnv export bash)"
     23 + fi
     24 + cargo build --bin ndc-postgres-cli
     25 +)
     26 + 
     27 +echo 'Starting PostgreSQL...'
     28 +docker compose up --wait postgres
     29 + 
     30 +echo 'Updating the configuration...'
     31 +export CONNECTION_URI='postgresql://postgres:password@localhost:64001'
     32 +ndc-postgres-cli update
     33 + 
  • ■ ■ ■ ■ ■ ■
    v3/crates/engine/tests/ndc-postgres-configuration/schema.json
     1 +{
     2 + "$schema": "http://json-schema.org/draft-07/schema#",
     3 + "title": "RawConfiguration",
     4 + "description": "The parsed connector configuration.",
     5 + "oneOf": [
     6 + {
     7 + "description": "Initial configuration, just enough to connect to a database and elaborate a full 'Configuration'.",
     8 + "type": "object",
     9 + "required": ["connectionSettings", "version"],
     10 + "properties": {
     11 + "version": {
     12 + "type": "string",
     13 + "enum": ["3"]
     14 + },
     15 + "$schema": {
     16 + "description": "Jsonschema of the configuration format.",
     17 + "default": null,
     18 + "type": ["string", "null"]
     19 + },
     20 + "connectionSettings": {
     21 + "description": "Database connection settings.",
     22 + "allOf": [
     23 + {
     24 + "$ref": "#/definitions/DatabaseConnectionSettings"
     25 + }
     26 + ]
     27 + },
     28 + "metadata": {
     29 + "description": "Connector metadata.",
     30 + "default": {
     31 + "tables": {},
     32 + "compositeTypes": {},
     33 + "nativeQueries": {},
     34 + "aggregateFunctions": {},
     35 + "comparisonOperators": {}
     36 + },
     37 + "allOf": [
     38 + {
     39 + "$ref": "#/definitions/Metadata"
     40 + }
     41 + ]
     42 + },
     43 + "introspectionOptions": {
     44 + "description": "Database introspection options.",
     45 + "default": {
     46 + "excludedSchemas": [
     47 + "information_schema",
     48 + "pg_catalog",
     49 + "tiger",
     50 + "crdb_internal",
     51 + "columnar",
     52 + "columnar_internal"
     53 + ],
     54 + "unqualifiedSchemasForTables": ["public"],
     55 + "unqualifiedSchemasForTypesAndProcedures": [
     56 + "public",
     57 + "pg_catalog",
     58 + "tiger"
     59 + ],
     60 + "comparisonOperatorMapping": [
     61 + {
     62 + "operatorName": "=",
     63 + "exposedName": "_eq",
     64 + "operatorKind": "equal"
     65 + },
     66 + {
     67 + "operatorName": "<=",
     68 + "exposedName": "_lte",
     69 + "operatorKind": "custom"
     70 + },
     71 + {
     72 + "operatorName": ">",
     73 + "exposedName": "_gt",
     74 + "operatorKind": "custom"
     75 + },
     76 + {
     77 + "operatorName": ">=",
     78 + "exposedName": "_gte",
     79 + "operatorKind": "custom"
     80 + },
     81 + {
     82 + "operatorName": "<",
     83 + "exposedName": "_lt",
     84 + "operatorKind": "custom"
     85 + },
     86 + {
     87 + "operatorName": "!=",
     88 + "exposedName": "_neq",
     89 + "operatorKind": "custom"
     90 + },
     91 + {
     92 + "operatorName": "LIKE",
     93 + "exposedName": "_like",
     94 + "operatorKind": "custom"
     95 + },
     96 + {
     97 + "operatorName": "NOT LIKE",
     98 + "exposedName": "_nlike",
     99 + "operatorKind": "custom"
     100 + },
     101 + {
     102 + "operatorName": "ILIKE",
     103 + "exposedName": "_ilike",
     104 + "operatorKind": "custom"
     105 + },
     106 + {
     107 + "operatorName": "NOT ILIKE",
     108 + "exposedName": "_nilike",
     109 + "operatorKind": "custom"
     110 + },
     111 + {
     112 + "operatorName": "SIMILAR TO",
     113 + "exposedName": "_similar",
     114 + "operatorKind": "custom"
     115 + },
     116 + {
     117 + "operatorName": "NOT SIMILAR TO",
     118 + "exposedName": "_nsimilar",
     119 + "operatorKind": "custom"
     120 + },
     121 + {
     122 + "operatorName": "<>",
     123 + "exposedName": "_neq",
     124 + "operatorKind": "custom"
     125 + },
     126 + {
     127 + "operatorName": "~~",
     128 + "exposedName": "_like",
     129 + "operatorKind": "custom"
     130 + },
     131 + {
     132 + "operatorName": "!~~",
     133 + "exposedName": "_nlike",
     134 + "operatorKind": "custom"
     135 + },
     136 + {
     137 + "operatorName": "~~*",
     138 + "exposedName": "_ilike",
     139 + "operatorKind": "custom"
     140 + },
     141 + {
     142 + "operatorName": "!~~*",
     143 + "exposedName": "_nilike",
     144 + "operatorKind": "custom"
     145 + },
     146 + {
     147 + "operatorName": "~",
     148 + "exposedName": "_regex",
     149 + "operatorKind": "custom"
     150 + },
     151 + {
     152 + "operatorName": "!~",
     153 + "exposedName": "_nregex",
     154 + "operatorKind": "custom"
     155 + },
     156 + {
     157 + "operatorName": "~*",
     158 + "exposedName": "_iregex",
     159 + "operatorKind": "custom"
     160 + },
     161 + {
     162 + "operatorName": "!~*",
     163 + "exposedName": "_niregex",
     164 + "operatorKind": "custom"
     165 + }
     166 + ],
     167 + "introspectPrefixFunctionComparisonOperators": [
     168 + "box_above",
     169 + "box_below",
     170 + "box_contain",
     171 + "box_contain_pt",
     172 + "box_contained",
     173 + "box_left",
     174 + "box_overabove",
     175 + "box_overbelow",
     176 + "box_overlap",
     177 + "box_overleft",
     178 + "box_overright",
     179 + "box_right",
     180 + "box_same",
     181 + "circle_above",
     182 + "circle_below",
     183 + "circle_contain",
     184 + "circle_contain_pt",
     185 + "circle_contained",
     186 + "circle_left",
     187 + "circle_overabove",
     188 + "circle_overbelow",
     189 + "circle_overlap",
     190 + "circle_overleft",
     191 + "circle_overright",
     192 + "circle_right",
     193 + "circle_same",
     194 + "contains_2d",
     195 + "equals",
     196 + "geography_overlaps",
     197 + "geometry_above",
     198 + "geometry_below",
     199 + "geometry_contained_3d",
     200 + "geometry_contains",
     201 + "geometry_contains_3d",
     202 + "geometry_contains_nd",
     203 + "geometry_left",
     204 + "geometry_overabove",
     205 + "geometry_overbelow",
     206 + "geometry_overlaps",
     207 + "geometry_overlaps_3d",
     208 + "geometry_overlaps_nd",
     209 + "geometry_overleft",
     210 + "geometry_overright",
     211 + "geometry_right",
     212 + "geometry_same",
     213 + "geometry_same_3d",
     214 + "geometry_same_nd",
     215 + "geometry_within",
     216 + "geometry_within_nd",
     217 + "inet_same_family",
     218 + "inter_lb",
     219 + "inter_sb",
     220 + "inter_sl",
     221 + "is_contained_2d",
     222 + "ishorizontal",
     223 + "isparallel",
     224 + "isperp",
     225 + "isvertical",
     226 + "jsonb_contained",
     227 + "jsonb_contains",
     228 + "jsonb_exists",
     229 + "jsonb_path_exists_opr",
     230 + "jsonb_path_match_opr",
     231 + "line_intersect",
     232 + "line_parallel",
     233 + "line_perp",
     234 + "lseg_intersect",
     235 + "lseg_parallel",
     236 + "lseg_perp",
     237 + "network_overlap",
     238 + "network_sub",
     239 + "network_sup",
     240 + "on_pb",
     241 + "on_pl",
     242 + "on_ppath",
     243 + "on_ps",
     244 + "on_sb",
     245 + "on_sl",
     246 + "overlaps_2d",
     247 + "path_contain_pt",
     248 + "path_inter",
     249 + "point_above",
     250 + "point_below",
     251 + "point_horiz",
     252 + "point_left",
     253 + "point_right",
     254 + "point_vert",
     255 + "poly_above",
     256 + "poly_below",
     257 + "poly_contain",
     258 + "poly_contain_pt",
     259 + "poly_contained",
     260 + "poly_left",
     261 + "poly_overabove",
     262 + "poly_overbelow",
     263 + "poly_overlap",
     264 + "poly_overleft",
     265 + "poly_overright",
     266 + "poly_right",
     267 + "poly_same",
     268 + "pt_contained_poly",
     269 + "st_3dintersects",
     270 + "st_contains",
     271 + "st_containsproperly",
     272 + "st_coveredby",
     273 + "st_covers",
     274 + "st_crosses",
     275 + "st_disjoint",
     276 + "st_equals",
     277 + "st_intersects",
     278 + "st_isvalid",
     279 + "st_orderingequals",
     280 + "st_overlaps",
     281 + "st_relatematch",
     282 + "st_touches",
     283 + "st_within",
     284 + "starts_with",
     285 + "ts_match_qv",
     286 + "ts_match_tq",
     287 + "ts_match_tt",
     288 + "ts_match_vq",
     289 + "tsq_mcontained",
     290 + "tsq_mcontains",
     291 + "xmlexists",
     292 + "xmlvalidate",
     293 + "xpath_exists"
     294 + ]
     295 + },
     296 + "allOf": [
     297 + {
     298 + "$ref": "#/definitions/IntrospectionOptions"
     299 + }
     300 + ]
     301 + },
     302 + "mutationsVersion": {
     303 + "description": "Which version of the generated mutation procedures to include in the schema response",
     304 + "default": null,
     305 + "anyOf": [
     306 + {
     307 + "$ref": "#/definitions/MutationsVersion"
     308 + },
     309 + {
     310 + "type": "null"
     311 + }
     312 + ]
     313 + }
     314 + }
     315 + }
     316 + ],
     317 + "definitions": {
     318 + "DatabaseConnectionSettings": {
     319 + "description": "Database connection settings.",
     320 + "type": "object",
     321 + "required": ["connectionUri"],
     322 + "properties": {
     323 + "connectionUri": {
     324 + "description": "Connection string for a Postgres-compatible database.",
     325 + "allOf": [
     326 + {
     327 + "$ref": "#/definitions/ConnectionUri"
     328 + }
     329 + ]
     330 + },
     331 + "poolSettings": {
     332 + "description": "Connection pool settings.",
     333 + "default": {
     334 + "maxConnections": 50,
     335 + "poolTimeout": 30,
     336 + "idleTimeout": 180,
     337 + "connectionLifetime": 600
     338 + },
     339 + "allOf": [
     340 + {
     341 + "$ref": "#/definitions/PoolSettings"
     342 + }
     343 + ]
     344 + },
     345 + "isolationLevel": {
     346 + "description": "Query isolation level.",
     347 + "default": "ReadCommitted",
     348 + "allOf": [
     349 + {
     350 + "$ref": "#/definitions/IsolationLevel"
     351 + }
     352 + ]
     353 + }
     354 + }
     355 + },
     356 + "ConnectionUri": {
     357 + "$ref": "#/definitions/Secret"
     358 + },
     359 + "Secret": {
     360 + "anyOf": [
     361 + {
     362 + "type": "string"
     363 + },
     364 + {
     365 + "type": "object",
     366 + "required": ["variable"],
     367 + "properties": {
     368 + "variable": {
     369 + "$ref": "#/definitions/Variable"
     370 + }
     371 + }
     372 + }
     373 + ]
     374 + },
     375 + "Variable": {
     376 + "description": "The name of an an environment variable.",
     377 + "type": "string"
     378 + },
     379 + "PoolSettings": {
     380 + "description": "Settings for the PostgreSQL connection pool",
     381 + "type": "object",
     382 + "properties": {
     383 + "maxConnections": {
     384 + "description": "maximum number of pool connections",
     385 + "default": 50,
     386 + "type": "integer",
     387 + "format": "uint32",
     388 + "minimum": 0.0
     389 + },
     390 + "poolTimeout": {
     391 + "description": "timeout for acquiring a connection from the pool (seconds)",
     392 + "default": 30,
     393 + "type": "integer",
     394 + "format": "uint64",
     395 + "minimum": 0.0
     396 + },
     397 + "idleTimeout": {
     398 + "description": "idle timeout for releasing a connection from the pool (seconds)",
     399 + "default": 180,
     400 + "type": ["integer", "null"],
     401 + "format": "uint64",
     402 + "minimum": 0.0
     403 + },
     404 + "connectionLifetime": {
     405 + "description": "maximum lifetime for an individual connection (seconds)",
     406 + "default": 600,
     407 + "type": ["integer", "null"],
     408 + "format": "uint64",
     409 + "minimum": 0.0
     410 + }
     411 + }
     412 + },
     413 + "IsolationLevel": {
     414 + "description": "The isolation level of the transaction in which a query is executed.",
     415 + "oneOf": [
     416 + {
     417 + "description": "Prevents reading data from another uncommitted transaction.",
     418 + "type": "string",
     419 + "enum": ["ReadCommitted"]
     420 + },
     421 + {
     422 + "description": "Reading the same data twice is guaranteed to return the same result.",
     423 + "type": "string",
     424 + "enum": ["RepeatableRead"]
     425 + },
     426 + {
     427 + "description": "Concurrent transactions behave identically to serializing them one at a time.",
     428 + "type": "string",
     429 + "enum": ["Serializable"]
     430 + }
     431 + ]
     432 + },
     433 + "Metadata": {
     434 + "description": "Metadata information.",
     435 + "type": "object",
     436 + "properties": {
     437 + "tables": {
     438 + "default": {},
     439 + "allOf": [
     440 + {
     441 + "$ref": "#/definitions/TablesInfo"
     442 + }
     443 + ]
     444 + },
     445 + "compositeTypes": {
     446 + "default": {},
     447 + "allOf": [
     448 + {
     449 + "$ref": "#/definitions/CompositeTypes"
     450 + }
     451 + ]
     452 + },
     453 + "nativeQueries": {
     454 + "default": {},
     455 + "allOf": [
     456 + {
     457 + "$ref": "#/definitions/NativeQueries"
     458 + }
     459 + ]
     460 + },
     461 + "aggregateFunctions": {
     462 + "default": {},
     463 + "allOf": [
     464 + {
     465 + "$ref": "#/definitions/AggregateFunctions"
     466 + }
     467 + ]
     468 + },
     469 + "comparisonOperators": {
     470 + "default": {},
     471 + "allOf": [
     472 + {
     473 + "$ref": "#/definitions/ComparisonOperators"
     474 + }
     475 + ]
     476 + }
     477 + }
     478 + },
     479 + "TablesInfo": {
     480 + "description": "Mapping from a \"table\" name to its information.",
     481 + "type": "object",
     482 + "additionalProperties": {
     483 + "$ref": "#/definitions/TableInfo"
     484 + }
     485 + },
     486 + "TableInfo": {
     487 + "description": "Information about a database table (or any other kind of relation).",
     488 + "type": "object",
     489 + "required": ["columns", "schemaName", "tableName"],
     490 + "properties": {
     491 + "schemaName": {
     492 + "type": "string"
     493 + },
     494 + "tableName": {
     495 + "type": "string"
     496 + },
     497 + "columns": {
     498 + "type": "object",
     499 + "additionalProperties": {
     500 + "$ref": "#/definitions/ColumnInfo"
     501 + }
     502 + },
     503 + "uniquenessConstraints": {
     504 + "default": {},
     505 + "allOf": [
     506 + {
     507 + "$ref": "#/definitions/UniquenessConstraints"
     508 + }
     509 + ]
     510 + },
     511 + "foreignRelations": {
     512 + "default": {},
     513 + "allOf": [
     514 + {
     515 + "$ref": "#/definitions/ForeignRelations"
     516 + }
     517 + ]
     518 + },
     519 + "description": {
     520 + "default": null,
     521 + "type": ["string", "null"]
     522 + }
     523 + }
     524 + },
     525 + "ColumnInfo": {
     526 + "description": "Information about a database column.",
     527 + "type": "object",
     528 + "required": ["name", "type"],
     529 + "properties": {
     530 + "name": {
     531 + "type": "string"
     532 + },
     533 + "type": {
     534 + "$ref": "#/definitions/Type"
     535 + },
     536 + "nullable": {
     537 + "default": "nullable",
     538 + "allOf": [
     539 + {
     540 + "$ref": "#/definitions/Nullable"
     541 + }
     542 + ]
     543 + },
     544 + "hasDefault": {
     545 + "$ref": "#/definitions/HasDefault"
     546 + },
     547 + "isIdentity": {
     548 + "$ref": "#/definitions/IsIdentity"
     549 + },
     550 + "isGenerated": {
     551 + "$ref": "#/definitions/IsGenerated"
     552 + },
     553 + "description": {
     554 + "default": null,
     555 + "type": ["string", "null"]
     556 + }
     557 + }
     558 + },
     559 + "Type": {
     560 + "description": "The type of values that a column, field, or argument may take.",
     561 + "oneOf": [
     562 + {
     563 + "type": "object",
     564 + "required": ["scalarType"],
     565 + "properties": {
     566 + "scalarType": {
     567 + "$ref": "#/definitions/ScalarType"
     568 + }
     569 + },
     570 + "additionalProperties": false
     571 + },
     572 + {
     573 + "type": "object",
     574 + "required": ["compositeType"],
     575 + "properties": {
     576 + "compositeType": {
     577 + "type": "string"
     578 + }
     579 + },
     580 + "additionalProperties": false
     581 + },
     582 + {
     583 + "type": "object",
     584 + "required": ["arrayType"],
     585 + "properties": {
     586 + "arrayType": {
     587 + "$ref": "#/definitions/Type"
     588 + }
     589 + },
     590 + "additionalProperties": false
     591 + }
     592 + ]
     593 + },
     594 + "ScalarType": {
     595 + "description": "A Scalar Type.",
     596 + "type": "string"
     597 + },
     598 + "Nullable": {
     599 + "description": "Can this column contain null values",
     600 + "type": "string",
     601 + "enum": ["nullable", "nonNullable"]
     602 + },
     603 + "HasDefault": {
     604 + "description": "Does this column have a default value.",
     605 + "type": "string",
     606 + "enum": ["noDefault", "hasDefault"]
     607 + },
     608 + "IsIdentity": {
     609 + "description": "Is this column an identity column.",
     610 + "type": "string",
     611 + "enum": ["notIdentity", "identityByDefault", "identityAlways"]
     612 + },
     613 + "IsGenerated": {
     614 + "description": "Is this column a generated column.",
     615 + "type": "string",
     616 + "enum": ["notGenerated", "stored"]
     617 + },
     618 + "UniquenessConstraints": {
     619 + "description": "A mapping from the name of a unique constraint to its value.",
     620 + "type": "object",
     621 + "additionalProperties": {
     622 + "$ref": "#/definitions/UniquenessConstraint"
     623 + }
     624 + },
     625 + "UniquenessConstraint": {
     626 + "description": "The set of columns that make up a uniqueness constraint.",
     627 + "type": "array",
     628 + "items": {
     629 + "type": "string"
     630 + },
     631 + "uniqueItems": true
     632 + },
     633 + "ForeignRelations": {
     634 + "description": "A mapping from the name of a foreign key constraint to its value.",
     635 + "type": "object",
     636 + "additionalProperties": {
     637 + "$ref": "#/definitions/ForeignRelation"
     638 + }
     639 + },
     640 + "ForeignRelation": {
     641 + "description": "A foreign key constraint.",
     642 + "type": "object",
     643 + "required": ["columnMapping", "foreignTable"],
     644 + "properties": {
     645 + "foreignSchema": {
     646 + "type": ["string", "null"]
     647 + },
     648 + "foreignTable": {
     649 + "type": "string"
     650 + },
     651 + "columnMapping": {
     652 + "type": "object",
     653 + "additionalProperties": {
     654 + "type": "string"
     655 + }
     656 + }
     657 + }
     658 + },
     659 + "CompositeTypes": {
     660 + "description": "Map of all known composite types.",
     661 + "type": "object",
     662 + "additionalProperties": {
     663 + "$ref": "#/definitions/CompositeType"
     664 + }
     665 + },
     666 + "CompositeType": {
     667 + "description": "Information about a composite type. These are very similar to tables, but with the crucial difference that composite types do not support constraints (such as NOT NULL).",
     668 + "type": "object",
     669 + "required": ["fields", "name"],
     670 + "properties": {
     671 + "name": {
     672 + "type": "string"
     673 + },
     674 + "fields": {
     675 + "type": "object",
     676 + "additionalProperties": {
     677 + "$ref": "#/definitions/FieldInfo"
     678 + }
     679 + },
     680 + "description": {
     681 + "default": null,
     682 + "type": ["string", "null"]
     683 + }
     684 + }
     685 + },
     686 + "FieldInfo": {
     687 + "description": "Information about a composite type field.",
     688 + "type": "object",
     689 + "required": ["name", "type"],
     690 + "properties": {
     691 + "name": {
     692 + "type": "string"
     693 + },
     694 + "type": {
     695 + "$ref": "#/definitions/Type"
     696 + },
     697 + "description": {
     698 + "default": null,
     699 + "type": ["string", "null"]
     700 + }
     701 + }
     702 + },
     703 + "NativeQueries": {
     704 + "description": "Metadata information of native queries.",
     705 + "type": "object",
     706 + "additionalProperties": {
     707 + "$ref": "#/definitions/NativeQueryInfo"
     708 + }
     709 + },
     710 + "NativeQueryInfo": {
     711 + "description": "Information about a Native Query",
     712 + "type": "object",
     713 + "required": ["columns", "sql"],
     714 + "properties": {
     715 + "sql": {
     716 + "description": "SQL expression to use for the Native Query. We can interpolate values using `{{variable_name}}` syntax, such as `SELECT * FROM authors WHERE name = {{author_name}}`",
     717 + "allOf": [
     718 + {
     719 + "$ref": "#/definitions/Native_query_sql"
     720 + }
     721 + ]
     722 + },
     723 + "columns": {
     724 + "description": "Columns returned by the Native Query",
     725 + "type": "object",
     726 + "additionalProperties": {
     727 + "$ref": "#/definitions/ReadOnlyColumnInfo"
     728 + }
     729 + },
     730 + "arguments": {
     731 + "description": "Names and types of arguments that can be passed to this Native Query",
     732 + "default": {},
     733 + "type": "object",
     734 + "additionalProperties": {
     735 + "$ref": "#/definitions/ReadOnlyColumnInfo"
     736 + }
     737 + },
     738 + "description": {
     739 + "default": null,
     740 + "type": ["string", "null"]
     741 + },
     742 + "isProcedure": {
     743 + "description": "True if this native query mutates the database",
     744 + "type": "boolean"
     745 + }
     746 + }
     747 + },
     748 + "Native_query_sql": {
     749 + "type": "string"
     750 + },
     751 + "ReadOnlyColumnInfo": {
     752 + "description": "Information about a native query column.",
     753 + "type": "object",
     754 + "required": ["name", "type"],
     755 + "properties": {
     756 + "name": {
     757 + "type": "string"
     758 + },
     759 + "type": {
     760 + "$ref": "#/definitions/Type"
     761 + },
     762 + "nullable": {
     763 + "default": "nullable",
     764 + "allOf": [
     765 + {
     766 + "$ref": "#/definitions/Nullable"
     767 + }
     768 + ]
     769 + },
     770 + "description": {
     771 + "default": null,
     772 + "type": ["string", "null"]
     773 + }
     774 + }
     775 + },
     776 + "AggregateFunctions": {
     777 + "description": "All supported aggregate functions, grouped by type.",
     778 + "type": "object",
     779 + "additionalProperties": {
     780 + "type": "object",
     781 + "additionalProperties": {
     782 + "$ref": "#/definitions/AggregateFunction"
     783 + }
     784 + }
     785 + },
     786 + "AggregateFunction": {
     787 + "type": "object",
     788 + "required": ["returnType"],
     789 + "properties": {
     790 + "returnType": {
     791 + "$ref": "#/definitions/ScalarType"
     792 + }
     793 + }
     794 + },
     795 + "ComparisonOperators": {
     796 + "description": "The complete list of supported binary operators for scalar types. Not all of these are supported for every type.",
     797 + "type": "object",
     798 + "additionalProperties": {
     799 + "type": "object",
     800 + "additionalProperties": {
     801 + "$ref": "#/definitions/ComparisonOperator"
     802 + }
     803 + }
     804 + },
     805 + "ComparisonOperator": {
     806 + "description": "Represents a postgres binary comparison operator",
     807 + "type": "object",
     808 + "required": ["argumentType", "operatorKind", "operatorName"],
     809 + "properties": {
     810 + "operatorName": {
     811 + "type": "string"
     812 + },
     813 + "operatorKind": {
     814 + "$ref": "#/definitions/OperatorKind"
     815 + },
     816 + "argumentType": {
     817 + "$ref": "#/definitions/ScalarType"
     818 + },
     819 + "isInfix": {
     820 + "default": true,
     821 + "type": "boolean"
     822 + }
     823 + }
     824 + },
     825 + "OperatorKind": {
     826 + "description": "Is it a built-in operator, or a custom operator.",
     827 + "type": "string",
     828 + "enum": ["equal", "in", "custom"]
     829 + },
     830 + "IntrospectionOptions": {
     831 + "description": "Options which only influence how the configuration is updated.",
     832 + "type": "object",
     833 + "properties": {
     834 + "excludedSchemas": {
     835 + "description": "Schemas which are excluded from introspection. The default setting will exclude the internal schemas of Postgres, Citus, Cockroach, and the PostGIS extension.",
     836 + "default": [
     837 + "information_schema",
     838 + "pg_catalog",
     839 + "tiger",
     840 + "crdb_internal",
     841 + "columnar",
     842 + "columnar_internal"
     843 + ],
     844 + "type": "array",
     845 + "items": {
     846 + "type": "string"
     847 + }
     848 + },
     849 + "unqualifiedSchemasForTables": {
     850 + "description": "The names of Tables and Views in these schemas will be returned unqualified. The default setting will set the `public` schema as unqualified.",
     851 + "default": ["public"],
     852 + "type": "array",
     853 + "items": {
     854 + "type": "string"
     855 + }
     856 + },
     857 + "unqualifiedSchemasForTypesAndProcedures": {
     858 + "description": "The types and procedures in these schemas will be returned unqualified.",
     859 + "default": ["public", "pg_catalog", "tiger"],
     860 + "type": "array",
     861 + "items": {
     862 + "type": "string"
     863 + }
     864 + },
     865 + "comparisonOperatorMapping": {
     866 + "description": "The mapping of comparison operator names to apply when updating the configuration",
     867 + "default": [
     868 + {
     869 + "operatorName": "=",
     870 + "exposedName": "_eq",
     871 + "operatorKind": "equal"
     872 + },
     873 + {
     874 + "operatorName": "<=",
     875 + "exposedName": "_lte",
     876 + "operatorKind": "custom"
     877 + },
     878 + {
     879 + "operatorName": ">",
     880 + "exposedName": "_gt",
     881 + "operatorKind": "custom"
     882 + },
     883 + {
     884 + "operatorName": ">=",
     885 + "exposedName": "_gte",
     886 + "operatorKind": "custom"
     887 + },
     888 + {
     889 + "operatorName": "<",
     890 + "exposedName": "_lt",
     891 + "operatorKind": "custom"
     892 + },
     893 + {
     894 + "operatorName": "!=",
     895 + "exposedName": "_neq",
     896 + "operatorKind": "custom"
     897 + },
     898 + {
     899 + "operatorName": "LIKE",
     900 + "exposedName": "_like",
     901 + "operatorKind": "custom"
     902 + },
     903 + {
     904 + "operatorName": "NOT LIKE",
     905 + "exposedName": "_nlike",
     906 + "operatorKind": "custom"
     907 + },
     908 + {
     909 + "operatorName": "ILIKE",
     910 + "exposedName": "_ilike",
     911 + "operatorKind": "custom"
     912 + },
     913 + {
     914 + "operatorName": "NOT ILIKE",
     915 + "exposedName": "_nilike",
     916 + "operatorKind": "custom"
     917 + },
     918 + {
     919 + "operatorName": "SIMILAR TO",
     920 + "exposedName": "_similar",
     921 + "operatorKind": "custom"
     922 + },
     923 + {
     924 + "operatorName": "NOT SIMILAR TO",
     925 + "exposedName": "_nsimilar",
     926 + "operatorKind": "custom"
     927 + },
     928 + {
     929 + "operatorName": "<>",
     930 + "exposedName": "_neq",
     931 + "operatorKind": "custom"
     932 + },
     933 + {
     934 + "operatorName": "~~",
     935 + "exposedName": "_like",
     936 + "operatorKind": "custom"
     937 + },
     938 + {
     939 + "operatorName": "!~~",
     940 + "exposedName": "_nlike",
     941 + "operatorKind": "custom"
     942 + },
     943 + {
     944 + "operatorName": "~~*",
     945 + "exposedName": "_ilike",
     946 + "operatorKind": "custom"
     947 + },
     948 + {
     949 + "operatorName": "!~~*",
     950 + "exposedName": "_nilike",
     951 + "operatorKind": "custom"
     952 + },
     953 + {
     954 + "operatorName": "~",
     955 + "exposedName": "_regex",
     956 + "operatorKind": "custom"
     957 + },
     958 + {
     959 + "operatorName": "!~",
     960 + "exposedName": "_nregex",
     961 + "operatorKind": "custom"
     962 + },
     963 + {
     964 + "operatorName": "~*",
     965 + "exposedName": "_iregex",
     966 + "operatorKind": "custom"
     967 + },
     968 + {
     969 + "operatorName": "!~*",
     970 + "exposedName": "_niregex",
     971 + "operatorKind": "custom"
     972 + }
     973 + ],
     974 + "type": "array",
     975 + "items": {
     976 + "$ref": "#/definitions/ComparisonOperatorMapping"
     977 + }
     978 + },
     979 + "introspectPrefixFunctionComparisonOperators": {
     980 + "description": "Which prefix functions (i.e., non-infix operators) to generate introspection metadata for.\n\nThis list will accept any boolean-returning function taking two concrete scalar types as arguments.\n\nThe default includes comparisons for various build-in types as well as those of PostGIS.",
     981 + "default": [
     982 + "box_above",
     983 + "box_below",
     984 + "box_contain",
     985 + "box_contain_pt",
     986 + "box_contained",
     987 + "box_left",
     988 + "box_overabove",
     989 + "box_overbelow",
     990 + "box_overlap",
     991 + "box_overleft",
     992 + "box_overright",
     993 + "box_right",
     994 + "box_same",
     995 + "circle_above",
     996 + "circle_below",
     997 + "circle_contain",
     998 + "circle_contain_pt",
     999 + "circle_contained",
     1000 + "circle_left",
     1001 + "circle_overabove",
     1002 + "circle_overbelow",
     1003 + "circle_overlap",
     1004 + "circle_overleft",
     1005 + "circle_overright",
     1006 + "circle_right",
     1007 + "circle_same",
     1008 + "contains_2d",
     1009 + "equals",
     1010 + "geography_overlaps",
     1011 + "geometry_above",
     1012 + "geometry_below",
     1013 + "geometry_contained_3d",
     1014 + "geometry_contains",
     1015 + "geometry_contains_3d",
     1016 + "geometry_contains_nd",
     1017 + "geometry_left",
     1018 + "geometry_overabove",
     1019 + "geometry_overbelow",
     1020 + "geometry_overlaps",
     1021 + "geometry_overlaps_3d",
     1022 + "geometry_overlaps_nd",
     1023 + "geometry_overleft",
     1024 + "geometry_overright",
     1025 + "geometry_right",
     1026 + "geometry_same",
     1027 + "geometry_same_3d",
     1028 + "geometry_same_nd",
     1029 + "geometry_within",
     1030 + "geometry_within_nd",
     1031 + "inet_same_family",
     1032 + "inter_lb",
     1033 + "inter_sb",
     1034 + "inter_sl",
     1035 + "is_contained_2d",
     1036 + "ishorizontal",
     1037 + "isparallel",
     1038 + "isperp",
     1039 + "isvertical",
     1040 + "jsonb_contained",
     1041 + "jsonb_contains",
     1042 + "jsonb_exists",
     1043 + "jsonb_path_exists_opr",
     1044 + "jsonb_path_match_opr",
     1045 + "line_intersect",
     1046 + "line_parallel",
     1047 + "line_perp",
     1048 + "lseg_intersect",
     1049 + "lseg_parallel",
     1050 + "lseg_perp",
     1051 + "network_overlap",
     1052 + "network_sub",
     1053 + "network_sup",
     1054 + "on_pb",
     1055 + "on_pl",
     1056 + "on_ppath",
     1057 + "on_ps",
     1058 + "on_sb",
     1059 + "on_sl",
     1060 + "overlaps_2d",
     1061 + "path_contain_pt",
     1062 + "path_inter",
     1063 + "point_above",
     1064 + "point_below",
     1065 + "point_horiz",
     1066 + "point_left",
     1067 + "point_right",
     1068 + "point_vert",
     1069 + "poly_above",
     1070 + "poly_below",
     1071 + "poly_contain",
     1072 + "poly_contain_pt",
     1073 + "poly_contained",
     1074 + "poly_left",
     1075 + "poly_overabove",
     1076 + "poly_overbelow",
     1077 + "poly_overlap",
     1078 + "poly_overleft",
     1079 + "poly_overright",
     1080 + "poly_right",
     1081 + "poly_same",
     1082 + "pt_contained_poly",
     1083 + "st_3dintersects",
     1084 + "st_contains",
     1085 + "st_containsproperly",
     1086 + "st_coveredby",
     1087 + "st_covers",
     1088 + "st_crosses",
     1089 + "st_disjoint",
     1090 + "st_equals",
     1091 + "st_intersects",
     1092 + "st_isvalid",
     1093 + "st_orderingequals",
     1094 + "st_overlaps",
     1095 + "st_relatematch",
     1096 + "st_touches",
     1097 + "st_within",
     1098 + "starts_with",
     1099 + "ts_match_qv",
     1100 + "ts_match_tq",
     1101 + "ts_match_tt",
     1102 + "ts_match_vq",
     1103 + "tsq_mcontained",
     1104 + "tsq_mcontains",
     1105 + "xmlexists",
     1106 + "xmlvalidate",
     1107 + "xpath_exists"
     1108 + ],
     1109 + "type": "array",
     1110 + "items": {
     1111 + "type": "string"
     1112 + }
     1113 + }
     1114 + }
     1115 + },
     1116 + "ComparisonOperatorMapping": {
     1117 + "description": "Define the names that comparison operators will be exposed as by the automatic introspection.",
     1118 + "type": "object",
     1119 + "required": ["exposedName", "operatorKind", "operatorName"],
     1120 + "properties": {
     1121 + "operatorName": {
     1122 + "description": "The name of the operator as defined by the database",
     1123 + "type": "string"
     1124 + },
     1125 + "exposedName": {
     1126 + "description": "The name the operator will appear under in the exposed API",
     1127 + "type": "string"
     1128 + },
     1129 + "operatorKind": {
     1130 + "description": "Equal, In or Custom.",
     1131 + "allOf": [
     1132 + {
     1133 + "$ref": "#/definitions/OperatorKind"
     1134 + }
     1135 + ]
     1136 + }
     1137 + }
     1138 + },
     1139 + "MutationsVersion": {
     1140 + "description": "Which version of the generated mutations will be included in the schema",
     1141 + "type": "string",
     1142 + "enum": ["v1"]
     1143 + }
     1144 + }
     1145 +}
     1146 + 
  • ■ ■ ■ ■ ■ ■
    v3/crates/engine/tests/schema.json
    skipped 61 lines
    62 62   "name": "db",
    63 63   "url": {
    64 64   "singleUrl": {
    65  - "value": "http://postgres_connector:8100"
     65 + "value": "http://postgres_connector:8080"
    66 66   }
    67 67   },
    68 68   "headers": {
    skipped 1390 lines
    1459 1459   },
    1460 1460   "collections": [
    1461 1461   {
    1462  - "name": "articles",
     1462 + "name": "article",
    1463 1463   "description": "A collection of articles",
    1464 1464   "arguments": {},
    1465 1465   "type": "article",
    skipped 8 lines
    1474 1474   "foreign_keys": {}
    1475 1475   },
    1476 1476   {
    1477  - "name": "authors",
     1477 + "name": "author",
    1478 1478   "description": "A collection of authors",
    1479 1479   "arguments": {},
    1480 1480   "type": "author",
    skipped 799 lines
    2280 2280   "globalIdSource": true,
    2281 2281   "source": {
    2282 2282   "dataConnectorName": "db",
    2283  - "collection": "articles"
     2283 + "collection": "article"
    2284 2284   },
    2285 2285   "filterExpressionType": "article_bool_exp",
    2286 2286   "orderableFields": [
    skipped 96 lines
    2383 2383   "globalIdSource": true,
    2384 2384   "source": {
    2385 2385   "dataConnectorName": "db",
    2386  - "collection": "authors"
     2386 + "collection": "author"
    2387 2387   },
    2388 2388   "filterExpressionType": "author_bool_exp",
    2389 2389   "graphql": {
    skipped 3818 lines
  • ■ ■ ■ ■
    v3/crates/engine/tests/validate_metadata_artifacts/metadata_before_namespace_aware_open_dd.json
    skipped 5 lines
    6 6   "name": "db",
    7 7   "url": {
    8 8   "singleUrl": {
    9  - "value": "http://postgres_connector:8100"
     9 + "value": "http://postgres_connector:8080"
    10 10   }
    11 11   },
    12 12   "headers": {},
    skipped 1360 lines
  • ■ ■ ■ ■
    v3/crates/engine/tests/validate_metadata_artifacts/metadata_before_subgraph_terminology_open_dd.json
    skipped 8 lines
    9 9   "name": "db",
    10 10   "url": {
    11 11   "singleUrl": {
    12  - "value": "http://postgres_connector:8100"
     12 + "value": "http://postgres_connector:8080"
    13 13   }
    14 14   },
    15 15   "headers": {
    skipped 2369 lines
  • ■ ■ ■ ■ ■ ■
    v3/crates/open-dds/examples/reference.json
    skipped 124 lines
    125 125   },
    126 126   "collections": [
    127 127   {
    128  - "name": "articles",
     128 + "name": "article",
    129 129   "description": "A collection of articles",
    130 130   "arguments": {},
    131 131   "type": "article",
    skipped 8 lines
    140 140   "foreign_keys": {}
    141 141   },
    142 142   {
    143  - "name": "authors",
     143 + "name": "author",
    144 144   "description": "A collection of authors",
    145 145   "arguments": {},
    146 146   "type": "author",
    skipped 569 lines
  • ■ ■ ■ ■ ■ ■
    v3/docker-compose.yaml
    skipped 15 lines
    16 16   target: /var/lib/postgresql/data
    17 17   - type: bind
    18 18   source: ./crates/engine/tests/db_definition.sql
    19  - target: /docker-entrypoint-initdb.d/db_definition.sql
     19 + target: /docker-entrypoint-initdb.d/01-db_definition.sql
     20 + read_only: true
     21 + - type: bind
     22 + source: ./crates/engine/tests/chinook-postgres.sql
     23 + target: /docker-entrypoint-initdb.d/02-chinook.sql
    20 24   read_only: true
    21 25   healthcheck:
    22 26   test:
    skipped 34 lines
    57 61   COLLECTOR_ZIPKIN_HOST_PORT: "9411"
    58 62   
    59 63   postgres_connector:
    60  - image: ghcr.io/hasura/ndc-postgres:dev-main-0452625e7
    61  - command:
    62  - - serve
    63  - - --configuration
    64  - - /config.json
    65  - - "--otlp-endpoint"
    66  - - http://jaeger:4317
     64 + image: ghcr.io/hasura/ndc-postgres:dev-main
    67 65   ports:
    68  - - 8100:8100
     66 + - 8100:8080
     67 + environment:
     68 + CONNECTION_URI: "postgresql://postgres:password@postgres"
     69 + OLTP_ENDPOINT: "http://jaeger:4317"
    69 70   volumes:
    70  - - ./crates/engine/tests/pg_ndc_config.json:/config.json
     71 + - type: bind
     72 + source: ./crates/engine/tests/ndc-postgres-configuration
     73 + target: /etc/connector
     74 + read_only: true
    71 75   depends_on:
    72 76   postgres:
    73 77   condition: service_healthy
    skipped 55 lines
    129 133   postgres:
    130 134   condition: service_healthy
    131 135   postgres_connector:
    132  - condition: service_started
     136 + condition: service_healthy
    133 137   custom_connector:
    134 138   condition: service_healthy
    135 139   
    skipped 3 lines
  • ■ ■ ■ ■ ■ ■
    v3/justfile
    skipped 52 lines
    53 53   
    54 54  # tests run by CI
    55 55  ci-test:
    56  - just docker_with_test_env cargo nextest run
     56 + just docker_with_test_env cargo nextest run --no-fail-fast
    57 57   
    58  -test *TESTNAME:
    59  - if [ -z {{TESTNAME}} ]; then \
    60  - just docker_with_test_env cargo nextest run -E 'all()'; \
    61  - else \
    62  - just docker_with_test_env cargo nextest run -E 'test(={{TESTNAME}})'; \
     58 +test TESTNAME='':
     59 + #!/usr/bin/env bash
     60 + if [[ -z '{{TESTNAME}}' ]]; then
     61 + echo 'cargo nextest run --no-fail-fast'
     62 + just docker_with_test_env cargo nextest run --no-fail-fast
     63 + else
     64 + echo "cargo nextest run --no-fail-fast -E 'test(={{TESTNAME}})'"
     65 + just docker_with_test_env cargo nextest run --no-fail-fast -E 'test(={{TESTNAME}})'
    63 66   fi
    64 67   
    65 68  # tests using cargo test and not nextest.
    skipped 25 lines
    91 94   docker compose run --build --rm dev_setup bash
    92 95   docker compose down
    93 96   
    94  -# start all the docker deps for running tests (not engine, auth_hook, jaeger)
     97 +# start all the docker deps for running tests (not engine)
    95 98  start-docker-test-deps:
    96 99   # start connectors and wait for health
    97  - docker compose -f ci.docker-compose.yaml \
    98  - up --wait postgres custom_connector
    99  - # start auth_hook
    100  - docker compose up --wait auth_hook
    101  - # start everything else (don't wait for postgres connector, it doesn't seem
    102  - # to work)
    103  - docker compose -f ci.docker-compose.yaml \
    104  - up -d
     100 + docker compose -f ci.docker-compose.yaml up --build --wait postgres postgres_connector custom_connector
    105 101   
    106 102  # start all the docker run time deps for the engine
    107 103  start-docker-run-deps:
    skipped 50 lines
Please wait...
Page is in error, reload to recover