From a5de0576ce0dcbbaa32881443dfb000fd38c3f2b Mon Sep 17 00:00:00 2001 From: phdoerfler Date: Sun, 12 Jul 2026 15:35:41 +0200 Subject: [PATCH 01/10] Bump tlBaseVersion to 0.30 Latest tag is v0.29.0; the SQLite backend work also changes the SqlMappingLike dialect API (new abstract members, defaultOffsetForSubquery renamed to normalizeOffsetLimit), so the next release must start a new binary-incompatible minor line for MiMa. --- build.sbt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.sbt b/build.sbt index 98c3ef22..6beb980d 100644 --- a/build.sbt +++ b/build.sbt @@ -36,7 +36,7 @@ ThisBuild / scalaVersion := Scala2 ThisBuild / crossScalaVersions := Seq(Scala2, Scala3) ThisBuild / tlJdkRelease := Some(11) -ThisBuild / tlBaseVersion := "0.29" +ThisBuild / tlBaseVersion := "0.30" ThisBuild / startYear := Some(2019) ThisBuild / licenses := Seq(License.Apache2) ThisBuild / developers := List( From 4fab3d62940bcca7bd0963189bf692b5b0c48fd4 Mon Sep 17 00:00:00 2001 From: phdoerfler Date: Sat, 11 Jul 2026 14:43:39 +0200 Subject: [PATCH 02/10] Pin forked test JVMs to UTC Datetime tests in the MSSQL suite (MovieSuite's `moviesShownBetween` and computed-field cases) fail on a developer machine in a non-UTC time zone, though they pass in CI. The MSSQL test codec encodes an OffsetDateTime argument via a zone-naive `java.sql.Timestamp`, and mssql-jdbc binds it into a DATETIMEOFFSET parameter using the ambient JVM time zone. On a UTC+2 host the filter bound shifts by two hours, admitting an extra row. Postgres is immune (native `Meta[OffsetDateTime]`); Oracle uses the same codec but ojdbc binds it without the shift; CI runs in UTC so it never surfaces there. --- build.sbt | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/build.sbt b/build.sbt index 6beb980d..ddaf58d7 100644 --- a/build.sbt +++ b/build.sbt @@ -171,6 +171,13 @@ lazy val nativeSettings = Seq( ) ) +// Pin the forked test JVM to UTC: mssql-jdbc binds a zone-naive java.sql.Timestamp using the +// ambient JVM zone, so MSSQL datetime tests fail off-UTC unless pinned. Only meaningful where +// Test / fork := true. +lazy val utcTestSettings = Seq( + Test / javaOptions += "-Duser.timezone=UTC" +) + lazy val modules: List[CompositeProject] = List( core, circe, @@ -272,6 +279,7 @@ lazy val doobiecore = project .disablePlugins(RevolverPlugin) .dependsOn(sqlcore.jvm % "test->test;compile->compile", circe.jvm) .settings(commonSettings) + .settings(utcTestSettings) .settings( name := "grackle-doobie-core", Test / fork := true, @@ -291,6 +299,7 @@ lazy val doobiepg = project doobiecore % "test->test;compile->compile", sqlpg.jvm % "test->test;compile->compile") .settings(commonSettings) + .settings(utcTestSettings) .settings( name := "grackle-doobie-pg", Test / fork := true, @@ -310,6 +319,7 @@ lazy val doobieoracle = project .disablePlugins(RevolverPlugin) .dependsOn(doobiecore % "test->test;compile->compile") .settings(commonSettings) + .settings(utcTestSettings) .settings( name := "grackle-doobie-oracle", Test / fork := true, @@ -327,6 +337,7 @@ lazy val doobiemssql = project .disablePlugins(RevolverPlugin) .dependsOn(doobiecore % "test->test;compile->compile") .settings(commonSettings) + .settings(utcTestSettings) .settings( name := "grackle-doobie-mssql", Test / fork := true, @@ -354,6 +365,7 @@ lazy val skunk = crossProject(JVMPlatform, JSPlatform, NativePlatform) "org.typelevel" %% "log4cats-core" % log4catsVersion ) ) + .jvmSettings(utcTestSettings) .jvmSettings( Test / fork := true, Test / testOptions += Tests.Setup(_ => From 8153847c44fcc4dc07b604bff7154fea1d3904fa Mon Sep 17 00:00:00 2001 From: phdoerfler Date: Sun, 12 Jul 2026 16:23:06 +0200 Subject: [PATCH 03/10] Add SQLite backend (grackle-doobie-sqlite) A new Doobie-based SQL backend for SQLite, mirroring the doobie-oracle/ doobie-mssql module shape: a single dialect mapping supplying the SqlMappingLike dialect hooks, plus a test harness wiring up the shared sql-core suites against a fresh temp-file SQLite database per test suite (no docker service needed, since SQLite runs in-process). Two dialect-specific choices, documented inline: LIMIT/OFFSET uses SQLite's legacy comma form (`LIMIT offset, limit`), since the shared query builder's fixed offset-then-limit render order is incompatible with SQLite's OFFSET-must-follow-LIMIT grammar; and LIKE case-sensitivity relies on a connection-level `case_sensitive_like` pragma paired with `UPPER()`-normalization for case-insensitive matches. SQLite has two grammar gaps no pre-existing dialect hook could route around, addressed in sql-core with existing dialects' behavior unchanged: - No correlated FROM-clause subqueries (no LATERAL equivalent). `SqlSelect.nest()` embeds a parent-constraint equality predicate into a nested subquery's own WHERE clause - redundant with the enclosing JOIN ... ON clause, and only useful as an optimization for genuinely lateral-evaluated subqueries (Postgres/Oracle LATERAL, MSSQL CROSS/OUTER APPLY). On a dialect with no lateral join at all, that predicate references a column out of scope and fails at runtime with "no such column". A derived capability, `supportsLateralJoin` (false exactly when `mkLateral` has no lateral form to render and answers `NotLateral`, as SQLite's does), makes `addFilterOrderByOffsetLimit` skip embedding it. - No parenthesized UNION branches. `SqlUnion.toFragment` used to wrap each UNION ALL branch in parentheses unconditionally; SQLite's compound-select grammar forbids that. Branch rendering is now a dialect hook, `unionBranchToFragment`, which the existing dialects implement with the previous parenthesizing behavior and SQLite implements as the identity - safe for any number of branches since grackle only ever uses UNION ALL, a purely associative bag union. `DoobieSqliteMappingLike.encapsulateUnionBranch` is also extended to wrap branches carrying their own offset/limit (not just order) into a derived-table subquery, since a branch-level LIMIT is rejected by SQLite regardless of parenthesization. Fixing the LATERAL gap exposed a real correctness bug, also fixed here: `addFilterOrderByOffsetLimit` has two "Case 1" fast paths that apply LIMIT/OFFSET directly to a query built from pre-existing joins, trusting `oneToOne && predIsOneToOne` to mean one row per key. That's only guaranteed when a lateral-evaluated subquery produced those joins (at most one contribution per outer row); a join chain containing a nested one-to-many hop (e.g. a windowed/limited grandchild list) can produce both a real match row and a NULL-extended LEFT JOIN row sharing the same key, and an ORDER BY/LIMIT on top with no de-duplication picks whichever the database's tie-breaking favors. Both fast paths are now gated behind `supportsLateralJoin`, safe to skip only when the dialect genuinely evaluates subqueries laterally, or when there's provably no risk (no joins, or no offset/limit at all). The offsetDateTime test codec normalizes to UTC on decode: SQLite has no native timestamptz, so it stores and returns whatever literal offset is written in the seed data, whereas Postgres/Oracle/MSSQL's drivers hand back a UTC-normalized value regardless of storage; without normalizing, otherwise-correct results failed pure string-equality against the shared UTC ("Z")-formatted expected-JSON fixtures. Also applies the shared utcTestSettings (pinning the forked test JVM to UTC) to doobiesqlite for consistency with the other backends, even though SQLite's own datetime handling is UTC-normalized independent of host time zone. --- .github/workflows/ci.yml | 4 +- build.sbt | 35 + .../src/main/scala/DoobieMSSqlMapping.scala | 2 + .../src/main/scala/DoobieOracleMapping.scala | 1 + .../src/main/scala/DoobieSqliteMapping.scala | 175 + .../scala/DoobieSqliteDatabaseSuite.scala | 181 + .../src/test/scala/DoobieSqliteSuites.scala | 268 + .../sql-core/src/main/scala/SqlMapping.scala | 70 +- .../shared/src/main/scala/SqlPgMapping.scala | 1 + testdata/sqlite/array-join.sql | 39 + testdata/sqlite/coalesce.sql | 42 + testdata/sqlite/composite-keys.sql | 24 + testdata/sqlite/cursor-json.sql | 8 + testdata/sqlite/embedding.sql | 39 + testdata/sqlite/embedding2.sql | 18 + testdata/sqlite/filter-join-alias.sql | 15 + .../sqlite/filter-order-offset-limit-2.sql | 48 + testdata/sqlite/filter-order-offset-limit.sql | 39 + testdata/sqlite/graph.sql | 21 + testdata/sqlite/interfaces.sql | 37 + testdata/sqlite/jsonb.sql | 9 + testdata/sqlite/like.sql | 9 + testdata/sqlite/movies.sql | 44 + testdata/sqlite/mutation.sql | 3 + testdata/sqlite/projection.sql | 34 + testdata/sqlite/recursive-interfaces.sql | 17 + testdata/sqlite/sibling-lists.sql | 37 + testdata/sqlite/tree.sql | 14 + testdata/sqlite/unions.sql | 10 + testdata/sqlite/world.sql | 5357 +++++++++++++++++ 30 files changed, 6592 insertions(+), 9 deletions(-) create mode 100644 modules/doobie-sqlite/src/main/scala/DoobieSqliteMapping.scala create mode 100644 modules/doobie-sqlite/src/test/scala/DoobieSqliteDatabaseSuite.scala create mode 100644 modules/doobie-sqlite/src/test/scala/DoobieSqliteSuites.scala create mode 100644 testdata/sqlite/array-join.sql create mode 100644 testdata/sqlite/coalesce.sql create mode 100644 testdata/sqlite/composite-keys.sql create mode 100644 testdata/sqlite/cursor-json.sql create mode 100644 testdata/sqlite/embedding.sql create mode 100644 testdata/sqlite/embedding2.sql create mode 100644 testdata/sqlite/filter-join-alias.sql create mode 100644 testdata/sqlite/filter-order-offset-limit-2.sql create mode 100644 testdata/sqlite/filter-order-offset-limit.sql create mode 100644 testdata/sqlite/graph.sql create mode 100644 testdata/sqlite/interfaces.sql create mode 100644 testdata/sqlite/jsonb.sql create mode 100644 testdata/sqlite/like.sql create mode 100644 testdata/sqlite/movies.sql create mode 100644 testdata/sqlite/mutation.sql create mode 100644 testdata/sqlite/projection.sql create mode 100644 testdata/sqlite/recursive-interfaces.sql create mode 100644 testdata/sqlite/sibling-lists.sql create mode 100644 testdata/sqlite/tree.sql create mode 100644 testdata/sqlite/unions.sql create mode 100644 testdata/sqlite/world.sql diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0af25b61..de3d492a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -103,11 +103,11 @@ jobs: - name: Make target directories if: github.event_name != 'pull_request' && (startsWith(github.ref, 'refs/tags/v') || github.ref == 'refs/heads/main') - run: mkdir -p modules/skunk/js/target modules/sql-core/.js/target modules/circe/.jvm/target modules/generic/.jvm/target modules/doobie-pg/target unidocs/target modules/core/.native/target modules/skunk/jvm/target modules/core/.js/target modules/doobie-core/target modules/circe/.js/target modules/skunk/native/target modules/generic/.js/target modules/doobie-oracle/target modules/sql-core/.jvm/target modules/core/.jvm/target modules/sql-pg/native/target modules/doobie-mssql/target modules/sql-pg/js/target modules/circe/.native/target modules/generic/.native/target modules/sql-pg/jvm/target modules/sql-core/.native/target project/target + run: mkdir -p modules/skunk/js/target modules/sql-core/.js/target modules/circe/.jvm/target modules/generic/.jvm/target modules/doobie-pg/target unidocs/target modules/core/.native/target modules/skunk/jvm/target modules/core/.js/target modules/doobie-core/target modules/circe/.js/target modules/skunk/native/target modules/generic/.js/target modules/doobie-oracle/target modules/sql-core/.jvm/target modules/core/.jvm/target modules/sql-pg/native/target modules/doobie-mssql/target modules/sql-pg/js/target modules/doobie-sqlite/target modules/circe/.native/target modules/generic/.native/target modules/sql-pg/jvm/target modules/sql-core/.native/target project/target - name: Compress target directories if: github.event_name != 'pull_request' && (startsWith(github.ref, 'refs/tags/v') || github.ref == 'refs/heads/main') - run: tar cf targets.tar modules/skunk/js/target modules/sql-core/.js/target modules/circe/.jvm/target modules/generic/.jvm/target modules/doobie-pg/target unidocs/target modules/core/.native/target modules/skunk/jvm/target modules/core/.js/target modules/doobie-core/target modules/circe/.js/target modules/skunk/native/target modules/generic/.js/target modules/doobie-oracle/target modules/sql-core/.jvm/target modules/core/.jvm/target modules/sql-pg/native/target modules/doobie-mssql/target modules/sql-pg/js/target modules/circe/.native/target modules/generic/.native/target modules/sql-pg/jvm/target modules/sql-core/.native/target project/target + run: tar cf targets.tar modules/skunk/js/target modules/sql-core/.js/target modules/circe/.jvm/target modules/generic/.jvm/target modules/doobie-pg/target unidocs/target modules/core/.native/target modules/skunk/jvm/target modules/core/.js/target modules/doobie-core/target modules/circe/.js/target modules/skunk/native/target modules/generic/.js/target modules/doobie-oracle/target modules/sql-core/.jvm/target modules/core/.jvm/target modules/sql-pg/native/target modules/doobie-mssql/target modules/sql-pg/js/target modules/doobie-sqlite/target modules/circe/.native/target modules/generic/.native/target modules/sql-pg/jvm/target modules/sql-core/.native/target project/target - name: Upload target directories if: github.event_name != 'pull_request' && (startsWith(github.ref, 'refs/tags/v') || github.ref == 'refs/heads/main') diff --git a/build.sbt b/build.sbt index ddaf58d7..583e1f0c 100644 --- a/build.sbt +++ b/build.sbt @@ -24,6 +24,7 @@ val munitScalaCheckVersion = "1.3.0" val oracleDriverVersion = "23.26.2.0.0" val postgresVersion = "42.7.13" val skunkVersion = "1.0.0" +val sqliteDriverVersion = "3.53.2.0" val shapeless2Version = "2.3.13" val shapeless3Version = "3.6.0" val sourcePosVersion = "1.2.0" @@ -187,6 +188,7 @@ lazy val modules: List[CompositeProject] = List( doobiepg, doobieoracle, doobiemssql, + doobiesqlite, skunk, generic, docs, @@ -349,6 +351,38 @@ lazy val doobiemssql = project ) ) +lazy val doobiesqlite = project + .in(file("modules/doobie-sqlite")) + .enablePlugins(AutomateHeaderPlugin) + .disablePlugins(RevolverPlugin) + .dependsOn(doobiecore % "test->test;compile->compile") + .settings(commonSettings) + .settings(utcTestSettings) + .settings( + name := "grackle-doobie-sqlite", + Test / fork := true, + Test / parallelExecution := false, + // SQLite has no docker service: unlike Oracle/MSSQL, whose containers auto-run the seed SQL + // mounted from testdata//, the test harness loads and executes testdata/sqlite/*.sql + // itself against a fresh temp database file per suite. Pass the directory as a system property + // (fork'd tests don't share the build's working directory) rather than relying on a relative + // path guess. + Test / javaOptions += s"-Dgrackle.sqlite.testdata=${(ThisBuild / baseDirectory).value / "testdata" / "sqlite"}", + // sqlite-jdbc's native cleanup on Connection#close touches JNI from what recent JDKs treat as + // a restricted context; without this the forked test JVM logs "restricted method" warnings and + // native handle teardown can throw spuriously. The flag only exists on JDK 17+ (JEP 412) - + // older JVMs, such as CI's temurin@11, refuse to start when given it (the forked JVM inherits + // the JDK sbt runs on), so it has to be supplied conditionally. + Test / javaOptions ++= { + if (sys.props("java.specification.version").toDouble >= 17) + Seq("--enable-native-access=ALL-UNNAMED") + else Nil + }, + libraryDependencies ++= Seq( + "org.xerial" % "sqlite-jdbc" % sqliteDriverVersion + ) + ) + lazy val skunk = crossProject(JVMPlatform, JSPlatform, NativePlatform) .crossType(CrossType.Full) .in(file("modules/skunk")) @@ -498,6 +532,7 @@ lazy val unidocs = project doobiepg, doobieoracle, doobiemssql, + doobiesqlite, skunk.jvm, generic.jvm ) diff --git a/modules/doobie-mssql/src/main/scala/DoobieMSSqlMapping.scala b/modules/doobie-mssql/src/main/scala/DoobieMSSqlMapping.scala index 0756d76b..080e3e34 100644 --- a/modules/doobie-mssql/src/main/scala/DoobieMSSqlMapping.scala +++ b/modules/doobie-mssql/src/main/scala/DoobieMSSqlMapping.scala @@ -90,6 +90,8 @@ trait DoobieMSSqlMappingLike[F[_]] extends DoobieMappingLike[F] with SqlMappingL if (s.orders.isEmpty) s else s.toSubquery(s.table.name + "_encaps", Laterality.NotLateral) + def unionBranchToFragment(branch: Fragment): Fragment = Fragments.parentheses(branch) + def mkLateral(inner: Boolean): Laterality = Laterality.Apply(inner) diff --git a/modules/doobie-oracle/src/main/scala/DoobieOracleMapping.scala b/modules/doobie-oracle/src/main/scala/DoobieOracleMapping.scala index 774069a5..60ab97fc 100644 --- a/modules/doobie-oracle/src/main/scala/DoobieOracleMapping.scala +++ b/modules/doobie-oracle/src/main/scala/DoobieOracleMapping.scala @@ -89,6 +89,7 @@ trait DoobieOracleMappingLike[F[_]] extends DoobieMappingLike[F] with SqlMapping ) // TODO: check that passing orders works with Oracle def encapsulateUnionBranch(s: SqlSelect): SqlSelect = s + def unionBranchToFragment(branch: Fragment): Fragment = Fragments.parentheses(branch) def mkLateral(inner: Boolean): Laterality = Laterality.Lateral def defaultOffsetForSubquery(subquery: SqlQuery): SqlQuery = subquery def defaultOffsetForLimit(limit: Option[Int]): Option[Int] = None diff --git a/modules/doobie-sqlite/src/main/scala/DoobieSqliteMapping.scala b/modules/doobie-sqlite/src/main/scala/DoobieSqliteMapping.scala new file mode 100644 index 00000000..1686572a --- /dev/null +++ b/modules/doobie-sqlite/src/main/scala/DoobieSqliteMapping.scala @@ -0,0 +1,175 @@ +// Copyright (c) 2016-2025 Association of Universities for Research in Astronomy, Inc. (AURA) +// Copyright (c) 2016-2025 Grackle Contributors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package grackle.doobie.sqlite + +import cats.effect.Sync +import cats.syntax.all._ +import org.typelevel.doobie.Transactor + +import grackle.Mapping +import grackle.Query.OrderSelection +import grackle.doobie._ +import grackle.sql._ + +abstract class DoobieSqliteMapping[F[_]]( + val transactor: Transactor[F], + val monitor: DoobieMonitor[F] +)( + implicit val M: Sync[F] +) extends Mapping[F] + with DoobieSqliteMappingLike[F] + +/** + * SQLite lacks two SQL constructs the shared query builder in `grackle.sql.SqlMappingLike` + * (`modules/sql-core`) otherwise assumes are always available; each is bridged by a dialect + * hook that the other backends implement with their previous behavior: + * + * - '''No correlated FROM-clause subqueries.''' SQLite has no `LATERAL` keyword and no other + * way for a subquery in the FROM clause to reference a sibling table's columns, so + * `mkLateral` below answers `NotLateral` - the only possible rendering - and + * `SqlMappingLike` derives `supportsLateralJoin = false` from that. Most queries that ask + * for lateral evaluation don't actually need it: the correlation is supplied independently + * by the `JOIN ... ON` clause `SqlSelect.nest` builds regardless of dialect. See + * `supportsLateralJoin`'s doc comment for the consequences (an omitted redundant predicate, + * gated "Case 1" fast paths) and the performance trade-off. + * - '''No parenthesized UNION branches.''' SQLite's compound-select grammar is + * `select-core (compound-operator select-core)*` - a branch can never be parenthesized, + * unconditionally, so `unionBranchToFragment` below renders branches bare. A branch + * carrying its own order, offset, or limit can't be expressed inline either and is wrapped + * in a derived-table subquery by `encapsulateUnionBranch`, which extends the MSSQL + * treatment (orders only) to offset and limit as well. + */ +trait DoobieSqliteMappingLike[F[_]] extends DoobieMappingLike[F] with SqlMappingLike[F] { + import SqlQuery.SqlSelect + import TableExpr.Laterality + + def collateToFragment: Fragment = + Fragments.const(" COLLATE BINARY") + + def aliasDefToFragment(alias: String): Fragment = + Fragments.const(s" AS $alias") + + // SQLite's LIMIT/OFFSET clause is anchored on the `LIMIT` keyword: `OFFSET` (or a comma) is + // only legal *inside* a LIMIT clause, never as a standalone top-level clause, and never before + // the word LIMIT. That's incompatible with the fixed `offsetToFragment |+| limitToFragment` + // rendering order used by the shared query builder (which suits Postgres, where either order is + // legal, and MSSQL/Oracle's OFFSET-anchored `OFFSET .. FETCH ..`). We route around this by using + // SQLite's legacy MySQL-style comma form `LIMIT , `: offsetToFragment opens the + // clause and limitToFragment supplies the trailing operand. defaultOffsetForLimit guarantees an + // offset (defaulting to 0) is always rendered whenever a limit is present, so the two halves are + // never split apart. A limit with no matching offset, or vice versa, renders as a normal, + // self-contained `LIMIT n` - only the "explicit offset with no limit" case (see + // defaultOffsetForSubquery below for the nested-subquery fix) can't be expressed this way, since + // there's no hook to conjure a limit value out of nothing at the true query root. + def offsetToFragment(offset: Fragment): Fragment = + Fragments.const(" LIMIT ") |+| offset |+| Fragments.const(", ") + + def limitToFragment(limit: Fragment): Fragment = + limit + + // SQLite's LIKE is ASCII case-insensitive by default and has no ILIKE, so genuinely + // case-sensitive matching requires the connection-level `PRAGMA case_sensitive_like = ON` + // (there's no per-expression equivalent - callers building a Transactor for this mapping need + // to set that pragma, e.g. via SQLiteConfig; see DoobieSqliteDatabaseSuite for a worked + // example). Since that pragma is global to the connection, not per-query, we can't just fall + // back to a bare LIKE for the case-insensitive branch once it's enabled - both branches need to + // be made explicit, exactly as Oracle/MSSQL do: normalise to upper case for case-insensitive + // matches (which is then case-insensitive regardless of the pragma), and compare as-is + // (case-sensitive, relying on the pragma) otherwise. + def likeToFragment(expr: Fragment, pattern: String, caseInsensitive: Boolean): Fragment = { + val casedExpr = + if (caseInsensitive) Fragments.const("UPPER(") |+| expr |+| Fragments.const(s")") + else expr + val casedPattern = if (caseInsensitive) pattern.toUpperCase else pattern + casedExpr |+| Fragments.const(s" LIKE ") |+| Fragments.bind(stringEncoder, casedPattern) + } + + // SQLite is dynamically typed, and its CAST accepts arbitrary type names (falling back to a + // best-guess type affinity for anything it doesn't recognise), so a typed NULL can just reuse + // whatever name the driver reports - no per-type remapping needed, unlike Oracle/MSSQL. + def ascribedNullToFragment(codec: Codec): Fragment = + Fragments.sqlTypeName(codec) match { + case Some(name) => Fragments.const(s"CAST(NULL AS $name)") + case None => Fragments.const("NULL") + } + + def collateSelected: Boolean = false + + def distinctOnToFragment(dcols: List[Fragment]): Fragment = + Fragments.const("DISTINCT ") + + def distinctOrderColumn( + owner: ColumnOwner, + col: SqlColumn, + predCols: List[SqlColumn], + orders: List[OrderSelection[_]]): SqlColumn = + SqlColumn.FirstValueColumn(owner, col, predCols, orders) + + // A compound SELECT (UNION ALL/etc.) may only have a single ORDER BY/LIMIT/OFFSET, trailing the + // whole compound statement - an individual branch can't carry its own, parenthesized or not. + // Branches that do (grackle pushes a per-branch limit into paged-wrapper "items" branches, for + // example) must be wrapped in a derived table instead, extending the MSSQL treatment of orders + // to offset and limit as well. + def encapsulateUnionBranch(s: SqlSelect): SqlSelect = + if (s.orders.isEmpty && s.offset.isEmpty && s.limit.isEmpty) s + else s.toSubquery(s.table.name + "_encaps", Laterality.NotLateral) + + // A branch of a compound select can never be parenthesized, not even a "plain" one with no + // order/limit, so branches render bare. See unionBranchToFragment's doc comment on + // SqlMappingLike for why dropping the parens is safe. + def unionBranchToFragment(branch: Fragment): Fragment = branch + + // SQLite has no LATERAL/APPLY mechanism at all, so NotLateral (plain subquery, no keyword) is + // the only possible answer; SqlMappingLike derives supportsLateralJoin = false from it, which + // omits the parent-constraint predicate only a lateral subquery could resolve and gates the + // "Case 1" fast paths - see that member's doc comment. + def mkLateral(inner: Boolean): Laterality = + Laterality.NotLateral + + // Mirror image of defaultOffsetForLimit, but at the query-tree level: when this SqlSelect is + // used as a subquery (so it's rendered via defaultOffsetForSubquery rather than being the true + // query root) and it has an explicit offset but no limit, inject SQLite's documented idiom for + // "no upper bound", `LIMIT -1`, so the comma-form OFFSET/LIMIT pairing in offsetToFragment always + // has a second operand to pair with. + def defaultOffsetForSubquery(subquery: SqlQuery): SqlQuery = + subquery match { + case s: SqlSelect if s.offset.nonEmpty && s.limit.isEmpty => s.copy(limit = (-1).some) + case _ => subquery + } + + // See offsetToFragment: forcing a default offset of 0 whenever a limit is present guarantees + // the comma-form clause is always rendered as a matched `LIMIT offset, limit` pair. + def defaultOffsetForLimit(limit: Option[Int]): Option[Int] = + limit.as(0) + + // Modern SQLite (>= 3.30) supports NULLS FIRST/LAST natively, same as Postgres/Oracle. + def orderToFragment(col: Fragment, ascending: Boolean, nullsLast: Boolean): Fragment = { + val dir = if (ascending) Fragments.empty else Fragments.const(" DESC") + val nulls = + if (!nullsLast && ascending) + Fragments.const(" NULLS FIRST ") + else if (nullsLast && !ascending) + Fragments.const(" NULLS LAST ") + else + Fragments.empty + + col |+| dir |+| nulls + } + + // SQLite sorts NULL as lower than any non-NULL value by default (NULLs first in ASC), the same + // convention as MSSQL. + def nullsHigh: Boolean = false +} diff --git a/modules/doobie-sqlite/src/test/scala/DoobieSqliteDatabaseSuite.scala b/modules/doobie-sqlite/src/test/scala/DoobieSqliteDatabaseSuite.scala new file mode 100644 index 00000000..455b98f2 --- /dev/null +++ b/modules/doobie-sqlite/src/test/scala/DoobieSqliteDatabaseSuite.scala @@ -0,0 +1,181 @@ +// Copyright (c) 2016-2025 Association of Universities for Research in Astronomy, Inc. (AURA) +// Copyright (c) 2016-2025 Grackle Contributors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package grackle.doobie.sqlite.test + +import java.io.File +import java.nio.file.{Files, Path} +import java.sql.DriverManager +import java.time.{LocalDate, LocalTime, OffsetDateTime, ZoneOffset} +import java.time.format.DateTimeFormatter +import java.util.UUID + +import scala.util.{Try, Using} + +import cats.effect.{IO, Resource, Sync} +import cats.syntax.all._ +import io.circe.{Decoder => CDecoder, Encoder => CEncoder, Json} +import io.circe.parser.parse +import io.circe.syntax._ +import munit.catseffect._ +import org.sqlite.SQLiteConfig +import org.typelevel.doobie.{Meta, Transactor} + +import grackle.doobie.DoobieMonitor +import grackle.doobie.sqlite.DoobieSqliteMapping +import grackle.doobie.test.DoobieDatabaseSuite +import grackle.sql.test._ + +trait DoobieSqliteDatabaseSuite extends DoobieDatabaseSuite { + abstract class DoobieSqliteTestMapping[F[_]: Sync]( + transactor: Transactor[F], + monitor: DoobieMonitor[F] = DoobieMonitor.noopMonitor[IO]) + extends DoobieSqliteMapping[F](transactor, monitor) + with DoobieTestMapping[F] + with SqlTestMapping[F] { + def mkTestCodec[T](meta: Meta[T]): TestCodec[T] = (meta, false) + + val uuid: TestCodec[UUID] = + mkTestCodec(Meta[String].tiemap(s => + Try(UUID.fromString(s)).toEither.leftMap(_.getMessage))(_.toString)) + + // SQLite has no native date/time types - store as ISO-8601 TEXT, the dialect's own convention. + val localTime: TestCodec[LocalTime] = + mkTestCodec(Meta[String].tiemap(s => + Try(LocalTime.parse(s)).toEither.leftMap(_.getMessage))(_.toString)) + + val localDate: TestCodec[LocalDate] = + mkTestCodec(Meta[String].tiemap(s => + Try(LocalDate.parse(s)).toEither.leftMap(_.getMessage))(_.toString)) + + // The shared testdata/*/coalesce.sql, movies.sql etc. spell offsets as e.g. + // '2020-05-27 21:00:00 +02:00' (space-separated, not the 'T'-separated ISO_OFFSET_DATE_TIME + // OffsetDateTime.parse defaults to), matching the literal format used by every other backend's + // testdata - so a custom formatter is used here rather than reformatting the shared data. + val offsetDateTimeFormat: DateTimeFormatter = + DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss xxx") + // Normalize to UTC on decode: SQLite has no native timestamptz, so the literal offset written + // in the seed data (e.g. +02:00) is preserved verbatim in storage, unlike Postgres/Oracle/MSSQL + // whose drivers hand back a UTC-normalized OffsetDateTime regardless of how the value was + // stored. Without this, otherwise-correct results fail equality checks against the shared + // expected-JSON fixtures, which are all written in Postgres's UTC ("Z") form. + val offsetDateTime: TestCodec[OffsetDateTime] = + mkTestCodec( + Meta[String].tiemap(s => + Try( + OffsetDateTime.parse(s, offsetDateTimeFormat).withOffsetSameInstant(ZoneOffset.UTC)) + .toEither + .leftMap(_.getMessage))(_.format(offsetDateTimeFormat))) + + val nvarchar: TestCodec[String] = mkTestCodec(Meta[String]) + + val jsonb: TestCodec[Json] = + mkTestCodec(Meta[String].tiemap(s => parse(s).leftMap(_.getMessage))(_.noSpaces)) + + // SQLite has no array type either - JSON-encode into TEXT, as MSSQL's test mapping does. + override def list[T: CDecoder: CEncoder](c: TestCodec[T]): TestCodec[List[T]] = { + def put(ts: List[T]): String = ts.asJson.noSpaces + def get(s: String): Either[String, List[T]] = + parse(s).map(_.as[List[T]].toOption.get).leftMap(_.getMessage) + + mkTestCodec(Meta[String].tiemap(get)(put)) + } + } + + // Where the seed scripts live - see the `Test / javaOptions` setting for grackle-doobie-sqlite + // in build.sbt, which points this at testdata/sqlite/ regardless of the fork's working directory. + def testdataDir: File = + new File( + sys + .props + .getOrElse( + "grackle.sqlite.testdata", + throw new IllegalStateException( + "grackle.sqlite.testdata system property not set; see build.sbt's doobiesqlite project"))) + + // A fresh on-disk SQLite database, seeded from every script in testdataDir, torn down on + // release. Unlike the container-backed backends there's no shared server to point at, so each + // suite gets its own fully isolated copy of the schema. + def transactorResource: Resource[IO, Transactor[IO]] = { + def newDbFile: IO[Path] = IO.blocking(Files.createTempFile("grackle-sqlite-", ".db")) + + def deleteDbFile(path: Path): IO[Unit] = + IO.blocking { + val base = path.toString + List(base, s"$base-journal", s"$base-wal", s"$base-shm").foreach(new File(_).delete()) + }.void + + def seedScript: IO[String] = + IO.blocking { + Option(testdataDir.listFiles((_, name) => name.endsWith(".sql"))) + .fold(List.empty[File])(_.toList) + .sortBy(_.getName) + .map(f => new String(Files.readAllBytes(f.toPath), "UTF-8")) + .mkString("\n") + } + + def jdbcUrl(path: Path): String = s"jdbc:sqlite:${path.toAbsolutePath}" + + def sqliteProperties: java.util.Properties = { + val config = new SQLiteConfig() + // Case-sensitive LIKE is a connection-level setting in SQLite (no per-expression + // equivalent); DoobieSqliteMappingLike.likeToFragment relies on it being enabled to + // distinguish the `caseInsensitive` predicate flag. + config.enableCaseSensitiveLike(true) + config.toProperties + } + + // Seeded via a single native multi-statement exec over a throwaway plain-JDBC connection, + // rather than through Doobie: sqlite-jdbc's JNI layer can't reliably survive ~150+ individual + // PreparedStatement create/execute/close cycles against one connection on recent JDKs (that + // many round trips through Doobie's `.update.run`, all sharing a connection, corrupts a native + // statement handle and throws "prepared statement has been finalized" from Connection#close). + // A single `Statement.executeUpdate` on the whole concatenated script sidesteps that entirely + // and is also dramatically faster, since it's one native `sqlite3_exec` call instead of ~150. + def seed(path: Path): IO[Unit] = + for { + script <- seedScript + url = jdbcUrl(path) + props = sqliteProperties + _ <- IO.blocking { + Using.resource(DriverManager.getConnection(url, props)) { conn => + Using.resource(conn.createStatement())(_.executeUpdate(script)) + } + } + } yield () + + def mkTransactor(path: Path): Transactor[IO] = + Transactor.fromDriverManager[IO]( + "org.sqlite.JDBC", + jdbcUrl(path), + sqliteProperties, + None + ) + + val alloc = + for { + path <- newDbFile + _ <- seed(path) + } yield (path, mkTransactor(path)) + + Resource.make(alloc)(t => deleteDbFile(t._1)).map(_._2) + } + + val transactorFixture: IOFixture[Transactor[IO]] = + ResourceSuiteLocalFixture("doobiesqlite", transactorResource) + override def munitFixtures: Seq[IOFixture[_]] = Seq(transactorFixture) + + def transactor: Transactor[IO] = transactorFixture() +} diff --git a/modules/doobie-sqlite/src/test/scala/DoobieSqliteSuites.scala b/modules/doobie-sqlite/src/test/scala/DoobieSqliteSuites.scala new file mode 100644 index 00000000..57b92991 --- /dev/null +++ b/modules/doobie-sqlite/src/test/scala/DoobieSqliteSuites.scala @@ -0,0 +1,268 @@ +// Copyright (c) 2016-2025 Association of Universities for Research in Astronomy, Inc. (AURA) +// Copyright (c) 2016-2025 Grackle Contributors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package grackle.doobie.sqlite.test + +// Every shared sql-core suite is wired up here, matching the doobie-pg/doobie-oracle/ +// doobie-mssql suites this is modelled on. All pass, with one caveat: +// FilterOrderOffsetLimit2Suite's "multi join nested limit (2)" has been observed to fail once +// (an empty nested list) on identical code, cause unconfirmed. The generated SQL's result +// content is provably deterministic - keys are paginated via an ordered DISTINCT subquery and +// nested limits via dense_rank over unique ids - leaving only the unordered final row sequence +// as a suspect; the failure has not reproduced in over 120 runs since. + +import cats.effect.{IO, Resource} +import munit.catseffect.IOFixture +import org.typelevel.doobie.{Meta, Transactor} +import org.typelevel.doobie.implicits._ + +import grackle.Mapping +import grackle.doobie.DoobieMonitor +import grackle.sql.SqlStatsMonitor +import grackle.sql.test._ + +final class ArrayJoinSuite extends DoobieSqliteDatabaseSuite with SqlArrayJoinSuite { + lazy val mapping = new DoobieSqliteTestMapping(transactor) with SqlArrayJoinMapping[IO] +} + +final class CoalesceSuite extends DoobieSqliteDatabaseSuite with SqlCoalesceSuite { + type Fragment = org.typelevel.doobie.Fragment + def mapping: IO[(Mapping[IO], SqlStatsMonitor[IO, Fragment])] = + DoobieMonitor + .statsMonitor[IO] + .map(mon => + (new DoobieSqliteTestMapping(transactor, mon) with SqlCoalesceMapping[IO], mon)) +} + +final class ComposedWorldSuite extends DoobieSqliteDatabaseSuite with SqlComposedWorldSuite { + def mapping: IO[(CurrencyMapping[IO], Mapping[IO])] = + for { + currencyMapping <- CurrencyMapping[IO] + } yield ( + currencyMapping, + new SqlComposedMapping( + new DoobieSqliteTestMapping(transactor) with SqlWorldMapping[IO], + currencyMapping)) +} + +final class CompositeKeySuite extends DoobieSqliteDatabaseSuite with SqlCompositeKeySuite { + lazy val mapping = new DoobieSqliteTestMapping(transactor) with SqlCompositeKeyMapping[IO] +} + +final class CursorJsonSuite extends DoobieSqliteDatabaseSuite with SqlCursorJsonSuite { + lazy val mapping = new DoobieSqliteTestMapping(transactor) with SqlCursorJsonMapping[IO] +} + +final class EmbeddingSuite extends DoobieSqliteDatabaseSuite with SqlEmbeddingSuite { + lazy val mapping = new DoobieSqliteTestMapping(transactor) with SqlEmbeddingMapping[IO] +} + +final class Embedding2Suite extends DoobieSqliteDatabaseSuite with SqlEmbedding2Suite { + lazy val mapping = new DoobieSqliteTestMapping(transactor) with SqlEmbedding2Mapping[IO] +} + +final class Embedding3Suite extends DoobieSqliteDatabaseSuite with SqlEmbedding3Suite { + lazy val mapping = new DoobieSqliteTestMapping(transactor) with SqlEmbedding3Mapping[IO] +} + +final class FilterJoinAliasSuite + extends DoobieSqliteDatabaseSuite + with SqlFilterJoinAliasSuite { + lazy val mapping = new DoobieSqliteTestMapping(transactor) with SqlFilterJoinAliasMapping[IO] +} + +final class FilterOrderOffsetLimitSuite + extends DoobieSqliteDatabaseSuite + with SqlFilterOrderOffsetLimitSuite { + lazy val mapping = new DoobieSqliteTestMapping(transactor) + with SqlFilterOrderOffsetLimitMapping[IO] +} + +final class FilterOrderOffsetLimit2Suite + extends DoobieSqliteDatabaseSuite + with SqlFilterOrderOffsetLimit2Suite { + lazy val mapping = new DoobieSqliteTestMapping(transactor) + with SqlFilterOrderOffsetLimit2Mapping[IO] +} + +final class GraphSuite extends DoobieSqliteDatabaseSuite with SqlGraphSuite { + lazy val mapping = new DoobieSqliteTestMapping(transactor) with SqlGraphMapping[IO] +} + +final class InterfacesSuite extends DoobieSqliteDatabaseSuite with SqlInterfacesSuite { + lazy val mapping = + new DoobieSqliteTestMapping(transactor) with SqlInterfacesMapping[IO] { + def entityType: TestCodec[EntityType] = + (Meta[Int].timap(EntityType.fromInt)(EntityType.toInt), false) + } +} + +final class InterfacesSuite2 extends DoobieSqliteDatabaseSuite with SqlInterfacesSuite2 { + lazy val mapping = + new DoobieSqliteTestMapping(transactor) with SqlInterfacesMapping2[IO] { + def entityType: TestCodec[EntityType] = + (Meta[Int].timap(EntityType.fromInt)(EntityType.toInt), false) + } +} + +final class JsonbSuite extends DoobieSqliteDatabaseSuite with SqlJsonbSuite { + lazy val mapping = new DoobieSqliteTestMapping(transactor) with SqlJsonbMapping[IO] +} + +final class LikeSuite extends DoobieSqliteDatabaseSuite with SqlLikeSuite { + lazy val mapping = new DoobieSqliteTestMapping(transactor) with SqlLikeMapping[IO] +} + +final class MappingValidatorValidSuite + extends DoobieSqliteDatabaseSuite + with SqlMappingValidatorValidSuite { + // no DB instance needed for this suite + lazy val mapping = new DoobieSqliteTestMapping(null) + with SqlMappingValidatorValidMapping[IO] { + def genre: TestCodec[Genre] = (Meta[Int].imap(Genre.fromInt)(Genre.toInt), false) + def feature: TestCodec[Feature] = (Meta[String].imap(Feature.fromString)(_.toString), false) + } + override def munitFixtures: Seq[IOFixture[_]] = Nil +} + +final class MappingValidatorInvalidSuite + extends DoobieSqliteDatabaseSuite + with SqlMappingValidatorInvalidSuite { + // no DB instance needed for this suite + lazy val mapping = new DoobieSqliteTestMapping(null) + with SqlMappingValidatorInvalidMapping[IO] + override def munitFixtures: Seq[IOFixture[_]] = Nil +} + +final class MixedSuite extends DoobieSqliteDatabaseSuite with SqlMixedSuite { + lazy val mapping = new DoobieSqliteTestMapping(transactor) with SqlMixedMapping[IO] +} + +final class MovieSuite extends DoobieSqliteDatabaseSuite with SqlMovieSuite { + lazy val mapping = + new DoobieSqliteTestMapping(transactor) with SqlMovieMapping[IO] { + def genre: TestCodec[Genre] = (Meta[Int].imap(Genre.fromInt)(Genre.toInt), false) + def feature: TestCodec[Feature] = + (Meta[String].imap(Feature.fromString)(_.toString), false) + def tagList: TestCodec[List[String]] = (Meta[Int].imap(Tags.fromInt)(Tags.toInt), false) + } +} + +final class MutationSuite extends DoobieSqliteDatabaseSuite with SqlMutationSuite { + // A resource that copies and drops the table used in the tests. + def withDuplicatedTables(transactor: Transactor[IO]): Resource[IO, Transactor[IO]] = { + val alloc = sql"CREATE TABLE city_copy AS SELECT * FROM city" + .update + .run + .transact(transactor) + .as(transactor) + val free = sql"DROP TABLE city_copy".update.run.transact(transactor).void + Resource.make(alloc)(_ => free) + } + + override def transactorResource: Resource[IO, Transactor[IO]] = + super.transactorResource.flatMap(withDuplicatedTables) + + lazy val mapping = + new DoobieSqliteTestMapping(transactor) with SqlMutationMapping[IO] { + def updatePopulation(id: Int, population: Int): IO[Unit] = + sql"UPDATE city_copy SET population=$population WHERE id=$id" + .update + .run + .transact(transactor) + .void + + // SQLite has no sequences: mint a fresh id by hand (scoped to city_copy, which is all that + // matters for this test) and hand it back via RETURNING (supported since SQLite 3.35). + def createCity(name: String, countryCode: String, population: Int): IO[Int] = + sql""" + INSERT INTO city_copy (id, name, countrycode, district, population) + VALUES ((SELECT COALESCE(MAX(id), 0) + 1 FROM city_copy), $name, $countryCode, 'ignored', $population) + RETURNING id + """.query[Int].unique.transact(transactor) + } +} + +final class NestedEffectsSuite extends DoobieSqliteDatabaseSuite with SqlNestedEffectsSuite { + def mapping: IO[(CurrencyService[IO], Mapping[IO])] = + for { + currencyService0 <- CurrencyService[IO] + } yield { + val mapping = + new DoobieSqliteTestMapping(transactor) with SqlNestedEffectsMapping[IO] { + lazy val currencyService = currencyService0 + } + (currencyService0, mapping) + } +} + +final class Paging1Suite extends DoobieSqliteDatabaseSuite with SqlPaging1Suite { + lazy val mapping = new DoobieSqliteTestMapping(transactor) with SqlPaging1Mapping[IO] +} + +final class Paging2Suite extends DoobieSqliteDatabaseSuite with SqlPaging2Suite { + lazy val mapping = new DoobieSqliteTestMapping(transactor) with SqlPaging2Mapping[IO] +} + +final class Paging3Suite extends DoobieSqliteDatabaseSuite with SqlPaging3Suite { + lazy val mapping = new DoobieSqliteTestMapping(transactor) with SqlPaging3Mapping[IO] +} + +final class ProjectionSuite extends DoobieSqliteDatabaseSuite with SqlProjectionSuite { + lazy val mapping = new DoobieSqliteTestMapping(transactor) with SqlProjectionMapping[IO] +} + +final class RecursiveInterfacesSuite + extends DoobieSqliteDatabaseSuite + with SqlRecursiveInterfacesSuite { + lazy val mapping = + new DoobieSqliteTestMapping(transactor) with SqlRecursiveInterfacesMapping[IO] { + def itemType: TestCodec[ItemType] = + (Meta[Int].timap(ItemType.fromInt)(ItemType.toInt), false) + } +} + +final class SiblingListsSuite extends DoobieSqliteDatabaseSuite with SqlSiblingListsSuite { + lazy val mapping = new DoobieSqliteTestMapping(transactor) with SqlSiblingListsData[IO] +} + +final class TreeSuite extends DoobieSqliteDatabaseSuite with SqlTreeSuite { + lazy val mapping = new DoobieSqliteTestMapping(transactor) with SqlTreeMapping[IO] +} + +final class UnionsSuite extends DoobieSqliteDatabaseSuite with SqlUnionSuite { + lazy val mapping = new DoobieSqliteTestMapping(transactor) with SqlUnionsMapping[IO] +} + +final class WorldSuite extends DoobieSqliteDatabaseSuite with SqlWorldSuite { + lazy val mapping = new DoobieSqliteTestMapping(transactor) with SqlWorldMapping[IO] +} + +final class WorldCompilerSuite extends DoobieSqliteDatabaseSuite with SqlWorldCompilerSuite { + type Fragment = org.typelevel.doobie.Fragment + + def mapping: IO[(Mapping[IO], SqlStatsMonitor[IO, Fragment])] = + DoobieMonitor + .statsMonitor[IO] + .map(mon => (new DoobieSqliteTestMapping(transactor, mon) with SqlWorldMapping[IO], mon)) + + def simpleRestrictedQuerySql: String = + "SELECT country.code , country.name FROM country WHERE (( country.code = ?) )" + + def simpleFilteredQuerySql: String = + "SELECT city.id , city.name FROM city WHERE (UPPER( city.name ) LIKE ?)" + + def filterArg: String = "LINH%" +} diff --git a/modules/sql-core/src/main/scala/SqlMapping.scala b/modules/sql-core/src/main/scala/SqlMapping.scala index 272866fc..4f63374e 100644 --- a/modules/sql-core/src/main/scala/SqlMapping.scala +++ b/modules/sql-core/src/main/scala/SqlMapping.scala @@ -58,7 +58,49 @@ trait SqlMappingLike[F[_]] extends CirceMappingLike[F] with SqlModule[F] { self predCols: List[SqlColumn], orders: List[OrderSelection[_]]): SqlColumn def encapsulateUnionBranch(s: SqlSelect): SqlSelect + + /** + * Renders one branch of a `UNION ALL` compound select, typically by wrapping it in + * parentheses: `(branch1) UNION ALL (branch2)`. Dialects whose compound-select grammar + * forbids parenthesized branches (e.g. SQLite) return the fragment unmodified instead. That + * is safe for any dialect: grackle only ever combines branches with `UNION ALL` (never plain + * `UNION`), which is associative, so grouping never affects results. A branch that carries + * its own `ORDER BY`/`OFFSET`/`LIMIT` is wrapped in a derived-table subquery by + * `encapsulateUnionBranch` before this is applied. + */ + def unionBranchToFragment(branch: Fragment): Fragment + def mkLateral(inner: Boolean): Laterality + + /** + * Whether this dialect can correlate a FROM-clause subquery with a sibling table (`LATERAL`, + * `CROSS`/`OUTER APPLY`, or equivalent). Derived from `mkLateral`: a dialect with no such + * mechanism at all (e.g. SQLite) has no lateral form for `mkLateral` to render and answers + * `Laterality.NotLateral` there, which is what this test detects. + * + * Two parts of `addFilterOrderByOffsetLimit` depend on it: + * + * - When `false`, the parent-constraint equality predicate normally embedded in a nested + * field's own `WHERE` clause is omitted. That predicate is redundant - the correlation it + * expresses is supplied independently, via an ordinary `JOIN ... ON` clause, by + * `SqlQuery.SqlSelect.nest` - so omitting it doesn't change results, it only removes a + * reference to a column that isn't in scope inside a non-lateral subquery. The trade-off + * is performance, not correctness: a genuinely lateral-evaluated subquery lets the + * database restrict window-function/ordering work to just the current parent row, whereas + * without it the same window function (e.g. `PARTITION BY `) runs across the + * whole child table and the outer join selects out the relevant partition. + * - The "Case 1" fast paths apply `OFFSET`/`LIMIT` directly to a query built from + * pre-existing `joins`, trusting `oneToOne && predIsOneToOne` to mean the result is + * already one row per key. That only holds when a lateral-evaluated correlated subquery + * produced those joins (guaranteeing at most one contribution per outer row); without + * one, `joins` can itself contain a nested one-to-many hop (e.g. a further + * windowed/limited grandchild list) whose LEFT JOIN "no match" rows and real match rows + * both carry this level's own key, so a physical-row-counting `LIMIT` applied on top + * keeps an arbitrary one of the two. When `false`, the fast paths are therefore only + * taken when no joins (or no offset/limit) are present to introduce that fan-out. + */ + def supportsLateralJoin: Boolean = mkLateral(false) != Laterality.NotLateral + def defaultOffsetForSubquery(subquery: SqlQuery): SqlQuery def defaultOffsetForLimit(limit: Option[Int]): Option[Int] def orderToFragment(col: Fragment, ascending: Boolean, nullsLast: Boolean): Fragment @@ -2587,9 +2629,13 @@ trait SqlMappingLike[F[_]] extends CirceMappingLike[F] with SqlModule[F] { self val (pred, filterJoins) = filter.map { case (pred, joins) => (pred :: Nil, joins) }.getOrElse((Nil, Nil)) - val pred0 = parentConstraints.flatMap(_.map { - case (p, c) => Eql(p.toTerm, c.toTerm) - }) ++ pred + // The parent-constraint equality is only meaningful (and only in scope) inside a + // lateral-evaluated subquery; the correlation it expresses is supplied independently by + // SqlSelect.nest's JOIN ... ON. See supportsLateralJoin. + val pred0 = + (if (supportsLateralJoin) + parentConstraints.flatMap(_.map { case (p, c) => Eql(p.toTerm, c.toTerm) }) + else Nil) ++ pred val (oss, orderJoins) = orderBy.map { case (oss, joins) => (oss, joins) }.getOrElse((Nil, Nil)) @@ -2611,7 +2657,12 @@ trait SqlMappingLike[F[_]] extends CirceMappingLike[F] with SqlModule[F] { self val partitionBy = parentConstraints.head.map(_._2) - if (oneToOne && predIsOneToOne) { + // Without a lateral-evaluated subquery, oneToOne && predIsOneToOne doesn't guarantee + // one physical row per key if joins contains a one-to-many hop; see + // supportsLateralJoin. + val fastPathSafe = supportsLateralJoin || joins.isEmpty + + if (oneToOne && predIsOneToOne && fastPathSafe) { // Case 1) one row is one object in this context pred0.traverse(p => contextualiseWhereTerms(context, table, p)).flatMap { pred1 => oss.traverse(os => contextualiseOrderTerms(context, table, os)).flatMap { @@ -2990,7 +3041,12 @@ trait SqlMappingLike[F[_]] extends CirceMappingLike[F] with SqlModule[F] { self } else { // No parent constraint so nothing to be gained from using window functions - if ((oneToOne && predIsOneToOne) || (offset0.isEmpty && limit0.isEmpty && filterJoins.isEmpty && orderJoins.isEmpty)) { + // As in the useWindow branch above, except that with no offset/limit there's + // nothing for join-introduced fan-out to corrupt; see supportsLateralJoin. + val fastPathSafe = + supportsLateralJoin || offset0.isEmpty && limit0.isEmpty || joins.isEmpty + + if ((oneToOne && predIsOneToOne && fastPathSafe) || (offset0.isEmpty && limit0.isEmpty && filterJoins.isEmpty && orderJoins.isEmpty)) { // Case 1) one row is one object or query is simple enough to not require subqueries pred0.traverse(p => contextualiseWhereTerms(context, table, p)).flatMap { pred1 => @@ -3397,8 +3453,8 @@ trait SqlMappingLike[F[_]] extends CirceMappingLike[F] with SqlModule[F] { self frags <- alignedElems.traverse(_.toFragment) } yield { frags.reduce((x, y) => - Fragments.parentheses(x) |+| Fragments.const(" UNION ALL ") |+| Fragments - .parentheses(y)) + unionBranchToFragment(x) |+| Fragments.const( + " UNION ALL ") |+| unionBranchToFragment(y)) } } } diff --git a/modules/sql-pg/shared/src/main/scala/SqlPgMapping.scala b/modules/sql-pg/shared/src/main/scala/SqlPgMapping.scala index 4234aa18..eaac6143 100644 --- a/modules/sql-pg/shared/src/main/scala/SqlPgMapping.scala +++ b/modules/sql-pg/shared/src/main/scala/SqlPgMapping.scala @@ -66,6 +66,7 @@ trait SqlPgMappingLike[F[_]] extends SqlMappingLike[F] { orders: List[OrderSelection[_]]): SqlColumn = col def encapsulateUnionBranch(s: SqlSelect): SqlSelect = s + def unionBranchToFragment(branch: Fragment): Fragment = Fragments.parentheses(branch) def mkLateral(inner: Boolean): Laterality = Laterality.Lateral def defaultOffsetForSubquery(subquery: SqlQuery): SqlQuery = subquery def defaultOffsetForLimit(limit: Option[Int]): Option[Int] = None diff --git a/testdata/sqlite/array-join.sql b/testdata/sqlite/array-join.sql new file mode 100644 index 00000000..52ae04c7 --- /dev/null +++ b/testdata/sqlite/array-join.sql @@ -0,0 +1,39 @@ +CREATE TABLE array_join_root ( + id VARCHAR(100) PRIMARY KEY +); + +CREATE TABLE array_join_list_a ( + id VARCHAR(100) PRIMARY KEY, + root_id VARCHAR(100), + a_elem VARCHAR(100) CHECK (json_valid(a_elem) = 1) +); + +CREATE TABLE array_join_list_b ( + id VARCHAR(100) PRIMARY KEY, + root_id VARCHAR(100), + b_elem INTEGER +); + +INSERT INTO array_join_root (id) VALUES +('r0'), +('r1'); + +INSERT INTO array_join_list_a (id, root_id, a_elem) VALUES +('a0', 'r0', '["foo1", "foo2"]'), +('a1', 'r0', '["bar1", "bar2"]'), +('a2', 'r0', '["baz1", "baz2"]'), +('a3', 'r0', '["quux1", "quux2"]'), +('a4', 'r1', '["foo11", "foo22"]'), +('a5', 'r1', '["bar11", "bar22"]'), +('a6', 'r1', '["baz11", "baz22"]'), +('a7', 'r1', '["quux11", "quux22"]'); + +INSERT INTO array_join_list_b (id, root_id, b_elem) VALUES +('b0', 'r0', '23'), +('b1', 'r0', '13'), +('b2', 'r0', '17'), +('b3', 'r0', '11'), +('b4', 'r1', '231'), +('b5', 'r1', '131'), +('b6', 'r1', '171'), +('b7', 'r1', '111'); diff --git a/testdata/sqlite/coalesce.sql b/testdata/sqlite/coalesce.sql new file mode 100644 index 00000000..445f7c2a --- /dev/null +++ b/testdata/sqlite/coalesce.sql @@ -0,0 +1,42 @@ +CREATE TABLE r ( + id VARCHAR(100) PRIMARY KEY +); + +CREATE TABLE ca ( + id VARCHAR(100) PRIMARY KEY, + rid VARCHAR(100) NOT NULL, + a INTEGER NOT NULL +); + +CREATE TABLE cb ( + id VARCHAR(100) PRIMARY KEY, + rid VARCHAR(100) NOT NULL, + b INTEGER NOT NULL +); + +CREATE TABLE cc ( + id VARCHAR(100) PRIMARY KEY, + rid VARCHAR(100) NOT NULL, + c TEXT NOT NULL +); + +INSERT INTO r (id) VALUES +('R1'), +('R2'), +('R3'); + +INSERT INTO ca (id, rid, a) VALUES +('CA1a', 'R1', '10'), +('CA1b', 'R1', '11'), +('CA2', 'R2', '20'), +('CA3', 'R3', '30'); + +INSERT INTO cb (id, rid, b) VALUES +('CB2a', 'R2', 1), +('CB2b', 'R2', 0), +('CB3', 'R3', 1); + +INSERT INTO cc (id, rid, c) VALUES +('CC1', 'R1', '2020-05-27 21:00:00 +02:00'), +('CC2', 'R2', '2004-10-19 10:23:54 +02:00'), +('CC3', 'R3', '2014-10-19 10:23:54 +02:00'); diff --git a/testdata/sqlite/composite-keys.sql b/testdata/sqlite/composite-keys.sql new file mode 100644 index 00000000..36427fc4 --- /dev/null +++ b/testdata/sqlite/composite-keys.sql @@ -0,0 +1,24 @@ +CREATE TABLE composite_key_parent ( + key_1 INTEGER NOT NULL, + key_2 VARCHAR(100) NOT NULL, + PRIMARY KEY (key_1, key_2) +); + +CREATE TABLE composite_key_child ( + id INTEGER PRIMARY KEY, + parent_1 INTEGER NOT NULL, + parent_2 VARCHAR(100) NOT NULL, + FOREIGN KEY (parent_1, parent_2) REFERENCES composite_key_parent (key_1, key_2) +); + +INSERT INTO composite_key_parent (key_1, key_2) VALUES +(1, 'foo'), +(1, 'bar'), +(2, 'foo'), +(2, 'bar'); + +INSERT INTO composite_key_child (id, parent_1, parent_2) VALUES +(1, 1, 'foo'), +(2, 1, 'bar'), +(3, 2, 'foo'), +(4, 2, 'bar'); diff --git a/testdata/sqlite/cursor-json.sql b/testdata/sqlite/cursor-json.sql new file mode 100644 index 00000000..8a5f0f16 --- /dev/null +++ b/testdata/sqlite/cursor-json.sql @@ -0,0 +1,8 @@ +CREATE TABLE brands ( + id INTEGER PRIMARY KEY, + categories INTEGER +); + +INSERT INTO brands (id, categories) VALUES +('1', '8'), +('2', '16'); diff --git a/testdata/sqlite/embedding.sql b/testdata/sqlite/embedding.sql new file mode 100644 index 00000000..0f4c4699 --- /dev/null +++ b/testdata/sqlite/embedding.sql @@ -0,0 +1,39 @@ +CREATE TABLE films ( + title VARCHAR(100) PRIMARY KEY, + synopsis_short VARCHAR(100), + synopsis_long VARCHAR(100) +); + +CREATE TABLE series ( + title VARCHAR(100) PRIMARY KEY, + synopsis_short VARCHAR(100), + synopsis_long VARCHAR(100) +); + +CREATE TABLE episodes2 ( + title VARCHAR(100) PRIMARY KEY, + series_title VARCHAR(100) NOT NULL, + synopsis_short VARCHAR(100), + synopsis_long VARCHAR(100) +); + +INSERT INTO films (title, synopsis_short, synopsis_long) VALUES +('Film 1', 'Short film 1', 'Long film 1'), +('Film 2', 'Short film 2', 'Long film 2'), +('Film 3', 'Short film 3', 'Long film 3'); + +INSERT INTO series (title, synopsis_short, synopsis_long) VALUES +('Series 1', 'Short series 1', 'Long series 1'), +('Series 2', 'Short series 2', 'Long series 2'), +('Series 3', 'Short series 3', 'Long series 3'); + +INSERT INTO episodes2 (title, series_title, synopsis_short, synopsis_long) VALUES +('S01E01', 'Series 1', 'Short S01E01', 'Long S01E01'), +('S01E02', 'Series 1', 'Short S01E02', 'Long S01E02'), +('S01E03', 'Series 1', 'Short S01E03', 'Long S01E03'), +('S02E01', 'Series 2', 'Short S02E01', 'Long S02E01'), +('S02E02', 'Series 2', 'Short S02E02', 'Long S02E02'), +('S02E03', 'Series 2', 'Short S02E03', 'Long S02E03'), +('S03E01', 'Series 3', 'Short S03E01', 'Long S03E01'), +('S03E02', 'Series 3', 'Short S03E02', 'Long S03E02'), +('S03E03', 'Series 3', 'Short S03E03', 'Long S03E03'); diff --git a/testdata/sqlite/embedding2.sql b/testdata/sqlite/embedding2.sql new file mode 100644 index 00000000..ea4a2452 --- /dev/null +++ b/testdata/sqlite/embedding2.sql @@ -0,0 +1,18 @@ +CREATE TABLE t_program ( + c_program_id VARCHAR(100) NOT NULL PRIMARY KEY +); + +CREATE TABLE t_observation ( + c_program_id VARCHAR(100) NOT NULL REFERENCES t_program(c_program_id), + c_observation_id VARCHAR(100) NOT NULL PRIMARY KEY +); + +INSERT INTO t_program (c_program_id) VALUES +('foo'), +('bar'); + +INSERT INTO t_observation (c_program_id, c_observation_id) VALUES +('foo', 'fo1'), +('foo', 'fo2'), +('bar', 'bo1'), +('bar', 'bo2'); diff --git a/testdata/sqlite/filter-join-alias.sql b/testdata/sqlite/filter-join-alias.sql new file mode 100644 index 00000000..eca8a2bb --- /dev/null +++ b/testdata/sqlite/filter-join-alias.sql @@ -0,0 +1,15 @@ +CREATE TABLE episodes3 ( + id VARCHAR(100), + name VARCHAR(100), + PRIMARY KEY (id, name) +); + +CREATE TABLE images3 ( + public_url VARCHAR(100) PRIMARY KEY, + id VARCHAR(100) NOT NULL, + name VARCHAR(100) NOT NULL +); + +INSERT INTO episodes3 (id, name) VALUES ('a', 'abc'); + +INSERT INTO images3 (public_url, id, name) VALUES ('test', 'a', 'abc'); diff --git a/testdata/sqlite/filter-order-offset-limit-2.sql b/testdata/sqlite/filter-order-offset-limit-2.sql new file mode 100644 index 00000000..9a009def --- /dev/null +++ b/testdata/sqlite/filter-order-offset-limit-2.sql @@ -0,0 +1,48 @@ +CREATE TABLE root_2 ( + id VARCHAR(100) PRIMARY KEY +); + +CREATE TABLE containers_2 ( + id VARCHAR(100) PRIMARY KEY, + root_id VARCHAR(100) +); + +CREATE TABLE lista_2 ( + id VARCHAR(100) PRIMARY KEY, + container_id VARCHAR(100) +); + +CREATE TABLE listb_2 ( + id VARCHAR(100) PRIMARY KEY, + container_id VARCHAR(100) +); + +INSERT INTO root_2 (id) VALUES +('r0'), +('r1'); + +INSERT INTO containers_2 (id, root_id) VALUES +('c0', 'r0'), +('c1', 'r0'), +('c2', 'r1'), +('c3', 'r1'); + +INSERT INTO lista_2 (id, container_id) VALUES +('a00', 'c0'), +('a01', 'c0'), +('a10', 'c1'), +('a11', 'c1'), +('a20', 'c2'), +('a21', 'c2'), +('a30', 'c3'), +('a31', 'c3'); + +INSERT INTO listb_2 (id, container_id) VALUES +('b00', 'c0'), +('b01', 'c0'), +('b10', 'c1'), +('b11', 'c1'), +('b20', 'c2'), +('b21', 'c2'), +('b30', 'c3'), +('b31', 'c3'); diff --git a/testdata/sqlite/filter-order-offset-limit.sql b/testdata/sqlite/filter-order-offset-limit.sql new file mode 100644 index 00000000..8c11be47 --- /dev/null +++ b/testdata/sqlite/filter-order-offset-limit.sql @@ -0,0 +1,39 @@ +CREATE TABLE root ( + id VARCHAR(100) PRIMARY KEY +); + +CREATE TABLE lista ( + id VARCHAR(100) PRIMARY KEY, + root_id VARCHAR(100), + a_elem VARCHAR(100) +); + +CREATE TABLE listb ( + id VARCHAR(100) PRIMARY KEY, + root_id VARCHAR(100), + b_elem INTEGER +); + +INSERT INTO root (id) VALUES +('r0'), +('r1'); + +INSERT INTO lista (id, root_id, a_elem) VALUES +('a0', 'r0', 'foo'), +('a1', 'r0', 'bar'), +('a2', 'r0', 'baz'), +('a3', 'r0', 'quux'), +('a4', 'r1', 'foo1'), +('a5', 'r1', 'bar1'), +('a6', 'r1', 'baz1'), +('a7', 'r1', 'quux1'); + +INSERT INTO listb (id, root_id, b_elem) VALUES +('b0', 'r0', 23), +('b1', 'r0', 13), +('b2', 'r0', 17), +('b3', 'r0', 11), +('b4', 'r1', 231), +('b5', 'r1', 131), +('b6', 'r1', 171), +('b7', 'r1', 111); diff --git a/testdata/sqlite/graph.sql b/testdata/sqlite/graph.sql new file mode 100644 index 00000000..2644d870 --- /dev/null +++ b/testdata/sqlite/graph.sql @@ -0,0 +1,21 @@ +CREATE TABLE graph_node ( + id INTEGER PRIMARY KEY +); + +CREATE TABLE graph_edge ( + id INTEGER PRIMARY KEY, + a INTEGER, + b INTEGER +); + +INSERT INTO graph_node (id) VALUES +('1'), +('2'), +('3'), +('4'); + +INSERT INTO graph_edge (id, a, b) VALUES +('12', '1', '2'), +('13', '1', '3'), +('24', '2', '4'), +('34', '3', '4'); diff --git a/testdata/sqlite/interfaces.sql b/testdata/sqlite/interfaces.sql new file mode 100644 index 00000000..813dd222 --- /dev/null +++ b/testdata/sqlite/interfaces.sql @@ -0,0 +1,37 @@ +CREATE TABLE entities ( + id VARCHAR(100) PRIMARY KEY, + entity_type INTEGER NOT NULL, + title VARCHAR(100), + synopsis_short VARCHAR(100), + synopsis_long VARCHAR(100), + film_rating VARCHAR(100), + film_label INTEGER, + series_number_of_episodes INTEGER, + series_label VARCHAR(100), + image_url VARCHAR(100), + hidden_image_url VARCHAR(100) +); + +CREATE TABLE episodes ( + id VARCHAR(100) PRIMARY KEY, + series_id VARCHAR(100) NOT NULL, + title VARCHAR(100), + synopsis_short VARCHAR(100), + synopsis_long VARCHAR(100) +); + +INSERT INTO entities (id, entity_type, title, synopsis_short, synopsis_long, film_rating, film_label, series_number_of_episodes, series_label, image_url, hidden_image_url) VALUES +('1', 1, 'Film 1', 'Short film 1', 'Long film 1', 'PG', 1, NULL, NULL, 'http://www.example.com/film1.jpg', NULL), +('2', 1, 'Film 2', 'Short film 2', 'Long film 2', 'U', 2, NULL, NULL, 'http://www.example.com/film2.jpg', NULL), +('3', 1, 'Film 3', 'Short film 3', 'Long film 3', '15', 3, NULL, NULL, 'http://www.example.com/film3.jpg', NULL), +('4', 2, 'Series 1', 'Short series 1', 'Long series 1', NULL, NULL, 5, 'One', NULL, 'hidden_series1.jpg'), +('5', 2, 'Series 2', 'Short series 2', 'Long series 2', NULL, NULL, 6, 'Two', NULL, 'hidden_series2.jpg'), +('6', 2, 'Series 3', 'Short series 3', 'Long series 3', NULL, NULL, 7, 'Three', NULL, 'hidden_series3.jpg'); + +INSERT INTO episodes (id, series_id, title, synopsis_short, synopsis_long) VALUES +('1', '4', 'S1E1', 'Short S1E1', 'Long S1E1'), +('2', '4', 'S1E2', 'Short S1E2', 'Long S1E2'), +('3', '5', 'S2E1', 'Short S2E1', 'Long S2E1'), +('4', '5', 'S2E2', 'Short S2E2', 'Long S2E2'), +('5', '6', 'S3E1', 'Short S3E1', 'Long S3E1'), +('6', '6', 'S3E2', 'Short S3E2', 'Long S3E2'); diff --git a/testdata/sqlite/jsonb.sql b/testdata/sqlite/jsonb.sql new file mode 100644 index 00000000..79fb256b --- /dev/null +++ b/testdata/sqlite/jsonb.sql @@ -0,0 +1,9 @@ +CREATE TABLE records ( + id INTEGER PRIMARY KEY, + record TEXT CHECK (json_valid(record) = 1) +); + +INSERT INTO records (id, record) VALUES +('1', '{"bool":true,"int":1,"float":1.3,"string":"foo","id":"Foo","array":[1,2,3],"choice":"ONE","object":{"id":"obj0","aField":27},"children":[{"id":"a0","aField":11},{"id":"b0","bField":"wibble"}]}'), +('2', '{"bool":false,"int":2,"float":2.4,"string":"bar","id":"Bar","array":[4,5,6],"choice":"TWO","object":{"id":"obj1","aField":28},"children":[{"id":"a1","aField":12},{"id":"b1","bField":"wobble"}]}'), +('3', '{"bool":true,"int":3,"float":3.5,"string":"baz","id":"Baz","array":[7,8,9],"choice":"THREE","object":{"id":"obj2","aField":29},"children":[{"id":"a2","aField":13},{"id":"b2","bField":"quux"}]}'); diff --git a/testdata/sqlite/like.sql b/testdata/sqlite/like.sql new file mode 100644 index 00000000..8f23250c --- /dev/null +++ b/testdata/sqlite/like.sql @@ -0,0 +1,9 @@ +CREATE TABLE likes ( + id INTEGER PRIMARY KEY, + notnullable VARCHAR(100) NOT NULL, + nullable VARCHAR(100) +); + +INSERT INTO likes (id, notnullable, nullable) VALUES +(1, 'foo', NULL), +(2, 'bar', 'baz'); diff --git a/testdata/sqlite/movies.sql b/testdata/sqlite/movies.sql new file mode 100644 index 00000000..0687a262 --- /dev/null +++ b/testdata/sqlite/movies.sql @@ -0,0 +1,44 @@ +DROP TABLE IF EXISTS movies; + +CREATE TABLE movies ( + id VARCHAR(36) PRIMARY KEY, + title VARCHAR(100) NOT NULL, + genre INTEGER NOT NULL, + releasedate TEXT NOT NULL, + showtime TEXT NOT NULL, + nextshowing TEXT NOT NULL, + duration INTEGER NOT NULL, + categories VARCHAR(100) CHECK (json_valid(categories) = 1) NOT NULL, + features VARCHAR(100) CHECK (json_valid(features) = 1) NOT NULL, + tags INTEGER NOT NULL +); + +INSERT INTO movies (id, title, genre, releasedate, showtime, nextshowing, duration, categories, features, tags) VALUES +('6a7837fc-b463-4d32-b628-0f4b3065cb21', 'Celine et Julie Vont en Bateau', '1', '1974-10-07', '19:35:00', '2020-05-22 19:35:00 +00:00', 12300000, '["drama","comedy"]', '["hd","hls"]', '1'); + +INSERT INTO movies (id, title, genre, releasedate, showtime, nextshowing, duration, categories, features, tags) VALUES +('11daf8c0-11c3-4453-bfe1-cb6e6e2f9115', 'Duelle', '1', '1975-09-15', '19:20:00', '2020-05-27 19:20:00 +00:00', 7260000, '["drama"]', '["hd"]', '1'); + +INSERT INTO movies (id, title, genre, releasedate, showtime, nextshowing, duration, categories, features, tags) VALUES +('aea9756f-621b-42d5-b130-71f3916c4ba3', 'L''Amour fou', '1', '1969-01-15', '21:00:00', '2020-05-27 21:00:00 +00:00', 15120000, '["drama"]', '["hd"]', '2'); + +INSERT INTO movies (id, title, genre, releasedate, showtime, nextshowing, duration, categories, features, tags) VALUES +('2ddb041f-86c2-4bd3-848c-990a3862634e', 'Last Year at Marienbad', '1', '1961-06-25', '20:30:00', '2020-05-26 20:30:00 +00:00', 5640000, '["drama"]', '["hd"]', '5'); + +INSERT INTO movies (id, title, genre, releasedate, showtime, nextshowing, duration, categories, features, tags) VALUES +('8ae5b13b-044c-4ff0-8b71-ccdb7d77cd88', 'Zazie dans le Métro', '3', '1960-10-28', '20:15:00', '2020-05-25 20:15:00 +00:00', 5340000, '["drama", "comedy"]', '["hd"]', '3'); + +INSERT INTO movies (id, title, genre, releasedate, showtime, nextshowing, duration, categories, features, tags) VALUES +('9dce9deb-9188-4cc2-9685-9842b8abdd34', 'Alphaville', '2', '1965-05-05', '19:45:00', '2020-05-19 19:45:00 +00:00', 5940000, '["drama", "science fiction"]', '["hd"]', '4'); + +INSERT INTO movies (id, title, genre, releasedate, showtime, nextshowing, duration, categories, features, tags) VALUES +('1bf00ac6-91ab-4e51-b686-3fd5e2324077', 'Stalker', '1', '1979-05-13', '15:30:00', '2020-05-19 15:30:00 +00:00', 9660000, '["drama", "science fiction"]', '["hd"]', '7'); + +INSERT INTO movies (id, title, genre, releasedate, showtime, nextshowing, duration, categories, features, tags) VALUES +('6a878e06-6563-4a0c-acd9-d28dcfb2e91a', 'Weekend', '3', '1967-12-29', '22:30:00', '2020-05-19 22:30:00 +00:00', 6300000, '["drama", "comedy"]', '["hd"]', '2'); + +INSERT INTO movies (id, title, genre, releasedate, showtime, nextshowing, duration, categories, features, tags) VALUES +('2a40415c-ea6a-413f-bbef-a80ae280c4ff', 'Daisies', '3', '1966-12-30', '21:30:00', '2020-05-15 21:30:00 +00:00', 4560000, '["drama", "comedy"]', '["hd"]', '6'); + +INSERT INTO movies (id, title, genre, releasedate, showtime, nextshowing, duration, categories, features, tags) VALUES +('2f6dcb0a-4122-4a21-a1c6-534744dd6b85', 'Le Pont du Nord', '1', '1982-01-13', '20:45:00', '2020-05-11 20:45:00 +00:00', 7620000, '["drama"]', '["hd"]', '3'); diff --git a/testdata/sqlite/mutation.sql b/testdata/sqlite/mutation.sql new file mode 100644 index 00000000..12013f5c --- /dev/null +++ b/testdata/sqlite/mutation.sql @@ -0,0 +1,3 @@ +-- SQLite has no sequences. DoobieSqliteSuites.MutationSuite mints ids for the tests using this +-- file (via `city_copy`, a runtime copy of the `city` table from world.sql) by hand instead, so +-- no schema setup is needed here. diff --git a/testdata/sqlite/projection.sql b/testdata/sqlite/projection.sql new file mode 100644 index 00000000..eab04a07 --- /dev/null +++ b/testdata/sqlite/projection.sql @@ -0,0 +1,34 @@ +CREATE TABLE level0 ( + id VARCHAR(100) PRIMARY KEY +); + +CREATE TABLE level1 ( + id VARCHAR(100) PRIMARY KEY, + level0_id VARCHAR(100) +); + +CREATE TABLE level2 ( + id VARCHAR(100) PRIMARY KEY, + level1_id VARCHAR(100), + attr INTEGER +); + +INSERT INTO level0 (id) VALUES +('00'), +('01'); + +INSERT INTO level1 (id, level0_id) VALUES +('10', '00'), +('11', '00'), +('12', '01'), +('13', '01'); + +INSERT INTO level2 (id, level1_id, attr) VALUES +('20', '10', 0), +('21', '10', 0), +('22', '11', 0), +('23', '11', 0), +('24', '12', 1), +('25', '12', 0), +('26', '13', 0), +('27', '13', 0); diff --git a/testdata/sqlite/recursive-interfaces.sql b/testdata/sqlite/recursive-interfaces.sql new file mode 100644 index 00000000..89b46674 --- /dev/null +++ b/testdata/sqlite/recursive-interfaces.sql @@ -0,0 +1,17 @@ +CREATE TABLE recursive_interface_items ( + id VARCHAR(100) PRIMARY KEY, + item_type INTEGER NOT NULL +); + +CREATE TABLE recursive_interface_next_items ( + id VARCHAR(100) PRIMARY KEY, + next_item VARCHAR(100) +); + +INSERT INTO recursive_interface_items (id, item_type) VALUES +('1', '1'), +('2', '2'); + +INSERT INTO recursive_interface_next_items (id, next_item) VALUES +('1', '2'), +('2', '1'); diff --git a/testdata/sqlite/sibling-lists.sql b/testdata/sqlite/sibling-lists.sql new file mode 100644 index 00000000..5d479320 --- /dev/null +++ b/testdata/sqlite/sibling-lists.sql @@ -0,0 +1,37 @@ +CREATE TABLE seq_scan_a +( + id VARCHAR(100) PRIMARY KEY +); + +CREATE TABLE seq_scan_b +( + id VARCHAR(100) PRIMARY KEY, + a_id VARCHAR(100) NOT NULL +); + +CREATE INDEX seq_scan_b_a_id_idx ON seq_scan_b(a_id); + +CREATE TABLE seq_scan_c +( + id VARCHAR(100) PRIMARY KEY, + b_id VARCHAR(100) NOT NULL, + name_c VARCHAR(100) NOT NULL +); + +CREATE INDEX seq_scan_c_b_id_idx ON seq_scan_c(b_id); + +CREATE TABLE seq_scan_d +( + id VARCHAR(100) PRIMARY KEY, + b_id VARCHAR(100) NOT NULL, + name_d VARCHAR(100) NOT NULL +); + +CREATE INDEX seq_scan_d_b_id_idx ON seq_scan_d(b_id); + +INSERT INTO seq_scan_a(id) VALUES('id_a_1'); + +INSERT INTO seq_scan_b(id, a_id) VALUES('id_b_1', 'id_a_1'); + +INSERT INTO seq_scan_c(id, b_id, name_c) VALUES('id_c_1', 'id_b_1', 'name_c'); +INSERT INTO seq_scan_d(id, b_id, name_d) VALUES('id_d_1', 'id_b_1', 'name_d'); diff --git a/testdata/sqlite/tree.sql b/testdata/sqlite/tree.sql new file mode 100644 index 00000000..35aadb47 --- /dev/null +++ b/testdata/sqlite/tree.sql @@ -0,0 +1,14 @@ +CREATE TABLE bintree ( + id INTEGER PRIMARY KEY, + left_child INTEGER, + right_child INTEGER +); + +INSERT INTO bintree (id, left_child, right_child) VALUES +(0, 1, 2), +(1, 3, 4), +(2, 5, 6), +(3, NULL, NULL), +(4, NULL, NULL), +(5, NULL, NULL), +(6, NULL, NULL); diff --git a/testdata/sqlite/unions.sql b/testdata/sqlite/unions.sql new file mode 100644 index 00000000..9129dc46 --- /dev/null +++ b/testdata/sqlite/unions.sql @@ -0,0 +1,10 @@ +CREATE TABLE collections ( + id VARCHAR(100) PRIMARY KEY, + item_type VARCHAR(100) NOT NULL, + itema VARCHAR(100), + itemb VARCHAR(100) +); + +INSERT INTO collections (id, item_type, itema, itemb) VALUES +('1', 'ItemA', 'A', NULL), +('2', 'ItemB', NULL, 'B'); diff --git a/testdata/sqlite/world.sql b/testdata/sqlite/world.sql new file mode 100644 index 00000000..27e6fae3 --- /dev/null +++ b/testdata/sqlite/world.sql @@ -0,0 +1,5357 @@ +CREATE TABLE city ( + id integer NOT NULL PRIMARY KEY, + name nvarchar(100) NOT NULL, + countrycode varchar(3) NOT NULL, + district nvarchar(100) NOT NULL, + population integer NOT NULL +); + +CREATE TABLE country ( + code varchar(3) NOT NULL PRIMARY KEY, + name nvarchar(100) NOT NULL, + continent nvarchar(100) NOT NULL, + region nvarchar(100) NOT NULL, + surfacearea real NOT NULL, + indepyear smallint, + population integer NOT NULL, + lifeexpectancy real, + gnp numeric(10,2), + gnpold numeric(10,2), + localname nvarchar(100) NOT NULL, + governmentform nvarchar(100) NOT NULL, + headofstate nvarchar(100), + capital integer, + code2 varchar(2) NOT NULL, + FOREIGN KEY (capital) REFERENCES city(id) +); + +CREATE TABLE countrylanguage ( + countrycode varchar(3) NOT NULL, + language nvarchar(100) NOT NULL, + isofficial integer NOT NULL, + percentage real NOT NULL, + PRIMARY KEY (countrycode, language), + FOREIGN KEY (countrycode) REFERENCES country(code) +); + +INSERT INTO city (id, name, countrycode, district, population) VALUES +('1', 'Kabul', 'AFG', 'Kabol', '1780000'), +('2', 'Qandahar', 'AFG', 'Qandahar', '237500'), +('3', 'Herat', 'AFG', 'Herat', '186800'), +('4', 'Mazar-e-Sharif', 'AFG', 'Balkh', '127800'), +('5', 'Amsterdam', 'NLD', 'Noord-Holland', '731200'), +('6', 'Rotterdam', 'NLD', 'Zuid-Holland', '593321'), +('7', 'Haag', 'NLD', 'Zuid-Holland', '440900'), +('8', 'Utrecht', 'NLD', 'Utrecht', '234323'), +('9', 'Eindhoven', 'NLD', 'Noord-Brabant', '201843'), +('10', 'Tilburg', 'NLD', 'Noord-Brabant', '193238'), +('11', 'Groningen', 'NLD', 'Groningen', '172701'), +('12', 'Breda', 'NLD', 'Noord-Brabant', '160398'), +('13', 'Apeldoorn', 'NLD', 'Gelderland', '153491'), +('14', 'Nijmegen', 'NLD', 'Gelderland', '152463'), +('15', 'Enschede', 'NLD', 'Overijssel', '149544'), +('16', 'Haarlem', 'NLD', 'Noord-Holland', '148772'), +('17', 'Almere', 'NLD', 'Flevoland', '142465'), +('18', 'Arnhem', 'NLD', 'Gelderland', '138020'), +('19', 'Zaanstad', 'NLD', 'Noord-Holland', '135621'), +('20', '´s-Hertogenbosch', 'NLD', 'Noord-Brabant', '129170'), +('21', 'Amersfoort', 'NLD', 'Utrecht', '126270'), +('22', 'Maastricht', 'NLD', 'Limburg', '122087'), +('23', 'Dordrecht', 'NLD', 'Zuid-Holland', '119811'), +('24', 'Leiden', 'NLD', 'Zuid-Holland', '117196'), +('25', 'Haarlemmermeer', 'NLD', 'Noord-Holland', '110722'), +('26', 'Zoetermeer', 'NLD', 'Zuid-Holland', '110214'), +('27', 'Emmen', 'NLD', 'Drenthe', '105853'), +('28', 'Zwolle', 'NLD', 'Overijssel', '105819'), +('29', 'Ede', 'NLD', 'Gelderland', '101574'), +('30', 'Delft', 'NLD', 'Zuid-Holland', '95268'), +('31', 'Heerlen', 'NLD', 'Limburg', '95052'), +('32', 'Alkmaar', 'NLD', 'Noord-Holland', '92713'), +('33', 'Willemstad', 'ANT', 'Curaçao', '2345'), +('34', 'Tirana', 'ALB', 'Tirana', '270000'), +('35', 'Alger', 'DZA', 'Alger', '2168000'), +('36', 'Oran', 'DZA', 'Oran', '609823'), +('37', 'Constantine', 'DZA', 'Constantine', '443727'), +('38', 'Annaba', 'DZA', 'Annaba', '222518'), +('39', 'Batna', 'DZA', 'Batna', '183377'), +('40', 'Sétif', 'DZA', 'Sétif', '179055'), +('41', 'Sidi Bel Abbčs', 'DZA', 'Sidi Bel Abbčs', '153106'), +('42', 'Skikda', 'DZA', 'Skikda', '128747'), +('43', 'Biskra', 'DZA', 'Biskra', '128281'), +('44', 'Blida (el-Boulaida)', 'DZA', 'Blida', '127284'), +('45', 'Béjaďa', 'DZA', 'Béjaďa', '117162'), +('46', 'Mostaganem', 'DZA', 'Mostaganem', '115212'), +('47', 'Tébessa', 'DZA', 'Tébessa', '112007'), +('48', 'Tlemcen (Tilimsen)', 'DZA', 'Tlemcen', '110242'), +('49', 'Béchar', 'DZA', 'Béchar', '107311'), +('50', 'Tiaret', 'DZA', 'Tiaret', '100118'), +('51', 'Ech-Chleff (el-Asnam)', 'DZA', 'Chlef', '96794'), +('52', 'Ghardaďa', 'DZA', 'Ghardaďa', '89415'), +('53', 'Tafuna', 'ASM', 'Tutuila', '5200'), +('54', 'Fagatogo', 'ASM', 'Tutuila', '2323'), +('55', 'Andorra la Vella', 'AND', 'Andorra la Vella', '21189'), +('56', 'Luanda', 'AGO', 'Luanda', '2022000'), +('57', 'Huambo', 'AGO', 'Huambo', '163100'), +('58', 'Lobito', 'AGO', 'Benguela', '130000'), +('59', 'Benguela', 'AGO', 'Benguela', '128300'), +('60', 'Namibe', 'AGO', 'Namibe', '118200'), +('61', 'South Hill', 'AIA', '–', '961'), +('62', 'The Valley', 'AIA', '–', '595'), +('63', 'Saint John´s', 'ATG', 'St John', '24000'), +('64', 'Dubai', 'ARE', 'Dubai', '669181'), +('65', 'Abu Dhabi', 'ARE', 'Abu Dhabi', '398695'), +('66', 'Sharja', 'ARE', 'Sharja', '320095'), +('67', 'al-Ayn', 'ARE', 'Abu Dhabi', '225970'), +('68', 'Ajman', 'ARE', 'Ajman', '114395'), +('69', 'Buenos Aires', 'ARG', 'Distrito Federal', '2982146'), +('70', 'La Matanza', 'ARG', 'Buenos Aires', '1266461'), +('71', 'Córdoba', 'ARG', 'Córdoba', '1157507'), +('72', 'Rosario', 'ARG', 'Santa Fé', '907718'), +('73', 'Lomas de Zamora', 'ARG', 'Buenos Aires', '622013'), +('74', 'Quilmes', 'ARG', 'Buenos Aires', '559249'), +('75', 'Almirante Brown', 'ARG', 'Buenos Aires', '538918'), +('76', 'La Plata', 'ARG', 'Buenos Aires', '521936'), +('77', 'Mar del Plata', 'ARG', 'Buenos Aires', '512880'), +('78', 'San Miguel de Tucumán', 'ARG', 'Tucumán', '470809'), +('79', 'Lanús', 'ARG', 'Buenos Aires', '469735'), +('80', 'Merlo', 'ARG', 'Buenos Aires', '463846'), +('81', 'General San Martín', 'ARG', 'Buenos Aires', '422542'), +('82', 'Salta', 'ARG', 'Salta', '367550'), +('83', 'Moreno', 'ARG', 'Buenos Aires', '356993'), +('84', 'Santa Fé', 'ARG', 'Santa Fé', '353063'), +('85', 'Avellaneda', 'ARG', 'Buenos Aires', '353046'), +('86', 'Tres de Febrero', 'ARG', 'Buenos Aires', '352311'), +('87', 'Morón', 'ARG', 'Buenos Aires', '349246'), +('88', 'Florencio Varela', 'ARG', 'Buenos Aires', '315432'), +('89', 'San Isidro', 'ARG', 'Buenos Aires', '306341'), +('90', 'Tigre', 'ARG', 'Buenos Aires', '296226'), +('91', 'Malvinas Argentinas', 'ARG', 'Buenos Aires', '290335'), +('92', 'Vicente López', 'ARG', 'Buenos Aires', '288341'), +('93', 'Berazategui', 'ARG', 'Buenos Aires', '276916'), +('94', 'Corrientes', 'ARG', 'Corrientes', '258103'), +('95', 'San Miguel', 'ARG', 'Buenos Aires', '248700'), +('96', 'Bahía Blanca', 'ARG', 'Buenos Aires', '239810'), +('97', 'Esteban Echeverría', 'ARG', 'Buenos Aires', '235760'), +('98', 'Resistencia', 'ARG', 'Chaco', '229212'), +('99', 'José C. Paz', 'ARG', 'Buenos Aires', '221754'), +('100', 'Paraná', 'ARG', 'Entre Rios', '207041'), +('101', 'Godoy Cruz', 'ARG', 'Mendoza', '206998'), +('102', 'Posadas', 'ARG', 'Misiones', '201273'), +('103', 'Guaymallén', 'ARG', 'Mendoza', '200595'), +('104', 'Santiago del Estero', 'ARG', 'Santiago del Estero', '189947'), +('105', 'San Salvador de Jujuy', 'ARG', 'Jujuy', '178748'), +('106', 'Hurlingham', 'ARG', 'Buenos Aires', '170028'), +('107', 'Neuquén', 'ARG', 'Neuquén', '167296'), +('108', 'Ituzaingó', 'ARG', 'Buenos Aires', '158197'), +('109', 'San Fernando', 'ARG', 'Buenos Aires', '153036'), +('110', 'Formosa', 'ARG', 'Formosa', '147636'), +('111', 'Las Heras', 'ARG', 'Mendoza', '145823'), +('112', 'La Rioja', 'ARG', 'La Rioja', '138117'), +('113', 'San Fernando del Valle de Cata', 'ARG', 'Catamarca', '134935'), +('114', 'Río Cuarto', 'ARG', 'Córdoba', '134355'), +('115', 'Comodoro Rivadavia', 'ARG', 'Chubut', '124104'), +('116', 'Mendoza', 'ARG', 'Mendoza', '123027'), +('117', 'San Nicolás de los Arroyos', 'ARG', 'Buenos Aires', '119302'), +('118', 'San Juan', 'ARG', 'San Juan', '119152'), +('119', 'Escobar', 'ARG', 'Buenos Aires', '116675'), +('120', 'Concordia', 'ARG', 'Entre Rios', '116485'), +('121', 'Pilar', 'ARG', 'Buenos Aires', '113428'), +('122', 'San Luis', 'ARG', 'San Luis', '110136'), +('123', 'Ezeiza', 'ARG', 'Buenos Aires', '99578'), +('124', 'San Rafael', 'ARG', 'Mendoza', '94651'), +('125', 'Tandil', 'ARG', 'Buenos Aires', '91101'), +('126', 'Yerevan', 'ARM', 'Yerevan', '1248700'), +('127', 'Gjumri', 'ARM', 'Širak', '211700'), +('128', 'Vanadzor', 'ARM', 'Lori', '172700'), +('129', 'Oranjestad', 'ABW', '–', '29034'), +('130', 'Sydney', 'AUS', 'New South Wales', '3276207'), +('131', 'Melbourne', 'AUS', 'Victoria', '2865329'), +('132', 'Brisbane', 'AUS', 'Queensland', '1291117'), +('133', 'Perth', 'AUS', 'West Australia', '1096829'), +('134', 'Adelaide', 'AUS', 'South Australia', '978100'), +('135', 'Canberra', 'AUS', 'Capital Region', '322723'), +('136', 'Gold Coast', 'AUS', 'Queensland', '311932'), +('137', 'Newcastle', 'AUS', 'New South Wales', '270324'), +('138', 'Central Coast', 'AUS', 'New South Wales', '227657'), +('139', 'Wollongong', 'AUS', 'New South Wales', '219761'), +('140', 'Hobart', 'AUS', 'Tasmania', '126118'), +('141', 'Geelong', 'AUS', 'Victoria', '125382'), +('142', 'Townsville', 'AUS', 'Queensland', '109914'), +('143', 'Cairns', 'AUS', 'Queensland', '92273'), +('144', 'Baku', 'AZE', 'Baki', '1787800'), +('145', 'Gäncä', 'AZE', 'Gäncä', '299300'), +('146', 'Sumqayit', 'AZE', 'Sumqayit', '283000'), +('147', 'Mingäçevir', 'AZE', 'Mingäçevir', '93900'), +('148', 'Nassau', 'BHS', 'New Providence', '172000'), +('149', 'al-Manama', 'BHR', 'al-Manama', '148000'), +('150', 'Dhaka', 'BGD', 'Dhaka', '3612850'), +('151', 'Chittagong', 'BGD', 'Chittagong', '1392860'), +('152', 'Khulna', 'BGD', 'Khulna', '663340'), +('153', 'Rajshahi', 'BGD', 'Rajshahi', '294056'), +('154', 'Narayanganj', 'BGD', 'Dhaka', '202134'), +('155', 'Rangpur', 'BGD', 'Rajshahi', '191398'), +('156', 'Mymensingh', 'BGD', 'Dhaka', '188713'), +('157', 'Barisal', 'BGD', 'Barisal', '170232'), +('158', 'Tungi', 'BGD', 'Dhaka', '168702'), +('159', 'Jessore', 'BGD', 'Khulna', '139710'), +('160', 'Comilla', 'BGD', 'Chittagong', '135313'), +('161', 'Nawabganj', 'BGD', 'Rajshahi', '130577'), +('162', 'Dinajpur', 'BGD', 'Rajshahi', '127815'), +('163', 'Bogra', 'BGD', 'Rajshahi', '120170'), +('164', 'Sylhet', 'BGD', 'Sylhet', '117396'), +('165', 'Brahmanbaria', 'BGD', 'Chittagong', '109032'), +('166', 'Tangail', 'BGD', 'Dhaka', '106004'), +('167', 'Jamalpur', 'BGD', 'Dhaka', '103556'), +('168', 'Pabna', 'BGD', 'Rajshahi', '103277'), +('169', 'Naogaon', 'BGD', 'Rajshahi', '101266'), +('170', 'Sirajganj', 'BGD', 'Rajshahi', '99669'), +('171', 'Narsinghdi', 'BGD', 'Dhaka', '98342'), +('172', 'Saidpur', 'BGD', 'Rajshahi', '96777'), +('173', 'Gazipur', 'BGD', 'Dhaka', '96717'), +('174', 'Bridgetown', 'BRB', 'St Michael', '6070'), +('175', 'Antwerpen', 'BEL', 'Antwerpen', '446525'), +('176', 'Gent', 'BEL', 'East Flanderi', '224180'), +('177', 'Charleroi', 'BEL', 'Hainaut', '200827'), +('178', 'Ličge', 'BEL', 'Ličge', '185639'), +('179', 'Bruxelles [Brussel]', 'BEL', 'Bryssel', '133859'), +('180', 'Brugge', 'BEL', 'West Flanderi', '116246'), +('181', 'Schaerbeek', 'BEL', 'Bryssel', '105692'), +('182', 'Namur', 'BEL', 'Namur', '105419'), +('183', 'Mons', 'BEL', 'Hainaut', '90935'), +('184', 'Belize City', 'BLZ', 'Belize City', '55810'), +('185', 'Belmopan', 'BLZ', 'Cayo', '7105'), +('186', 'Cotonou', 'BEN', 'Atlantique', '536827'), +('187', 'Porto-Novo', 'BEN', 'Ouémé', '194000'), +('188', 'Djougou', 'BEN', 'Atacora', '134099'), +('189', 'Parakou', 'BEN', 'Borgou', '103577'), +('190', 'Saint George', 'BMU', 'Saint George´s', '1800'), +('191', 'Hamilton', 'BMU', 'Hamilton', '1200'), +('192', 'Thimphu', 'BTN', 'Thimphu', '22000'), +('193', 'Santa Cruz de la Sierra', 'BOL', 'Santa Cruz', '935361'), +('194', 'La Paz', 'BOL', 'La Paz', '758141'), +('195', 'El Alto', 'BOL', 'La Paz', '534466'), +('196', 'Cochabamba', 'BOL', 'Cochabamba', '482800'), +('197', 'Oruro', 'BOL', 'Oruro', '223553'), +('198', 'Sucre', 'BOL', 'Chuquisaca', '178426'), +('199', 'Potosí', 'BOL', 'Potosí', '140642'), +('200', 'Tarija', 'BOL', 'Tarija', '125255'), +('201', 'Sarajevo', 'BIH', 'Federaatio', '360000'), +('202', 'Banja Luka', 'BIH', 'Republika Srpska', '143079'), +('203', 'Zenica', 'BIH', 'Federaatio', '96027'), +('204', 'Gaborone', 'BWA', 'Gaborone', '213017'), +('205', 'Francistown', 'BWA', 'Francistown', '101805'), +('206', 'Săo Paulo', 'BRA', 'Săo Paulo', '9968485'), +('207', 'Rio de Janeiro', 'BRA', 'Rio de Janeiro', '5598953'), +('208', 'Salvador', 'BRA', 'Bahia', '2302832'), +('209', 'Belo Horizonte', 'BRA', 'Minas Gerais', '2139125'), +('210', 'Fortaleza', 'BRA', 'Ceará', '2097757'), +('211', 'Brasília', 'BRA', 'Distrito Federal', '1969868'), +('212', 'Curitiba', 'BRA', 'Paraná', '1584232'), +('213', 'Recife', 'BRA', 'Pernambuco', '1378087'), +('214', 'Porto Alegre', 'BRA', 'Rio Grande do Sul', '1314032'), +('215', 'Manaus', 'BRA', 'Amazonas', '1255049'), +('216', 'Belém', 'BRA', 'Pará', '1186926'), +('217', 'Guarulhos', 'BRA', 'Săo Paulo', '1095874'), +('218', 'Goiânia', 'BRA', 'Goiás', '1056330'), +('219', 'Campinas', 'BRA', 'Săo Paulo', '950043'), +('220', 'Săo Gonçalo', 'BRA', 'Rio de Janeiro', '869254'), +('221', 'Nova Iguaçu', 'BRA', 'Rio de Janeiro', '862225'), +('222', 'Săo Luís', 'BRA', 'Maranhăo', '837588'), +('223', 'Maceió', 'BRA', 'Alagoas', '786288'), +('224', 'Duque de Caxias', 'BRA', 'Rio de Janeiro', '746758'), +('225', 'Săo Bernardo do Campo', 'BRA', 'Săo Paulo', '723132'), +('226', 'Teresina', 'BRA', 'Piauí', '691942'), +('227', 'Natal', 'BRA', 'Rio Grande do Norte', '688955'), +('228', 'Osasco', 'BRA', 'Săo Paulo', '659604'), +('229', 'Campo Grande', 'BRA', 'Mato Grosso do Sul', '649593'), +('230', 'Santo André', 'BRA', 'Săo Paulo', '630073'), +('231', 'Joăo Pessoa', 'BRA', 'Paraíba', '584029'), +('232', 'Jaboatăo dos Guararapes', 'BRA', 'Pernambuco', '558680'), +('233', 'Contagem', 'BRA', 'Minas Gerais', '520801'), +('234', 'Săo José dos Campos', 'BRA', 'Săo Paulo', '515553'), +('235', 'Uberlândia', 'BRA', 'Minas Gerais', '487222'), +('236', 'Feira de Santana', 'BRA', 'Bahia', '479992'), +('237', 'Ribeirăo Preto', 'BRA', 'Săo Paulo', '473276'), +('238', 'Sorocaba', 'BRA', 'Săo Paulo', '466823'), +('239', 'Niterói', 'BRA', 'Rio de Janeiro', '459884'), +('240', 'Cuiabá', 'BRA', 'Mato Grosso', '453813'), +('241', 'Juiz de Fora', 'BRA', 'Minas Gerais', '450288'), +('242', 'Aracaju', 'BRA', 'Sergipe', '445555'), +('243', 'Săo Joăo de Meriti', 'BRA', 'Rio de Janeiro', '440052'), +('244', 'Londrina', 'BRA', 'Paraná', '432257'), +('245', 'Joinville', 'BRA', 'Santa Catarina', '428011'), +('246', 'Belford Roxo', 'BRA', 'Rio de Janeiro', '425194'), +('247', 'Santos', 'BRA', 'Săo Paulo', '408748'), +('248', 'Ananindeua', 'BRA', 'Pará', '400940'), +('249', 'Campos dos Goytacazes', 'BRA', 'Rio de Janeiro', '398418'), +('250', 'Mauá', 'BRA', 'Săo Paulo', '375055'), +('251', 'Carapicuíba', 'BRA', 'Săo Paulo', '357552'), +('252', 'Olinda', 'BRA', 'Pernambuco', '354732'), +('253', 'Campina Grande', 'BRA', 'Paraíba', '352497'), +('254', 'Săo José do Rio Preto', 'BRA', 'Săo Paulo', '351944'), +('255', 'Caxias do Sul', 'BRA', 'Rio Grande do Sul', '349581'), +('256', 'Moji das Cruzes', 'BRA', 'Săo Paulo', '339194'), +('257', 'Diadema', 'BRA', 'Săo Paulo', '335078'), +('258', 'Aparecida de Goiânia', 'BRA', 'Goiás', '324662'), +('259', 'Piracicaba', 'BRA', 'Săo Paulo', '319104'), +('260', 'Cariacica', 'BRA', 'Espírito Santo', '319033'), +('261', 'Vila Velha', 'BRA', 'Espírito Santo', '318758'), +('262', 'Pelotas', 'BRA', 'Rio Grande do Sul', '315415'), +('263', 'Bauru', 'BRA', 'Săo Paulo', '313670'), +('264', 'Porto Velho', 'BRA', 'Rondônia', '309750'), +('265', 'Serra', 'BRA', 'Espírito Santo', '302666'), +('266', 'Betim', 'BRA', 'Minas Gerais', '302108'), +('267', 'Jundíaí', 'BRA', 'Săo Paulo', '296127'), +('268', 'Canoas', 'BRA', 'Rio Grande do Sul', '294125'), +('269', 'Franca', 'BRA', 'Săo Paulo', '290139'), +('270', 'Săo Vicente', 'BRA', 'Săo Paulo', '286848'), +('271', 'Maringá', 'BRA', 'Paraná', '286461'), +('272', 'Montes Claros', 'BRA', 'Minas Gerais', '286058'), +('273', 'Anápolis', 'BRA', 'Goiás', '282197'), +('274', 'Florianópolis', 'BRA', 'Santa Catarina', '281928'), +('275', 'Petrópolis', 'BRA', 'Rio de Janeiro', '279183'), +('276', 'Itaquaquecetuba', 'BRA', 'Săo Paulo', '270874'), +('277', 'Vitória', 'BRA', 'Espírito Santo', '270626'), +('278', 'Ponta Grossa', 'BRA', 'Paraná', '268013'), +('279', 'Rio Branco', 'BRA', 'Acre', '259537'), +('280', 'Foz do Iguaçu', 'BRA', 'Paraná', '259425'), +('281', 'Macapá', 'BRA', 'Amapá', '256033'), +('282', 'Ilhéus', 'BRA', 'Bahia', '254970'), +('283', 'Vitória da Conquista', 'BRA', 'Bahia', '253587'), +('284', 'Uberaba', 'BRA', 'Minas Gerais', '249225'), +('285', 'Paulista', 'BRA', 'Pernambuco', '248473'), +('286', 'Limeira', 'BRA', 'Săo Paulo', '245497'), +('287', 'Blumenau', 'BRA', 'Santa Catarina', '244379'), +('288', 'Caruaru', 'BRA', 'Pernambuco', '244247'), +('289', 'Santarém', 'BRA', 'Pará', '241771'), +('290', 'Volta Redonda', 'BRA', 'Rio de Janeiro', '240315'), +('291', 'Novo Hamburgo', 'BRA', 'Rio Grande do Sul', '239940'), +('292', 'Caucaia', 'BRA', 'Ceará', '238738'), +('293', 'Santa Maria', 'BRA', 'Rio Grande do Sul', '238473'), +('294', 'Cascavel', 'BRA', 'Paraná', '237510'), +('295', 'Guarujá', 'BRA', 'Săo Paulo', '237206'), +('296', 'Ribeirăo das Neves', 'BRA', 'Minas Gerais', '232685'), +('297', 'Governador Valadares', 'BRA', 'Minas Gerais', '231724'), +('298', 'Taubaté', 'BRA', 'Săo Paulo', '229130'), +('299', 'Imperatriz', 'BRA', 'Maranhăo', '224564'), +('300', 'Gravataí', 'BRA', 'Rio Grande do Sul', '223011'), +('301', 'Embu', 'BRA', 'Săo Paulo', '222223'), +('302', 'Mossoró', 'BRA', 'Rio Grande do Norte', '214901'), +('303', 'Várzea Grande', 'BRA', 'Mato Grosso', '214435'), +('304', 'Petrolina', 'BRA', 'Pernambuco', '210540'), +('305', 'Barueri', 'BRA', 'Săo Paulo', '208426'), +('306', 'Viamăo', 'BRA', 'Rio Grande do Sul', '207557'), +('307', 'Ipatinga', 'BRA', 'Minas Gerais', '206338'), +('308', 'Juazeiro', 'BRA', 'Bahia', '201073'), +('309', 'Juazeiro do Norte', 'BRA', 'Ceará', '199636'), +('310', 'Taboăo da Serra', 'BRA', 'Săo Paulo', '197550'), +('311', 'Săo José dos Pinhais', 'BRA', 'Paraná', '196884'), +('312', 'Magé', 'BRA', 'Rio de Janeiro', '196147'), +('313', 'Suzano', 'BRA', 'Săo Paulo', '195434'), +('314', 'Săo Leopoldo', 'BRA', 'Rio Grande do Sul', '189258'), +('315', 'Marília', 'BRA', 'Săo Paulo', '188691'), +('316', 'Săo Carlos', 'BRA', 'Săo Paulo', '187122'), +('317', 'Sumaré', 'BRA', 'Săo Paulo', '186205'), +('318', 'Presidente Prudente', 'BRA', 'Săo Paulo', '185340'), +('319', 'Divinópolis', 'BRA', 'Minas Gerais', '185047'), +('320', 'Sete Lagoas', 'BRA', 'Minas Gerais', '182984'), +('321', 'Rio Grande', 'BRA', 'Rio Grande do Sul', '182222'), +('322', 'Itabuna', 'BRA', 'Bahia', '182148'), +('323', 'Jequié', 'BRA', 'Bahia', '179128'), +('324', 'Arapiraca', 'BRA', 'Alagoas', '178988'), +('325', 'Colombo', 'BRA', 'Paraná', '177764'), +('326', 'Americana', 'BRA', 'Săo Paulo', '177409'), +('327', 'Alvorada', 'BRA', 'Rio Grande do Sul', '175574'), +('328', 'Araraquara', 'BRA', 'Săo Paulo', '174381'), +('329', 'Itaboraí', 'BRA', 'Rio de Janeiro', '173977'), +('330', 'Santa Bárbara d´Oeste', 'BRA', 'Săo Paulo', '171657'), +('331', 'Nova Friburgo', 'BRA', 'Rio de Janeiro', '170697'), +('332', 'Jacareí', 'BRA', 'Săo Paulo', '170356'), +('333', 'Araçatuba', 'BRA', 'Săo Paulo', '169303'), +('334', 'Barra Mansa', 'BRA', 'Rio de Janeiro', '168953'), +('335', 'Praia Grande', 'BRA', 'Săo Paulo', '168434'), +('336', 'Marabá', 'BRA', 'Pará', '167795'), +('337', 'Criciúma', 'BRA', 'Santa Catarina', '167661'), +('338', 'Boa Vista', 'BRA', 'Roraima', '167185'), +('339', 'Passo Fundo', 'BRA', 'Rio Grande do Sul', '166343'), +('340', 'Dourados', 'BRA', 'Mato Grosso do Sul', '164716'), +('341', 'Santa Luzia', 'BRA', 'Minas Gerais', '164704'), +('342', 'Rio Claro', 'BRA', 'Săo Paulo', '163551'), +('343', 'Maracanaú', 'BRA', 'Ceará', '162022'), +('344', 'Guarapuava', 'BRA', 'Paraná', '160510'), +('345', 'Rondonópolis', 'BRA', 'Mato Grosso', '155115'), +('346', 'Săo José', 'BRA', 'Santa Catarina', '155105'), +('347', 'Cachoeiro de Itapemirim', 'BRA', 'Espírito Santo', '155024'), +('348', 'Nilópolis', 'BRA', 'Rio de Janeiro', '153383'), +('349', 'Itapevi', 'BRA', 'Săo Paulo', '150664'), +('350', 'Cabo de Santo Agostinho', 'BRA', 'Pernambuco', '149964'), +('351', 'Camaçari', 'BRA', 'Bahia', '149146'), +('352', 'Sobral', 'BRA', 'Ceará', '146005'), +('353', 'Itajaí', 'BRA', 'Santa Catarina', '145197'), +('354', 'Chapecó', 'BRA', 'Santa Catarina', '144158'), +('355', 'Cotia', 'BRA', 'Săo Paulo', '140042'), +('356', 'Lages', 'BRA', 'Santa Catarina', '139570'), +('357', 'Ferraz de Vasconcelos', 'BRA', 'Săo Paulo', '139283'), +('358', 'Indaiatuba', 'BRA', 'Săo Paulo', '135968'), +('359', 'Hortolândia', 'BRA', 'Săo Paulo', '135755'), +('360', 'Caxias', 'BRA', 'Maranhăo', '133980'), +('361', 'Săo Caetano do Sul', 'BRA', 'Săo Paulo', '133321'), +('362', 'Itu', 'BRA', 'Săo Paulo', '132736'), +('363', 'Nossa Senhora do Socorro', 'BRA', 'Sergipe', '131351'), +('364', 'Parnaíba', 'BRA', 'Piauí', '129756'), +('365', 'Poços de Caldas', 'BRA', 'Minas Gerais', '129683'), +('366', 'Teresópolis', 'BRA', 'Rio de Janeiro', '128079'), +('367', 'Barreiras', 'BRA', 'Bahia', '127801'), +('368', 'Castanhal', 'BRA', 'Pará', '127634'), +('369', 'Alagoinhas', 'BRA', 'Bahia', '126820'), +('370', 'Itapecerica da Serra', 'BRA', 'Săo Paulo', '126672'), +('371', 'Uruguaiana', 'BRA', 'Rio Grande do Sul', '126305'), +('372', 'Paranaguá', 'BRA', 'Paraná', '126076'), +('373', 'Ibirité', 'BRA', 'Minas Gerais', '125982'), +('374', 'Timon', 'BRA', 'Maranhăo', '125812'), +('375', 'Luziânia', 'BRA', 'Goiás', '125597'), +('376', 'Macaé', 'BRA', 'Rio de Janeiro', '125597'), +('377', 'Teófilo Otoni', 'BRA', 'Minas Gerais', '124489'), +('378', 'Moji-Guaçu', 'BRA', 'Săo Paulo', '123782'), +('379', 'Palmas', 'BRA', 'Tocantins', '121919'), +('380', 'Pindamonhangaba', 'BRA', 'Săo Paulo', '121904'), +('381', 'Francisco Morato', 'BRA', 'Săo Paulo', '121197'), +('382', 'Bagé', 'BRA', 'Rio Grande do Sul', '120793'), +('383', 'Sapucaia do Sul', 'BRA', 'Rio Grande do Sul', '120217'), +('384', 'Cabo Frio', 'BRA', 'Rio de Janeiro', '119503'), +('385', 'Itapetininga', 'BRA', 'Săo Paulo', '119391'), +('386', 'Patos de Minas', 'BRA', 'Minas Gerais', '119262'), +('387', 'Camaragibe', 'BRA', 'Pernambuco', '118968'), +('388', 'Bragança Paulista', 'BRA', 'Săo Paulo', '116929'), +('389', 'Queimados', 'BRA', 'Rio de Janeiro', '115020'), +('390', 'Araguaína', 'BRA', 'Tocantins', '114948'), +('391', 'Garanhuns', 'BRA', 'Pernambuco', '114603'), +('392', 'Vitória de Santo Antăo', 'BRA', 'Pernambuco', '113595'), +('393', 'Santa Rita', 'BRA', 'Paraíba', '113135'), +('394', 'Barbacena', 'BRA', 'Minas Gerais', '113079'), +('395', 'Abaetetuba', 'BRA', 'Pará', '111258'), +('396', 'Jaú', 'BRA', 'Săo Paulo', '109965'), +('397', 'Lauro de Freitas', 'BRA', 'Bahia', '109236'), +('398', 'Franco da Rocha', 'BRA', 'Săo Paulo', '108964'), +('399', 'Teixeira de Freitas', 'BRA', 'Bahia', '108441'), +('400', 'Varginha', 'BRA', 'Minas Gerais', '108314'), +('401', 'Ribeirăo Pires', 'BRA', 'Săo Paulo', '108121'), +('402', 'Sabará', 'BRA', 'Minas Gerais', '107781'), +('403', 'Catanduva', 'BRA', 'Săo Paulo', '107761'), +('404', 'Rio Verde', 'BRA', 'Goiás', '107755'), +('405', 'Botucatu', 'BRA', 'Săo Paulo', '107663'), +('406', 'Colatina', 'BRA', 'Espírito Santo', '107354'), +('407', 'Santa Cruz do Sul', 'BRA', 'Rio Grande do Sul', '106734'), +('408', 'Linhares', 'BRA', 'Espírito Santo', '106278'), +('409', 'Apucarana', 'BRA', 'Paraná', '105114'), +('410', 'Barretos', 'BRA', 'Săo Paulo', '104156'), +('411', 'Guaratinguetá', 'BRA', 'Săo Paulo', '103433'), +('412', 'Cachoeirinha', 'BRA', 'Rio Grande do Sul', '103240'), +('413', 'Codó', 'BRA', 'Maranhăo', '103153'), +('414', 'Jaraguá do Sul', 'BRA', 'Santa Catarina', '102580'), +('415', 'Cubatăo', 'BRA', 'Săo Paulo', '102372'), +('416', 'Itabira', 'BRA', 'Minas Gerais', '102217'), +('417', 'Itaituba', 'BRA', 'Pará', '101320'), +('418', 'Araras', 'BRA', 'Săo Paulo', '101046'), +('419', 'Resende', 'BRA', 'Rio de Janeiro', '100627'), +('420', 'Atibaia', 'BRA', 'Săo Paulo', '100356'), +('421', 'Pouso Alegre', 'BRA', 'Minas Gerais', '100028'), +('422', 'Toledo', 'BRA', 'Paraná', '99387'), +('423', 'Crato', 'BRA', 'Ceará', '98965'), +('424', 'Passos', 'BRA', 'Minas Gerais', '98570'), +('425', 'Araguari', 'BRA', 'Minas Gerais', '98399'), +('426', 'Săo José de Ribamar', 'BRA', 'Maranhăo', '98318'), +('427', 'Pinhais', 'BRA', 'Paraná', '98198'), +('428', 'Sertăozinho', 'BRA', 'Săo Paulo', '98140'), +('429', 'Conselheiro Lafaiete', 'BRA', 'Minas Gerais', '97507'), +('430', 'Paulo Afonso', 'BRA', 'Bahia', '97291'), +('431', 'Angra dos Reis', 'BRA', 'Rio de Janeiro', '96864'), +('432', 'Eunápolis', 'BRA', 'Bahia', '96610'), +('433', 'Salto', 'BRA', 'Săo Paulo', '96348'), +('434', 'Ourinhos', 'BRA', 'Săo Paulo', '96291'), +('435', 'Parnamirim', 'BRA', 'Rio Grande do Norte', '96210'), +('436', 'Jacobina', 'BRA', 'Bahia', '96131'), +('437', 'Coronel Fabriciano', 'BRA', 'Minas Gerais', '95933'), +('438', 'Birigui', 'BRA', 'Săo Paulo', '94685'), +('439', 'Tatuí', 'BRA', 'Săo Paulo', '93897'), +('440', 'Ji-Paraná', 'BRA', 'Rondônia', '93346'), +('441', 'Bacabal', 'BRA', 'Maranhăo', '93121'), +('442', 'Cametá', 'BRA', 'Pará', '92779'), +('443', 'Guaíba', 'BRA', 'Rio Grande do Sul', '92224'), +('444', 'Săo Lourenço da Mata', 'BRA', 'Pernambuco', '91999'), +('445', 'Santana do Livramento', 'BRA', 'Rio Grande do Sul', '91779'), +('446', 'Votorantim', 'BRA', 'Săo Paulo', '91777'), +('447', 'Campo Largo', 'BRA', 'Paraná', '91203'), +('448', 'Patos', 'BRA', 'Paraíba', '90519'), +('449', 'Ituiutaba', 'BRA', 'Minas Gerais', '90507'), +('450', 'Corumbá', 'BRA', 'Mato Grosso do Sul', '90111'), +('451', 'Palhoça', 'BRA', 'Santa Catarina', '89465'), +('452', 'Barra do Piraí', 'BRA', 'Rio de Janeiro', '89388'), +('453', 'Bento Gonçalves', 'BRA', 'Rio Grande do Sul', '89254'), +('454', 'Poá', 'BRA', 'Săo Paulo', '89236'), +('455', 'Águas Lindas de Goiás', 'BRA', 'Goiás', '89200'), +('456', 'London', 'GBR', 'England', '7285000'), +('457', 'Birmingham', 'GBR', 'England', '1013000'), +('458', 'Glasgow', 'GBR', 'Scotland', '619680'), +('459', 'Liverpool', 'GBR', 'England', '461000'), +('460', 'Edinburgh', 'GBR', 'Scotland', '450180'), +('461', 'Sheffield', 'GBR', 'England', '431607'), +('462', 'Manchester', 'GBR', 'England', '430000'), +('463', 'Leeds', 'GBR', 'England', '424194'), +('464', 'Bristol', 'GBR', 'England', '402000'), +('465', 'Cardiff', 'GBR', 'Wales', '321000'), +('466', 'Coventry', 'GBR', 'England', '304000'), +('467', 'Leicester', 'GBR', 'England', '294000'), +('468', 'Bradford', 'GBR', 'England', '289376'), +('469', 'Belfast', 'GBR', 'North Ireland', '287500'), +('470', 'Nottingham', 'GBR', 'England', '287000'), +('471', 'Kingston upon Hull', 'GBR', 'England', '262000'), +('472', 'Plymouth', 'GBR', 'England', '253000'), +('473', 'Stoke-on-Trent', 'GBR', 'England', '252000'), +('474', 'Wolverhampton', 'GBR', 'England', '242000'), +('475', 'Derby', 'GBR', 'England', '236000'), +('476', 'Swansea', 'GBR', 'Wales', '230000'), +('477', 'Southampton', 'GBR', 'England', '216000'), +('478', 'Aberdeen', 'GBR', 'Scotland', '213070'), +('479', 'Northampton', 'GBR', 'England', '196000'), +('480', 'Dudley', 'GBR', 'England', '192171'), +('481', 'Portsmouth', 'GBR', 'England', '190000'), +('482', 'Newcastle upon Tyne', 'GBR', 'England', '189150'), +('483', 'Sunderland', 'GBR', 'England', '183310'), +('484', 'Luton', 'GBR', 'England', '183000'), +('485', 'Swindon', 'GBR', 'England', '180000'), +('486', 'Southend-on-Sea', 'GBR', 'England', '176000'), +('487', 'Walsall', 'GBR', 'England', '174739'), +('488', 'Bournemouth', 'GBR', 'England', '162000'), +('489', 'Peterborough', 'GBR', 'England', '156000'), +('490', 'Brighton', 'GBR', 'England', '156124'), +('491', 'Blackpool', 'GBR', 'England', '151000'), +('492', 'Dundee', 'GBR', 'Scotland', '146690'), +('493', 'West Bromwich', 'GBR', 'England', '146386'), +('494', 'Reading', 'GBR', 'England', '148000'), +('495', 'Oldbury/Smethwick (Warley)', 'GBR', 'England', '145542'), +('496', 'Middlesbrough', 'GBR', 'England', '145000'), +('497', 'Huddersfield', 'GBR', 'England', '143726'), +('498', 'Oxford', 'GBR', 'England', '144000'), +('499', 'Poole', 'GBR', 'England', '141000'), +('500', 'Bolton', 'GBR', 'England', '139020'), +('501', 'Blackburn', 'GBR', 'England', '140000'), +('502', 'Newport', 'GBR', 'Wales', '139000'), +('503', 'Preston', 'GBR', 'England', '135000'), +('504', 'Stockport', 'GBR', 'England', '132813'), +('505', 'Norwich', 'GBR', 'England', '124000'), +('506', 'Rotherham', 'GBR', 'England', '121380'), +('507', 'Cambridge', 'GBR', 'England', '121000'), +('508', 'Watford', 'GBR', 'England', '113080'), +('509', 'Ipswich', 'GBR', 'England', '114000'), +('510', 'Slough', 'GBR', 'England', '112000'), +('511', 'Exeter', 'GBR', 'England', '111000'), +('512', 'Cheltenham', 'GBR', 'England', '106000'), +('513', 'Gloucester', 'GBR', 'England', '107000'), +('514', 'Saint Helens', 'GBR', 'England', '106293'), +('515', 'Sutton Coldfield', 'GBR', 'England', '106001'), +('516', 'York', 'GBR', 'England', '104425'), +('517', 'Oldham', 'GBR', 'England', '103931'), +('518', 'Basildon', 'GBR', 'England', '100924'), +('519', 'Worthing', 'GBR', 'England', '100000'), +('520', 'Chelmsford', 'GBR', 'England', '97451'), +('521', 'Colchester', 'GBR', 'England', '96063'), +('522', 'Crawley', 'GBR', 'England', '97000'), +('523', 'Gillingham', 'GBR', 'England', '92000'), +('524', 'Solihull', 'GBR', 'England', '94531'), +('525', 'Rochdale', 'GBR', 'England', '94313'), +('526', 'Birkenhead', 'GBR', 'England', '93087'), +('527', 'Worcester', 'GBR', 'England', '95000'), +('528', 'Hartlepool', 'GBR', 'England', '92000'), +('529', 'Halifax', 'GBR', 'England', '91069'), +('530', 'Woking/Byfleet', 'GBR', 'England', '92000'), +('531', 'Southport', 'GBR', 'England', '90959'), +('532', 'Maidstone', 'GBR', 'England', '90878'), +('533', 'Eastbourne', 'GBR', 'England', '90000'), +('534', 'Grimsby', 'GBR', 'England', '89000'), +('535', 'Saint Helier', 'GBR', 'Jersey', '27523'), +('536', 'Douglas', 'GBR', '–', '23487'), +('537', 'Road Town', 'VGB', 'Tortola', '8000'), +('538', 'Bandar Seri Begawan', 'BRN', 'Brunei and Muara', '21484'), +('539', 'Sofija', 'BGR', 'Grad Sofija', '1122302'), +('540', 'Plovdiv', 'BGR', 'Plovdiv', '342584'), +('541', 'Varna', 'BGR', 'Varna', '299801'), +('542', 'Burgas', 'BGR', 'Burgas', '195255'), +('543', 'Ruse', 'BGR', 'Ruse', '166467'), +('544', 'Stara Zagora', 'BGR', 'Haskovo', '147939'), +('545', 'Pleven', 'BGR', 'Lovec', '121952'), +('546', 'Sliven', 'BGR', 'Burgas', '105530'), +('547', 'Dobric', 'BGR', 'Varna', '100399'), +('548', 'Šumen', 'BGR', 'Varna', '94686'), +('549', 'Ouagadougou', 'BFA', 'Kadiogo', '824000'), +('550', 'Bobo-Dioulasso', 'BFA', 'Houet', '300000'), +('551', 'Koudougou', 'BFA', 'Boulkiemdé', '105000'), +('552', 'Bujumbura', 'BDI', 'Bujumbura', '300000'), +('553', 'George Town', 'CYM', 'Grand Cayman', '19600'), +('554', 'Santiago de Chile', 'CHL', 'Santiago', '4703954'), +('555', 'Puente Alto', 'CHL', 'Santiago', '386236'), +('556', 'Vińa del Mar', 'CHL', 'Valparaíso', '312493'), +('557', 'Valparaíso', 'CHL', 'Valparaíso', '293800'), +('558', 'Talcahuano', 'CHL', 'Bíobío', '277752'), +('559', 'Antofagasta', 'CHL', 'Antofagasta', '251429'), +('560', 'San Bernardo', 'CHL', 'Santiago', '241910'), +('561', 'Temuco', 'CHL', 'La Araucanía', '233041'), +('562', 'Concepción', 'CHL', 'Bíobío', '217664'), +('563', 'Rancagua', 'CHL', 'O´Higgins', '212977'), +('564', 'Arica', 'CHL', 'Tarapacá', '189036'), +('565', 'Talca', 'CHL', 'Maule', '187557'), +('566', 'Chillán', 'CHL', 'Bíobío', '178182'), +('567', 'Iquique', 'CHL', 'Tarapacá', '177892'), +('568', 'Los Angeles', 'CHL', 'Bíobío', '158215'), +('569', 'Puerto Montt', 'CHL', 'Los Lagos', '152194'), +('570', 'Coquimbo', 'CHL', 'Coquimbo', '143353'), +('571', 'Osorno', 'CHL', 'Los Lagos', '141468'), +('572', 'La Serena', 'CHL', 'Coquimbo', '137409'), +('573', 'Calama', 'CHL', 'Antofagasta', '137265'), +('574', 'Valdivia', 'CHL', 'Los Lagos', '133106'), +('575', 'Punta Arenas', 'CHL', 'Magallanes', '125631'), +('576', 'Copiapó', 'CHL', 'Atacama', '120128'), +('577', 'Quilpué', 'CHL', 'Valparaíso', '118857'), +('578', 'Curicó', 'CHL', 'Maule', '115766'), +('579', 'Ovalle', 'CHL', 'Coquimbo', '94854'), +('580', 'Coronel', 'CHL', 'Bíobío', '93061'), +('581', 'San Pedro de la Paz', 'CHL', 'Bíobío', '91684'), +('582', 'Melipilla', 'CHL', 'Santiago', '91056'), +('583', 'Avarua', 'COK', 'Rarotonga', '11900'), +('584', 'San José', 'CRI', 'San José', '339131'), +('585', 'Djibouti', 'DJI', 'Djibouti', '383000'), +('586', 'Roseau', 'DMA', 'St George', '16243'), +('587', 'Santo Domingo de Guzmán', 'DOM', 'Distrito Nacional', '1609966'), +('588', 'Santiago de los Caballeros', 'DOM', 'Santiago', '365463'), +('589', 'La Romana', 'DOM', 'La Romana', '140204'), +('590', 'San Pedro de Macorís', 'DOM', 'San Pedro de Macorís', '124735'), +('591', 'San Francisco de Macorís', 'DOM', 'Duarte', '108485'), +('592', 'San Felipe de Puerto Plata', 'DOM', 'Puerto Plata', '89423'), +('593', 'Guayaquil', 'ECU', 'Guayas', '2070040'), +('594', 'Quito', 'ECU', 'Pichincha', '1573458'), +('595', 'Cuenca', 'ECU', 'Azuay', '270353'), +('596', 'Machala', 'ECU', 'El Oro', '210368'), +('597', 'Santo Domingo de los Colorados', 'ECU', 'Pichincha', '202111'), +('598', 'Portoviejo', 'ECU', 'Manabí', '176413'), +('599', 'Ambato', 'ECU', 'Tungurahua', '169612'), +('600', 'Manta', 'ECU', 'Manabí', '164739'), +('601', 'Duran [Eloy Alfaro]', 'ECU', 'Guayas', '152514'), +('602', 'Ibarra', 'ECU', 'Imbabura', '130643'), +('603', 'Quevedo', 'ECU', 'Los Ríos', '129631'), +('604', 'Milagro', 'ECU', 'Guayas', '124177'), +('605', 'Loja', 'ECU', 'Loja', '123875'), +('606', 'Ríobamba', 'ECU', 'Chimborazo', '123163'), +('607', 'Esmeraldas', 'ECU', 'Esmeraldas', '123045'), +('608', 'Cairo', 'EGY', 'Kairo', '6789479'), +('609', 'Alexandria', 'EGY', 'Aleksandria', '3328196'), +('610', 'Giza', 'EGY', 'Giza', '2221868'), +('611', 'Shubra al-Khayma', 'EGY', 'al-Qalyubiya', '870716'), +('612', 'Port Said', 'EGY', 'Port Said', '469533'), +('613', 'Suez', 'EGY', 'Suez', '417610'), +('614', 'al-Mahallat al-Kubra', 'EGY', 'al-Gharbiya', '395402'), +('615', 'Tanta', 'EGY', 'al-Gharbiya', '371010'), +('616', 'al-Mansura', 'EGY', 'al-Daqahliya', '369621'), +('617', 'Luxor', 'EGY', 'Luxor', '360503'), +('618', 'Asyut', 'EGY', 'Asyut', '343498'), +('619', 'Bahtim', 'EGY', 'al-Qalyubiya', '275807'), +('620', 'Zagazig', 'EGY', 'al-Sharqiya', '267351'), +('621', 'al-Faiyum', 'EGY', 'al-Faiyum', '260964'), +('622', 'Ismailia', 'EGY', 'Ismailia', '254477'), +('623', 'Kafr al-Dawwar', 'EGY', 'al-Buhayra', '231978'), +('624', 'Assuan', 'EGY', 'Assuan', '219017'), +('625', 'Damanhur', 'EGY', 'al-Buhayra', '212203'), +('626', 'al-Minya', 'EGY', 'al-Minya', '201360'), +('627', 'Bani Suwayf', 'EGY', 'Bani Suwayf', '172032'), +('628', 'Qina', 'EGY', 'Qina', '171275'), +('629', 'Sawhaj', 'EGY', 'Sawhaj', '170125'), +('630', 'Shibin al-Kawm', 'EGY', 'al-Minufiya', '159909'), +('631', 'Bulaq al-Dakrur', 'EGY', 'Giza', '148787'), +('632', 'Banha', 'EGY', 'al-Qalyubiya', '145792'), +('633', 'Warraq al-Arab', 'EGY', 'Giza', '127108'), +('634', 'Kafr al-Shaykh', 'EGY', 'Kafr al-Shaykh', '124819'), +('635', 'Mallawi', 'EGY', 'al-Minya', '119283'), +('636', 'Bilbays', 'EGY', 'al-Sharqiya', '113608'), +('637', 'Mit Ghamr', 'EGY', 'al-Daqahliya', '101801'), +('638', 'al-Arish', 'EGY', 'Shamal Sina', '100447'), +('639', 'Talkha', 'EGY', 'al-Daqahliya', '97700'), +('640', 'Qalyub', 'EGY', 'al-Qalyubiya', '97200'), +('641', 'Jirja', 'EGY', 'Sawhaj', '95400'), +('642', 'Idfu', 'EGY', 'Qina', '94200'), +('643', 'al-Hawamidiya', 'EGY', 'Giza', '91700'), +('644', 'Disuq', 'EGY', 'Kafr al-Shaykh', '91300'), +('645', 'San Salvador', 'SLV', 'San Salvador', '415346'), +('646', 'Santa Ana', 'SLV', 'Santa Ana', '139389'), +('647', 'Mejicanos', 'SLV', 'San Salvador', '138800'), +('648', 'Soyapango', 'SLV', 'San Salvador', '129800'), +('649', 'San Miguel', 'SLV', 'San Miguel', '127696'), +('650', 'Nueva San Salvador', 'SLV', 'La Libertad', '98400'), +('651', 'Apopa', 'SLV', 'San Salvador', '88800'), +('652', 'Asmara', 'ERI', 'Maekel', '431000'), +('653', 'Madrid', 'ESP', 'Madrid', '2879052'), +('654', 'Barcelona', 'ESP', 'Katalonia', '1503451'), +('655', 'Valencia', 'ESP', 'Valencia', '739412'), +('656', 'Sevilla', 'ESP', 'Andalusia', '701927'), +('657', 'Zaragoza', 'ESP', 'Aragonia', '603367'), +('658', 'Málaga', 'ESP', 'Andalusia', '530553'), +('659', 'Bilbao', 'ESP', 'Baskimaa', '357589'), +('660', 'Las Palmas de Gran Canaria', 'ESP', 'Canary Islands', '354757'), +('661', 'Murcia', 'ESP', 'Murcia', '353504'), +('662', 'Palma de Mallorca', 'ESP', 'Balears', '326993'), +('663', 'Valladolid', 'ESP', 'Castilla and León', '319998'), +('664', 'Córdoba', 'ESP', 'Andalusia', '311708'), +('665', 'Vigo', 'ESP', 'Galicia', '283670'), +('666', 'Alicante [Alacant]', 'ESP', 'Valencia', '272432'), +('667', 'Gijón', 'ESP', 'Asturia', '267980'), +('668', 'L´Hospitalet de Llobregat', 'ESP', 'Katalonia', '247986'), +('669', 'Granada', 'ESP', 'Andalusia', '244767'), +('670', 'A Coruńa (La Coruńa)', 'ESP', 'Galicia', '243402'), +('671', 'Vitoria-Gasteiz', 'ESP', 'Baskimaa', '217154'), +('672', 'Santa Cruz de Tenerife', 'ESP', 'Canary Islands', '213050'), +('673', 'Badalona', 'ESP', 'Katalonia', '209635'), +('674', 'Oviedo', 'ESP', 'Asturia', '200453'), +('675', 'Móstoles', 'ESP', 'Madrid', '195351'), +('676', 'Elche [Elx]', 'ESP', 'Valencia', '193174'), +('677', 'Sabadell', 'ESP', 'Katalonia', '184859'), +('678', 'Santander', 'ESP', 'Cantabria', '184165'), +('679', 'Jerez de la Frontera', 'ESP', 'Andalusia', '182660'), +('680', 'Pamplona [Iruńa]', 'ESP', 'Navarra', '180483'), +('681', 'Donostia-San Sebastián', 'ESP', 'Baskimaa', '179208'), +('682', 'Cartagena', 'ESP', 'Murcia', '177709'), +('683', 'Leganés', 'ESP', 'Madrid', '173163'), +('684', 'Fuenlabrada', 'ESP', 'Madrid', '171173'), +('685', 'Almería', 'ESP', 'Andalusia', '169027'), +('686', 'Terrassa', 'ESP', 'Katalonia', '168695'), +('687', 'Alcalá de Henares', 'ESP', 'Madrid', '164463'), +('688', 'Burgos', 'ESP', 'Castilla and León', '162802'), +('689', 'Salamanca', 'ESP', 'Castilla and León', '158720'), +('690', 'Albacete', 'ESP', 'Kastilia-La Mancha', '147527'), +('691', 'Getafe', 'ESP', 'Madrid', '145371'), +('692', 'Cádiz', 'ESP', 'Andalusia', '142449'), +('693', 'Alcorcón', 'ESP', 'Madrid', '142048'), +('694', 'Huelva', 'ESP', 'Andalusia', '140583'), +('695', 'León', 'ESP', 'Castilla and León', '139809'), +('696', 'Castellón de la Plana [Castell', 'ESP', 'Valencia', '139712'), +('697', 'Badajoz', 'ESP', 'Extremadura', '136613'), +('698', '[San Cristóbal de] la Laguna', 'ESP', 'Canary Islands', '127945'), +('699', 'Logrońo', 'ESP', 'La Rioja', '127093'), +('700', 'Santa Coloma de Gramenet', 'ESP', 'Katalonia', '120802'), +('701', 'Tarragona', 'ESP', 'Katalonia', '113016'), +('702', 'Lleida (Lérida)', 'ESP', 'Katalonia', '112207'), +('703', 'Jaén', 'ESP', 'Andalusia', '109247'), +('704', 'Ourense (Orense)', 'ESP', 'Galicia', '109120'), +('705', 'Mataró', 'ESP', 'Katalonia', '104095'), +('706', 'Algeciras', 'ESP', 'Andalusia', '103106'), +('707', 'Marbella', 'ESP', 'Andalusia', '101144'), +('708', 'Barakaldo', 'ESP', 'Baskimaa', '98212'), +('709', 'Dos Hermanas', 'ESP', 'Andalusia', '94591'), +('710', 'Santiago de Compostela', 'ESP', 'Galicia', '93745'), +('711', 'Torrejón de Ardoz', 'ESP', 'Madrid', '92262'), +('712', 'Cape Town', 'ZAF', 'Western Cape', '2352121'), +('713', 'Soweto', 'ZAF', 'Gauteng', '904165'), +('714', 'Johannesburg', 'ZAF', 'Gauteng', '756653'), +('715', 'Port Elizabeth', 'ZAF', 'Eastern Cape', '752319'), +('716', 'Pretoria', 'ZAF', 'Gauteng', '658630'), +('717', 'Inanda', 'ZAF', 'KwaZulu-Natal', '634065'), +('718', 'Durban', 'ZAF', 'KwaZulu-Natal', '566120'), +('719', 'Vanderbijlpark', 'ZAF', 'Gauteng', '468931'), +('720', 'Kempton Park', 'ZAF', 'Gauteng', '442633'), +('721', 'Alberton', 'ZAF', 'Gauteng', '410102'), +('722', 'Pinetown', 'ZAF', 'KwaZulu-Natal', '378810'), +('723', 'Pietermaritzburg', 'ZAF', 'KwaZulu-Natal', '370190'), +('724', 'Benoni', 'ZAF', 'Gauteng', '365467'), +('725', 'Randburg', 'ZAF', 'Gauteng', '341288'), +('726', 'Umlazi', 'ZAF', 'KwaZulu-Natal', '339233'), +('727', 'Bloemfontein', 'ZAF', 'Free State', '334341'), +('728', 'Vereeniging', 'ZAF', 'Gauteng', '328535'), +('729', 'Wonderboom', 'ZAF', 'Gauteng', '283289'), +('730', 'Roodepoort', 'ZAF', 'Gauteng', '279340'), +('731', 'Boksburg', 'ZAF', 'Gauteng', '262648'), +('732', 'Klerksdorp', 'ZAF', 'North West', '261911'), +('733', 'Soshanguve', 'ZAF', 'Gauteng', '242727'), +('734', 'Newcastle', 'ZAF', 'KwaZulu-Natal', '222993'), +('735', 'East London', 'ZAF', 'Eastern Cape', '221047'), +('736', 'Welkom', 'ZAF', 'Free State', '203296'), +('737', 'Kimberley', 'ZAF', 'Northern Cape', '197254'), +('738', 'Uitenhage', 'ZAF', 'Eastern Cape', '192120'), +('739', 'Chatsworth', 'ZAF', 'KwaZulu-Natal', '189885'), +('740', 'Mdantsane', 'ZAF', 'Eastern Cape', '182639'), +('741', 'Krugersdorp', 'ZAF', 'Gauteng', '181503'), +('742', 'Botshabelo', 'ZAF', 'Free State', '177971'), +('743', 'Brakpan', 'ZAF', 'Gauteng', '171363'), +('744', 'Witbank', 'ZAF', 'Mpumalanga', '167183'), +('745', 'Oberholzer', 'ZAF', 'Gauteng', '164367'), +('746', 'Germiston', 'ZAF', 'Gauteng', '164252'), +('747', 'Springs', 'ZAF', 'Gauteng', '162072'), +('748', 'Westonaria', 'ZAF', 'Gauteng', '159632'), +('749', 'Randfontein', 'ZAF', 'Gauteng', '120838'), +('750', 'Paarl', 'ZAF', 'Western Cape', '105768'), +('751', 'Potchefstroom', 'ZAF', 'North West', '101817'), +('752', 'Rustenburg', 'ZAF', 'North West', '97008'), +('753', 'Nigel', 'ZAF', 'Gauteng', '96734'), +('754', 'George', 'ZAF', 'Western Cape', '93818'), +('755', 'Ladysmith', 'ZAF', 'KwaZulu-Natal', '89292'), +('756', 'Addis Abeba', 'ETH', 'Addis Abeba', '2495000'), +('757', 'Dire Dawa', 'ETH', 'Dire Dawa', '164851'), +('758', 'Nazret', 'ETH', 'Oromia', '127842'), +('759', 'Gonder', 'ETH', 'Amhara', '112249'), +('760', 'Dese', 'ETH', 'Amhara', '97314'), +('761', 'Mekele', 'ETH', 'Tigray', '96938'), +('762', 'Bahir Dar', 'ETH', 'Amhara', '96140'), +('763', 'Stanley', 'FLK', 'East Falkland', '1636'), +('764', 'Suva', 'FJI', 'Central', '77366'), +('765', 'Quezon', 'PHL', 'National Capital Reg', '2173831'), +('766', 'Manila', 'PHL', 'National Capital Reg', '1581082'), +('767', 'Kalookan', 'PHL', 'National Capital Reg', '1177604'), +('768', 'Davao', 'PHL', 'Southern Mindanao', '1147116'), +('769', 'Cebu', 'PHL', 'Central Visayas', '718821'), +('770', 'Zamboanga', 'PHL', 'Western Mindanao', '601794'), +('771', 'Pasig', 'PHL', 'National Capital Reg', '505058'), +('772', 'Valenzuela', 'PHL', 'National Capital Reg', '485433'), +('773', 'Las Pińas', 'PHL', 'National Capital Reg', '472780'), +('774', 'Antipolo', 'PHL', 'Southern Tagalog', '470866'), +('775', 'Taguig', 'PHL', 'National Capital Reg', '467375'), +('776', 'Cagayan de Oro', 'PHL', 'Northern Mindanao', '461877'), +('777', 'Parańaque', 'PHL', 'National Capital Reg', '449811'), +('778', 'Makati', 'PHL', 'National Capital Reg', '444867'), +('779', 'Bacolod', 'PHL', 'Western Visayas', '429076'), +('780', 'General Santos', 'PHL', 'Southern Mindanao', '411822'), +('781', 'Marikina', 'PHL', 'National Capital Reg', '391170'), +('782', 'Dasmarińas', 'PHL', 'Southern Tagalog', '379520'), +('783', 'Muntinlupa', 'PHL', 'National Capital Reg', '379310'), +('784', 'Iloilo', 'PHL', 'Western Visayas', '365820'), +('785', 'Pasay', 'PHL', 'National Capital Reg', '354908'), +('786', 'Malabon', 'PHL', 'National Capital Reg', '338855'), +('787', 'San José del Monte', 'PHL', 'Central Luzon', '315807'), +('788', 'Bacoor', 'PHL', 'Southern Tagalog', '305699'), +('789', 'Iligan', 'PHL', 'Central Mindanao', '285061'), +('790', 'Calamba', 'PHL', 'Southern Tagalog', '281146'), +('791', 'Mandaluyong', 'PHL', 'National Capital Reg', '278474'), +('792', 'Butuan', 'PHL', 'Caraga', '267279'), +('793', 'Angeles', 'PHL', 'Central Luzon', '263971'), +('794', 'Tarlac', 'PHL', 'Central Luzon', '262481'), +('795', 'Mandaue', 'PHL', 'Central Visayas', '259728'), +('796', 'Baguio', 'PHL', 'CAR', '252386'), +('797', 'Batangas', 'PHL', 'Southern Tagalog', '247588'), +('798', 'Cainta', 'PHL', 'Southern Tagalog', '242511'), +('799', 'San Pedro', 'PHL', 'Southern Tagalog', '231403'), +('800', 'Navotas', 'PHL', 'National Capital Reg', '230403'), +('801', 'Cabanatuan', 'PHL', 'Central Luzon', '222859'), +('802', 'San Fernando', 'PHL', 'Central Luzon', '221857'), +('803', 'Lipa', 'PHL', 'Southern Tagalog', '218447'), +('804', 'Lapu-Lapu', 'PHL', 'Central Visayas', '217019'), +('805', 'San Pablo', 'PHL', 'Southern Tagalog', '207927'), +('806', 'Bińan', 'PHL', 'Southern Tagalog', '201186'), +('807', 'Taytay', 'PHL', 'Southern Tagalog', '198183'), +('808', 'Lucena', 'PHL', 'Southern Tagalog', '196075'), +('809', 'Imus', 'PHL', 'Southern Tagalog', '195482'), +('810', 'Olongapo', 'PHL', 'Central Luzon', '194260'), +('811', 'Binangonan', 'PHL', 'Southern Tagalog', '187691'), +('812', 'Santa Rosa', 'PHL', 'Southern Tagalog', '185633'), +('813', 'Tagum', 'PHL', 'Southern Mindanao', '179531'), +('814', 'Tacloban', 'PHL', 'Eastern Visayas', '178639'), +('815', 'Malolos', 'PHL', 'Central Luzon', '175291'), +('816', 'Mabalacat', 'PHL', 'Central Luzon', '171045'), +('817', 'Cotabato', 'PHL', 'Central Mindanao', '163849'), +('818', 'Meycauayan', 'PHL', 'Central Luzon', '163037'), +('819', 'Puerto Princesa', 'PHL', 'Southern Tagalog', '161912'), +('820', 'Legazpi', 'PHL', 'Bicol', '157010'), +('821', 'Silang', 'PHL', 'Southern Tagalog', '156137'), +('822', 'Ormoc', 'PHL', 'Eastern Visayas', '154297'), +('823', 'San Carlos', 'PHL', 'Ilocos', '154264'), +('824', 'Kabankalan', 'PHL', 'Western Visayas', '149769'), +('825', 'Talisay', 'PHL', 'Central Visayas', '148110'), +('826', 'Valencia', 'PHL', 'Northern Mindanao', '147924'), +('827', 'Calbayog', 'PHL', 'Eastern Visayas', '147187'), +('828', 'Santa Maria', 'PHL', 'Central Luzon', '144282'), +('829', 'Pagadian', 'PHL', 'Western Mindanao', '142515'), +('830', 'Cadiz', 'PHL', 'Western Visayas', '141954'), +('831', 'Bago', 'PHL', 'Western Visayas', '141721'), +('832', 'Toledo', 'PHL', 'Central Visayas', '141174'), +('833', 'Naga', 'PHL', 'Bicol', '137810'), +('834', 'San Mateo', 'PHL', 'Southern Tagalog', '135603'), +('835', 'Panabo', 'PHL', 'Southern Mindanao', '133950'), +('836', 'Koronadal', 'PHL', 'Southern Mindanao', '133786'), +('837', 'Marawi', 'PHL', 'Central Mindanao', '131090'), +('838', 'Dagupan', 'PHL', 'Ilocos', '130328'), +('839', 'Sagay', 'PHL', 'Western Visayas', '129765'), +('840', 'Roxas', 'PHL', 'Western Visayas', '126352'), +('841', 'Lubao', 'PHL', 'Central Luzon', '125699'), +('842', 'Digos', 'PHL', 'Southern Mindanao', '125171'), +('843', 'San Miguel', 'PHL', 'Central Luzon', '123824'), +('844', 'Malaybalay', 'PHL', 'Northern Mindanao', '123672'), +('845', 'Tuguegarao', 'PHL', 'Cagayan Valley', '120645'), +('846', 'Ilagan', 'PHL', 'Cagayan Valley', '119990'), +('847', 'Baliuag', 'PHL', 'Central Luzon', '119675'), +('848', 'Surigao', 'PHL', 'Caraga', '118534'), +('849', 'San Carlos', 'PHL', 'Western Visayas', '118259'), +('850', 'San Juan del Monte', 'PHL', 'National Capital Reg', '117680'), +('851', 'Tanauan', 'PHL', 'Southern Tagalog', '117539'), +('852', 'Concepcion', 'PHL', 'Central Luzon', '115171'), +('853', 'Rodriguez (Montalban)', 'PHL', 'Southern Tagalog', '115167'), +('854', 'Sariaya', 'PHL', 'Southern Tagalog', '114568'), +('855', 'Malasiqui', 'PHL', 'Ilocos', '113190'), +('856', 'General Mariano Alvarez', 'PHL', 'Southern Tagalog', '112446'), +('857', 'Urdaneta', 'PHL', 'Ilocos', '111582'), +('858', 'Hagonoy', 'PHL', 'Central Luzon', '111425'), +('859', 'San Jose', 'PHL', 'Southern Tagalog', '111009'), +('860', 'Polomolok', 'PHL', 'Southern Mindanao', '110709'), +('861', 'Santiago', 'PHL', 'Cagayan Valley', '110531'), +('862', 'Tanza', 'PHL', 'Southern Tagalog', '110517'), +('863', 'Ozamis', 'PHL', 'Northern Mindanao', '110420'), +('864', 'Mexico', 'PHL', 'Central Luzon', '109481'), +('865', 'San Jose', 'PHL', 'Central Luzon', '108254'), +('866', 'Silay', 'PHL', 'Western Visayas', '107722'), +('867', 'General Trias', 'PHL', 'Southern Tagalog', '107691'), +('868', 'Tabaco', 'PHL', 'Bicol', '107166'), +('869', 'Cabuyao', 'PHL', 'Southern Tagalog', '106630'), +('870', 'Calapan', 'PHL', 'Southern Tagalog', '105910'), +('871', 'Mati', 'PHL', 'Southern Mindanao', '105908'), +('872', 'Midsayap', 'PHL', 'Central Mindanao', '105760'), +('873', 'Cauayan', 'PHL', 'Cagayan Valley', '103952'), +('874', 'Gingoog', 'PHL', 'Northern Mindanao', '102379'), +('875', 'Dumaguete', 'PHL', 'Central Visayas', '102265'), +('876', 'San Fernando', 'PHL', 'Ilocos', '102082'), +('877', 'Arayat', 'PHL', 'Central Luzon', '101792'), +('878', 'Bayawan (Tulong)', 'PHL', 'Central Visayas', '101391'), +('879', 'Kidapawan', 'PHL', 'Central Mindanao', '101205'), +('880', 'Daraga (Locsin)', 'PHL', 'Bicol', '101031'), +('881', 'Marilao', 'PHL', 'Central Luzon', '101017'), +('882', 'Malita', 'PHL', 'Southern Mindanao', '100000'), +('883', 'Dipolog', 'PHL', 'Western Mindanao', '99862'), +('884', 'Cavite', 'PHL', 'Southern Tagalog', '99367'), +('885', 'Danao', 'PHL', 'Central Visayas', '98781'), +('886', 'Bislig', 'PHL', 'Caraga', '97860'), +('887', 'Talavera', 'PHL', 'Central Luzon', '97329'), +('888', 'Guagua', 'PHL', 'Central Luzon', '96858'), +('889', 'Bayambang', 'PHL', 'Ilocos', '96609'), +('890', 'Nasugbu', 'PHL', 'Southern Tagalog', '96113'), +('891', 'Baybay', 'PHL', 'Eastern Visayas', '95630'), +('892', 'Capas', 'PHL', 'Central Luzon', '95219'), +('893', 'Sultan Kudarat', 'PHL', 'ARMM', '94861'), +('894', 'Laoag', 'PHL', 'Ilocos', '94466'), +('895', 'Bayugan', 'PHL', 'Caraga', '93623'), +('896', 'Malungon', 'PHL', 'Southern Mindanao', '93232'), +('897', 'Santa Cruz', 'PHL', 'Southern Tagalog', '92694'), +('898', 'Sorsogon', 'PHL', 'Bicol', '92512'), +('899', 'Candelaria', 'PHL', 'Southern Tagalog', '92429'), +('900', 'Ligao', 'PHL', 'Bicol', '90603'), +('901', 'Tórshavn', 'FRO', 'Streymoyar', '14542'), +('902', 'Libreville', 'GAB', 'Estuaire', '419000'), +('903', 'Serekunda', 'GMB', 'Kombo St Mary', '102600'), +('904', 'Banjul', 'GMB', 'Banjul', '42326'), +('905', 'Tbilisi', 'GEO', 'Tbilisi', '1235200'), +('906', 'Kutaisi', 'GEO', 'Imereti', '240900'), +('907', 'Rustavi', 'GEO', 'Kvemo Kartli', '155400'), +('908', 'Batumi', 'GEO', 'Adzaria [Atšara]', '137700'), +('909', 'Sohumi', 'GEO', 'Abhasia [Aphazeti]', '111700'), +('910', 'Accra', 'GHA', 'Greater Accra', '1070000'), +('911', 'Kumasi', 'GHA', 'Ashanti', '385192'), +('912', 'Tamale', 'GHA', 'Northern', '151069'), +('913', 'Tema', 'GHA', 'Greater Accra', '109975'), +('914', 'Sekondi-Takoradi', 'GHA', 'Western', '103653'), +('915', 'Gibraltar', 'GIB', '–', '27025'), +('916', 'Saint George´s', 'GRD', 'St George', '4621'), +('917', 'Nuuk', 'GRL', 'Kitaa', '13445'), +('918', 'Les Abymes', 'GLP', 'Grande-Terre', '62947'), +('919', 'Basse-Terre', 'GLP', 'Basse-Terre', '12433'), +('920', 'Tamuning', 'GUM', '–', '9500'), +('921', 'Agańa', 'GUM', '–', '1139'), +('922', 'Ciudad de Guatemala', 'GTM', 'Guatemala', '823301'), +('923', 'Mixco', 'GTM', 'Guatemala', '209791'), +('924', 'Villa Nueva', 'GTM', 'Guatemala', '101295'), +('925', 'Quetzaltenango', 'GTM', 'Quetzaltenango', '90801'), +('926', 'Conakry', 'GIN', 'Conakry', '1090610'), +('927', 'Bissau', 'GNB', 'Bissau', '241000'), +('928', 'Georgetown', 'GUY', 'Georgetown', '254000'), +('929', 'Port-au-Prince', 'HTI', 'Ouest', '884472'), +('930', 'Carrefour', 'HTI', 'Ouest', '290204'), +('931', 'Delmas', 'HTI', 'Ouest', '240429'), +('932', 'Le-Cap-Haďtien', 'HTI', 'Nord', '102233'), +('933', 'Tegucigalpa', 'HND', 'Distrito Central', '813900'), +('934', 'San Pedro Sula', 'HND', 'Cortés', '383900'), +('935', 'La Ceiba', 'HND', 'Atlántida', '89200'), +('936', 'Kowloon and New Kowloon', 'HKG', 'Kowloon and New Kowl', '1987996'), +('937', 'Victoria', 'HKG', 'Hongkong', '1312637'), +('938', 'Longyearbyen', 'SJM', 'Länsimaa', '1438'), +('939', 'Jakarta', 'IDN', 'Jakarta Raya', '9604900'), +('940', 'Surabaya', 'IDN', 'East Java', '2663820'), +('941', 'Bandung', 'IDN', 'West Java', '2429000'), +('942', 'Medan', 'IDN', 'Sumatera Utara', '1843919'), +('943', 'Palembang', 'IDN', 'Sumatera Selatan', '1222764'), +('944', 'Tangerang', 'IDN', 'West Java', '1198300'), +('945', 'Semarang', 'IDN', 'Central Java', '1104405'), +('946', 'Ujung Pandang', 'IDN', 'Sulawesi Selatan', '1060257'), +('947', 'Malang', 'IDN', 'East Java', '716862'), +('948', 'Bandar Lampung', 'IDN', 'Lampung', '680332'), +('949', 'Bekasi', 'IDN', 'West Java', '644300'), +('950', 'Padang', 'IDN', 'Sumatera Barat', '534474'), +('951', 'Surakarta', 'IDN', 'Central Java', '518600'), +('952', 'Banjarmasin', 'IDN', 'Kalimantan Selatan', '482931'), +('953', 'Pekan Baru', 'IDN', 'Riau', '438638'), +('954', 'Denpasar', 'IDN', 'Bali', '435000'), +('955', 'Yogyakarta', 'IDN', 'Yogyakarta', '418944'), +('956', 'Pontianak', 'IDN', 'Kalimantan Barat', '409632'), +('957', 'Samarinda', 'IDN', 'Kalimantan Timur', '399175'), +('958', 'Jambi', 'IDN', 'Jambi', '385201'), +('959', 'Depok', 'IDN', 'West Java', '365200'), +('960', 'Cimahi', 'IDN', 'West Java', '344600'), +('961', 'Balikpapan', 'IDN', 'Kalimantan Timur', '338752'), +('962', 'Manado', 'IDN', 'Sulawesi Utara', '332288'), +('963', 'Mataram', 'IDN', 'Nusa Tenggara Barat', '306600'), +('964', 'Pekalongan', 'IDN', 'Central Java', '301504'), +('965', 'Tegal', 'IDN', 'Central Java', '289744'), +('966', 'Bogor', 'IDN', 'West Java', '285114'), +('967', 'Ciputat', 'IDN', 'West Java', '270800'), +('968', 'Pondokgede', 'IDN', 'West Java', '263200'), +('969', 'Cirebon', 'IDN', 'West Java', '254406'), +('970', 'Kediri', 'IDN', 'East Java', '253760'), +('971', 'Ambon', 'IDN', 'Molukit', '249312'), +('972', 'Jember', 'IDN', 'East Java', '218500'), +('973', 'Cilacap', 'IDN', 'Central Java', '206900'), +('974', 'Cimanggis', 'IDN', 'West Java', '205100'), +('975', 'Pematang Siantar', 'IDN', 'Sumatera Utara', '203056'), +('976', 'Purwokerto', 'IDN', 'Central Java', '202500'), +('977', 'Ciomas', 'IDN', 'West Java', '187400'), +('978', 'Tasikmalaya', 'IDN', 'West Java', '179800'), +('979', 'Madiun', 'IDN', 'East Java', '171532'), +('980', 'Bengkulu', 'IDN', 'Bengkulu', '146439'), +('981', 'Karawang', 'IDN', 'West Java', '145000'), +('982', 'Banda Aceh', 'IDN', 'Aceh', '143409'), +('983', 'Palu', 'IDN', 'Sulawesi Tengah', '142800'), +('984', 'Pasuruan', 'IDN', 'East Java', '134019'), +('985', 'Kupang', 'IDN', 'Nusa Tenggara Timur', '129300'), +('986', 'Tebing Tinggi', 'IDN', 'Sumatera Utara', '129300'), +('987', 'Percut Sei Tuan', 'IDN', 'Sumatera Utara', '129000'), +('988', 'Binjai', 'IDN', 'Sumatera Utara', '127222'), +('989', 'Sukabumi', 'IDN', 'West Java', '125766'), +('990', 'Waru', 'IDN', 'East Java', '124300'), +('991', 'Pangkal Pinang', 'IDN', 'Sumatera Selatan', '124000'), +('992', 'Magelang', 'IDN', 'Central Java', '123800'), +('993', 'Blitar', 'IDN', 'East Java', '122600'), +('994', 'Serang', 'IDN', 'West Java', '122400'), +('995', 'Probolinggo', 'IDN', 'East Java', '120770'), +('996', 'Cilegon', 'IDN', 'West Java', '117000'), +('997', 'Cianjur', 'IDN', 'West Java', '114300'), +('998', 'Ciparay', 'IDN', 'West Java', '111500'), +('999', 'Lhokseumawe', 'IDN', 'Aceh', '109600'); + +INSERT INTO city (id, name, countrycode, district, population) VALUES +('1000', 'Taman', 'IDN', 'East Java', '107000'), +('1001', 'Depok', 'IDN', 'Yogyakarta', '106800'), +('1002', 'Citeureup', 'IDN', 'West Java', '105100'), +('1003', 'Pemalang', 'IDN', 'Central Java', '103500'), +('1004', 'Klaten', 'IDN', 'Central Java', '103300'), +('1005', 'Salatiga', 'IDN', 'Central Java', '103000'), +('1006', 'Cibinong', 'IDN', 'West Java', '101300'), +('1007', 'Palangka Raya', 'IDN', 'Kalimantan Tengah', '99693'), +('1008', 'Mojokerto', 'IDN', 'East Java', '96626'), +('1009', 'Purwakarta', 'IDN', 'West Java', '95900'), +('1010', 'Garut', 'IDN', 'West Java', '95800'), +('1011', 'Kudus', 'IDN', 'Central Java', '95300'), +('1012', 'Kendari', 'IDN', 'Sulawesi Tenggara', '94800'), +('1013', 'Jaya Pura', 'IDN', 'West Irian', '94700'), +('1014', 'Gorontalo', 'IDN', 'Sulawesi Utara', '94058'), +('1015', 'Majalaya', 'IDN', 'West Java', '93200'), +('1016', 'Pondok Aren', 'IDN', 'West Java', '92700'), +('1017', 'Jombang', 'IDN', 'East Java', '92600'), +('1018', 'Sunggal', 'IDN', 'Sumatera Utara', '92300'), +('1019', 'Batam', 'IDN', 'Riau', '91871'), +('1020', 'Padang Sidempuan', 'IDN', 'Sumatera Utara', '91200'), +('1021', 'Sawangan', 'IDN', 'West Java', '91100'), +('1022', 'Banyuwangi', 'IDN', 'East Java', '89900'), +('1023', 'Tanjung Pinang', 'IDN', 'Riau', '89900'), +('1024', 'Mumbai (Bombay)', 'IND', 'Maharashtra', '10500000'), +('1025', 'Delhi', 'IND', 'Delhi', '7206704'), +('1026', 'Calcutta [Kolkata]', 'IND', 'West Bengali', '4399819'), +('1027', 'Chennai (Madras)', 'IND', 'Tamil Nadu', '3841396'), +('1028', 'Hyderabad', 'IND', 'Andhra Pradesh', '2964638'), +('1029', 'Ahmedabad', 'IND', 'Gujarat', '2876710'), +('1030', 'Bangalore', 'IND', 'Karnataka', '2660088'), +('1031', 'Kanpur', 'IND', 'Uttar Pradesh', '1874409'), +('1032', 'Nagpur', 'IND', 'Maharashtra', '1624752'), +('1033', 'Lucknow', 'IND', 'Uttar Pradesh', '1619115'), +('1034', 'Pune', 'IND', 'Maharashtra', '1566651'), +('1035', 'Surat', 'IND', 'Gujarat', '1498817'), +('1036', 'Jaipur', 'IND', 'Rajasthan', '1458483'), +('1037', 'Indore', 'IND', 'Madhya Pradesh', '1091674'), +('1038', 'Bhopal', 'IND', 'Madhya Pradesh', '1062771'), +('1039', 'Ludhiana', 'IND', 'Punjab', '1042740'), +('1040', 'Vadodara (Baroda)', 'IND', 'Gujarat', '1031346'), +('1041', 'Kalyan', 'IND', 'Maharashtra', '1014557'), +('1042', 'Madurai', 'IND', 'Tamil Nadu', '977856'), +('1043', 'Haora (Howrah)', 'IND', 'West Bengali', '950435'), +('1044', 'Varanasi (Benares)', 'IND', 'Uttar Pradesh', '929270'), +('1045', 'Patna', 'IND', 'Bihar', '917243'), +('1046', 'Srinagar', 'IND', 'Jammu and Kashmir', '892506'), +('1047', 'Agra', 'IND', 'Uttar Pradesh', '891790'), +('1048', 'Coimbatore', 'IND', 'Tamil Nadu', '816321'), +('1049', 'Thane (Thana)', 'IND', 'Maharashtra', '803389'), +('1050', 'Allahabad', 'IND', 'Uttar Pradesh', '792858'), +('1051', 'Meerut', 'IND', 'Uttar Pradesh', '753778'), +('1052', 'Vishakhapatnam', 'IND', 'Andhra Pradesh', '752037'), +('1053', 'Jabalpur', 'IND', 'Madhya Pradesh', '741927'), +('1054', 'Amritsar', 'IND', 'Punjab', '708835'), +('1055', 'Faridabad', 'IND', 'Haryana', '703592'), +('1056', 'Vijayawada', 'IND', 'Andhra Pradesh', '701827'), +('1057', 'Gwalior', 'IND', 'Madhya Pradesh', '690765'), +('1058', 'Jodhpur', 'IND', 'Rajasthan', '666279'), +('1059', 'Nashik (Nasik)', 'IND', 'Maharashtra', '656925'), +('1060', 'Hubli-Dharwad', 'IND', 'Karnataka', '648298'), +('1061', 'Solapur (Sholapur)', 'IND', 'Maharashtra', '604215'), +('1062', 'Ranchi', 'IND', 'Jharkhand', '599306'), +('1063', 'Bareilly', 'IND', 'Uttar Pradesh', '587211'), +('1064', 'Guwahati (Gauhati)', 'IND', 'Assam', '584342'), +('1065', 'Shambajinagar (Aurangabad)', 'IND', 'Maharashtra', '573272'), +('1066', 'Cochin (Kochi)', 'IND', 'Kerala', '564589'), +('1067', 'Rajkot', 'IND', 'Gujarat', '559407'), +('1068', 'Kota', 'IND', 'Rajasthan', '537371'), +('1069', 'Thiruvananthapuram (Trivandrum', 'IND', 'Kerala', '524006'), +('1070', 'Pimpri-Chinchwad', 'IND', 'Maharashtra', '517083'), +('1071', 'Jalandhar (Jullundur)', 'IND', 'Punjab', '509510'), +('1072', 'Gorakhpur', 'IND', 'Uttar Pradesh', '505566'), +('1073', 'Chandigarh', 'IND', 'Chandigarh', '504094'), +('1074', 'Mysore', 'IND', 'Karnataka', '480692'), +('1075', 'Aligarh', 'IND', 'Uttar Pradesh', '480520'), +('1076', 'Guntur', 'IND', 'Andhra Pradesh', '471051'), +('1077', 'Jamshedpur', 'IND', 'Jharkhand', '460577'), +('1078', 'Ghaziabad', 'IND', 'Uttar Pradesh', '454156'), +('1079', 'Warangal', 'IND', 'Andhra Pradesh', '447657'), +('1080', 'Raipur', 'IND', 'Chhatisgarh', '438639'), +('1081', 'Moradabad', 'IND', 'Uttar Pradesh', '429214'), +('1082', 'Durgapur', 'IND', 'West Bengali', '425836'), +('1083', 'Amravati', 'IND', 'Maharashtra', '421576'), +('1084', 'Calicut (Kozhikode)', 'IND', 'Kerala', '419831'), +('1085', 'Bikaner', 'IND', 'Rajasthan', '416289'), +('1086', 'Bhubaneswar', 'IND', 'Orissa', '411542'), +('1087', 'Kolhapur', 'IND', 'Maharashtra', '406370'), +('1088', 'Kataka (Cuttack)', 'IND', 'Orissa', '403418'), +('1089', 'Ajmer', 'IND', 'Rajasthan', '402700'), +('1090', 'Bhavnagar', 'IND', 'Gujarat', '402338'), +('1091', 'Tiruchirapalli', 'IND', 'Tamil Nadu', '387223'), +('1092', 'Bhilai', 'IND', 'Chhatisgarh', '386159'), +('1093', 'Bhiwandi', 'IND', 'Maharashtra', '379070'), +('1094', 'Saharanpur', 'IND', 'Uttar Pradesh', '374945'), +('1095', 'Ulhasnagar', 'IND', 'Maharashtra', '369077'), +('1096', 'Salem', 'IND', 'Tamil Nadu', '366712'), +('1097', 'Ujjain', 'IND', 'Madhya Pradesh', '362266'), +('1098', 'Malegaon', 'IND', 'Maharashtra', '342595'), +('1099', 'Jamnagar', 'IND', 'Gujarat', '341637'), +('1100', 'Bokaro Steel City', 'IND', 'Jharkhand', '333683'), +('1101', 'Akola', 'IND', 'Maharashtra', '328034'), +('1102', 'Belgaum', 'IND', 'Karnataka', '326399'), +('1103', 'Rajahmundry', 'IND', 'Andhra Pradesh', '324851'), +('1104', 'Nellore', 'IND', 'Andhra Pradesh', '316606'), +('1105', 'Udaipur', 'IND', 'Rajasthan', '308571'), +('1106', 'New Bombay', 'IND', 'Maharashtra', '307297'), +('1107', 'Bhatpara', 'IND', 'West Bengali', '304952'), +('1108', 'Gulbarga', 'IND', 'Karnataka', '304099'), +('1109', 'New Delhi', 'IND', 'Delhi', '301297'), +('1110', 'Jhansi', 'IND', 'Uttar Pradesh', '300850'), +('1111', 'Gaya', 'IND', 'Bihar', '291675'), +('1112', 'Kakinada', 'IND', 'Andhra Pradesh', '279980'), +('1113', 'Dhule (Dhulia)', 'IND', 'Maharashtra', '278317'), +('1114', 'Panihati', 'IND', 'West Bengali', '275990'), +('1115', 'Nanded (Nander)', 'IND', 'Maharashtra', '275083'), +('1116', 'Mangalore', 'IND', 'Karnataka', '273304'), +('1117', 'Dehra Dun', 'IND', 'Uttaranchal', '270159'), +('1118', 'Kamarhati', 'IND', 'West Bengali', '266889'), +('1119', 'Davangere', 'IND', 'Karnataka', '266082'), +('1120', 'Asansol', 'IND', 'West Bengali', '262188'), +('1121', 'Bhagalpur', 'IND', 'Bihar', '253225'), +('1122', 'Bellary', 'IND', 'Karnataka', '245391'), +('1123', 'Barddhaman (Burdwan)', 'IND', 'West Bengali', '245079'), +('1124', 'Rampur', 'IND', 'Uttar Pradesh', '243742'), +('1125', 'Jalgaon', 'IND', 'Maharashtra', '242193'), +('1126', 'Muzaffarpur', 'IND', 'Bihar', '241107'), +('1127', 'Nizamabad', 'IND', 'Andhra Pradesh', '241034'), +('1128', 'Muzaffarnagar', 'IND', 'Uttar Pradesh', '240609'), +('1129', 'Patiala', 'IND', 'Punjab', '238368'), +('1130', 'Shahjahanpur', 'IND', 'Uttar Pradesh', '237713'), +('1131', 'Kurnool', 'IND', 'Andhra Pradesh', '236800'), +('1132', 'Tiruppur (Tirupper)', 'IND', 'Tamil Nadu', '235661'), +('1133', 'Rohtak', 'IND', 'Haryana', '233400'), +('1134', 'South Dum Dum', 'IND', 'West Bengali', '232811'), +('1135', 'Mathura', 'IND', 'Uttar Pradesh', '226691'), +('1136', 'Chandrapur', 'IND', 'Maharashtra', '226105'), +('1137', 'Barahanagar (Baranagar)', 'IND', 'West Bengali', '224821'), +('1138', 'Darbhanga', 'IND', 'Bihar', '218391'), +('1139', 'Siliguri (Shiliguri)', 'IND', 'West Bengali', '216950'), +('1140', 'Raurkela', 'IND', 'Orissa', '215489'), +('1141', 'Ambattur', 'IND', 'Tamil Nadu', '215424'), +('1142', 'Panipat', 'IND', 'Haryana', '215218'), +('1143', 'Firozabad', 'IND', 'Uttar Pradesh', '215128'), +('1144', 'Ichalkaranji', 'IND', 'Maharashtra', '214950'), +('1145', 'Jammu', 'IND', 'Jammu and Kashmir', '214737'), +('1146', 'Ramagundam', 'IND', 'Andhra Pradesh', '214384'), +('1147', 'Eluru', 'IND', 'Andhra Pradesh', '212866'), +('1148', 'Brahmapur', 'IND', 'Orissa', '210418'), +('1149', 'Alwar', 'IND', 'Rajasthan', '205086'), +('1150', 'Pondicherry', 'IND', 'Pondicherry', '203065'), +('1151', 'Thanjavur', 'IND', 'Tamil Nadu', '202013'), +('1152', 'Bihar Sharif', 'IND', 'Bihar', '201323'), +('1153', 'Tuticorin', 'IND', 'Tamil Nadu', '199854'), +('1154', 'Imphal', 'IND', 'Manipur', '198535'), +('1155', 'Latur', 'IND', 'Maharashtra', '197408'), +('1156', 'Sagar', 'IND', 'Madhya Pradesh', '195346'), +('1157', 'Farrukhabad-cum-Fatehgarh', 'IND', 'Uttar Pradesh', '194567'), +('1158', 'Sangli', 'IND', 'Maharashtra', '193197'), +('1159', 'Parbhani', 'IND', 'Maharashtra', '190255'), +('1160', 'Nagar Coil', 'IND', 'Tamil Nadu', '190084'), +('1161', 'Bijapur', 'IND', 'Karnataka', '186939'), +('1162', 'Kukatpalle', 'IND', 'Andhra Pradesh', '185378'), +('1163', 'Bally', 'IND', 'West Bengali', '184474'), +('1164', 'Bhilwara', 'IND', 'Rajasthan', '183965'), +('1165', 'Ratlam', 'IND', 'Madhya Pradesh', '183375'), +('1166', 'Avadi', 'IND', 'Tamil Nadu', '183215'), +('1167', 'Dindigul', 'IND', 'Tamil Nadu', '182477'), +('1168', 'Ahmadnagar', 'IND', 'Maharashtra', '181339'), +('1169', 'Bilaspur', 'IND', 'Chhatisgarh', '179833'), +('1170', 'Shimoga', 'IND', 'Karnataka', '179258'), +('1171', 'Kharagpur', 'IND', 'West Bengali', '177989'), +('1172', 'Mira Bhayandar', 'IND', 'Maharashtra', '175372'), +('1173', 'Vellore', 'IND', 'Tamil Nadu', '175061'), +('1174', 'Jalna', 'IND', 'Maharashtra', '174985'), +('1175', 'Burnpur', 'IND', 'West Bengali', '174933'), +('1176', 'Anantapur', 'IND', 'Andhra Pradesh', '174924'), +('1177', 'Allappuzha (Alleppey)', 'IND', 'Kerala', '174666'), +('1178', 'Tirupati', 'IND', 'Andhra Pradesh', '174369'), +('1179', 'Karnal', 'IND', 'Haryana', '173751'), +('1180', 'Burhanpur', 'IND', 'Madhya Pradesh', '172710'), +('1181', 'Hisar (Hissar)', 'IND', 'Haryana', '172677'), +('1182', 'Tiruvottiyur', 'IND', 'Tamil Nadu', '172562'), +('1183', 'Mirzapur-cum-Vindhyachal', 'IND', 'Uttar Pradesh', '169336'), +('1184', 'Secunderabad', 'IND', 'Andhra Pradesh', '167461'), +('1185', 'Nadiad', 'IND', 'Gujarat', '167051'), +('1186', 'Dewas', 'IND', 'Madhya Pradesh', '164364'), +('1187', 'Murwara (Katni)', 'IND', 'Madhya Pradesh', '163431'), +('1188', 'Ganganagar', 'IND', 'Rajasthan', '161482'), +('1189', 'Vizianagaram', 'IND', 'Andhra Pradesh', '160359'), +('1190', 'Erode', 'IND', 'Tamil Nadu', '159232'), +('1191', 'Machilipatnam (Masulipatam)', 'IND', 'Andhra Pradesh', '159110'), +('1192', 'Bhatinda (Bathinda)', 'IND', 'Punjab', '159042'), +('1193', 'Raichur', 'IND', 'Karnataka', '157551'), +('1194', 'Agartala', 'IND', 'Tripura', '157358'), +('1195', 'Arrah (Ara)', 'IND', 'Bihar', '157082'), +('1196', 'Satna', 'IND', 'Madhya Pradesh', '156630'), +('1197', 'Lalbahadur Nagar', 'IND', 'Andhra Pradesh', '155500'), +('1198', 'Aizawl', 'IND', 'Mizoram', '155240'), +('1199', 'Uluberia', 'IND', 'West Bengali', '155172'), +('1200', 'Katihar', 'IND', 'Bihar', '154367'), +('1201', 'Cuddalore', 'IND', 'Tamil Nadu', '153086'), +('1202', 'Hugli-Chinsurah', 'IND', 'West Bengali', '151806'), +('1203', 'Dhanbad', 'IND', 'Jharkhand', '151789'), +('1204', 'Raiganj', 'IND', 'West Bengali', '151045'), +('1205', 'Sambhal', 'IND', 'Uttar Pradesh', '150869'), +('1206', 'Durg', 'IND', 'Chhatisgarh', '150645'), +('1207', 'Munger (Monghyr)', 'IND', 'Bihar', '150112'), +('1208', 'Kanchipuram', 'IND', 'Tamil Nadu', '150100'), +('1209', 'North Dum Dum', 'IND', 'West Bengali', '149965'), +('1210', 'Karimnagar', 'IND', 'Andhra Pradesh', '148583'), +('1211', 'Bharatpur', 'IND', 'Rajasthan', '148519'), +('1212', 'Sikar', 'IND', 'Rajasthan', '148272'), +('1213', 'Hardwar (Haridwar)', 'IND', 'Uttaranchal', '147305'), +('1214', 'Dabgram', 'IND', 'West Bengali', '147217'), +('1215', 'Morena', 'IND', 'Madhya Pradesh', '147124'), +('1216', 'Noida', 'IND', 'Uttar Pradesh', '146514'), +('1217', 'Hapur', 'IND', 'Uttar Pradesh', '146262'), +('1218', 'Bhusawal', 'IND', 'Maharashtra', '145143'), +('1219', 'Khandwa', 'IND', 'Madhya Pradesh', '145133'), +('1220', 'Yamuna Nagar', 'IND', 'Haryana', '144346'), +('1221', 'Sonipat (Sonepat)', 'IND', 'Haryana', '143922'), +('1222', 'Tenali', 'IND', 'Andhra Pradesh', '143726'), +('1223', 'Raurkela Civil Township', 'IND', 'Orissa', '140408'), +('1224', 'Kollam (Quilon)', 'IND', 'Kerala', '139852'), +('1225', 'Kumbakonam', 'IND', 'Tamil Nadu', '139483'), +('1226', 'Ingraj Bazar (English Bazar)', 'IND', 'West Bengali', '139204'), +('1227', 'Timkur', 'IND', 'Karnataka', '138903'), +('1228', 'Amroha', 'IND', 'Uttar Pradesh', '137061'), +('1229', 'Serampore', 'IND', 'West Bengali', '137028'), +('1230', 'Chapra', 'IND', 'Bihar', '136877'), +('1231', 'Pali', 'IND', 'Rajasthan', '136842'), +('1232', 'Maunath Bhanjan', 'IND', 'Uttar Pradesh', '136697'), +('1233', 'Adoni', 'IND', 'Andhra Pradesh', '136182'), +('1234', 'Jaunpur', 'IND', 'Uttar Pradesh', '136062'), +('1235', 'Tirunelveli', 'IND', 'Tamil Nadu', '135825'), +('1236', 'Bahraich', 'IND', 'Uttar Pradesh', '135400'), +('1237', 'Gadag Betigeri', 'IND', 'Karnataka', '134051'), +('1238', 'Proddatur', 'IND', 'Andhra Pradesh', '133914'), +('1239', 'Chittoor', 'IND', 'Andhra Pradesh', '133462'), +('1240', 'Barrackpur', 'IND', 'West Bengali', '133265'), +('1241', 'Bharuch (Broach)', 'IND', 'Gujarat', '133102'), +('1242', 'Naihati', 'IND', 'West Bengali', '132701'), +('1243', 'Shillong', 'IND', 'Meghalaya', '131719'), +('1244', 'Sambalpur', 'IND', 'Orissa', '131138'), +('1245', 'Junagadh', 'IND', 'Gujarat', '130484'), +('1246', 'Rae Bareli', 'IND', 'Uttar Pradesh', '129904'), +('1247', 'Rewa', 'IND', 'Madhya Pradesh', '128981'), +('1248', 'Gurgaon', 'IND', 'Haryana', '128608'), +('1249', 'Khammam', 'IND', 'Andhra Pradesh', '127992'), +('1250', 'Bulandshahr', 'IND', 'Uttar Pradesh', '127201'), +('1251', 'Navsari', 'IND', 'Gujarat', '126089'), +('1252', 'Malkajgiri', 'IND', 'Andhra Pradesh', '126066'), +('1253', 'Midnapore (Medinipur)', 'IND', 'West Bengali', '125498'), +('1254', 'Miraj', 'IND', 'Maharashtra', '125407'), +('1255', 'Raj Nandgaon', 'IND', 'Chhatisgarh', '125371'), +('1256', 'Alandur', 'IND', 'Tamil Nadu', '125244'), +('1257', 'Puri', 'IND', 'Orissa', '125199'), +('1258', 'Navadwip', 'IND', 'West Bengali', '125037'), +('1259', 'Sirsa', 'IND', 'Haryana', '125000'), +('1260', 'Korba', 'IND', 'Chhatisgarh', '124501'), +('1261', 'Faizabad', 'IND', 'Uttar Pradesh', '124437'), +('1262', 'Etawah', 'IND', 'Uttar Pradesh', '124072'), +('1263', 'Pathankot', 'IND', 'Punjab', '123930'), +('1264', 'Gandhinagar', 'IND', 'Gujarat', '123359'), +('1265', 'Palghat (Palakkad)', 'IND', 'Kerala', '123289'), +('1266', 'Veraval', 'IND', 'Gujarat', '123000'), +('1267', 'Hoshiarpur', 'IND', 'Punjab', '122705'), +('1268', 'Ambala', 'IND', 'Haryana', '122596'), +('1269', 'Sitapur', 'IND', 'Uttar Pradesh', '121842'), +('1270', 'Bhiwani', 'IND', 'Haryana', '121629'), +('1271', 'Cuddapah', 'IND', 'Andhra Pradesh', '121463'), +('1272', 'Bhimavaram', 'IND', 'Andhra Pradesh', '121314'), +('1273', 'Krishnanagar', 'IND', 'West Bengali', '121110'), +('1274', 'Chandannagar', 'IND', 'West Bengali', '120378'), +('1275', 'Mandya', 'IND', 'Karnataka', '120265'), +('1276', 'Dibrugarh', 'IND', 'Assam', '120127'), +('1277', 'Nandyal', 'IND', 'Andhra Pradesh', '119813'), +('1278', 'Balurghat', 'IND', 'West Bengali', '119796'), +('1279', 'Neyveli', 'IND', 'Tamil Nadu', '118080'), +('1280', 'Fatehpur', 'IND', 'Uttar Pradesh', '117675'), +('1281', 'Mahbubnagar', 'IND', 'Andhra Pradesh', '116833'), +('1282', 'Budaun', 'IND', 'Uttar Pradesh', '116695'), +('1283', 'Porbandar', 'IND', 'Gujarat', '116671'), +('1284', 'Silchar', 'IND', 'Assam', '115483'), +('1285', 'Berhampore (Baharampur)', 'IND', 'West Bengali', '115144'), +('1286', 'Purnea (Purnia)', 'IND', 'Jharkhand', '114912'), +('1287', 'Bankura', 'IND', 'West Bengali', '114876'), +('1288', 'Rajapalaiyam', 'IND', 'Tamil Nadu', '114202'), +('1289', 'Titagarh', 'IND', 'West Bengali', '114085'), +('1290', 'Halisahar', 'IND', 'West Bengali', '114028'), +('1291', 'Hathras', 'IND', 'Uttar Pradesh', '113285'), +('1292', 'Bhir (Bid)', 'IND', 'Maharashtra', '112434'), +('1293', 'Pallavaram', 'IND', 'Tamil Nadu', '111866'), +('1294', 'Anand', 'IND', 'Gujarat', '110266'), +('1295', 'Mango', 'IND', 'Jharkhand', '110024'), +('1296', 'Santipur', 'IND', 'West Bengali', '109956'), +('1297', 'Bhind', 'IND', 'Madhya Pradesh', '109755'), +('1298', 'Gondiya', 'IND', 'Maharashtra', '109470'), +('1299', 'Tiruvannamalai', 'IND', 'Tamil Nadu', '109196'), +('1300', 'Yeotmal (Yavatmal)', 'IND', 'Maharashtra', '108578'), +('1301', 'Kulti-Barakar', 'IND', 'West Bengali', '108518'), +('1302', 'Moga', 'IND', 'Punjab', '108304'), +('1303', 'Shivapuri', 'IND', 'Madhya Pradesh', '108277'), +('1304', 'Bidar', 'IND', 'Karnataka', '108016'), +('1305', 'Guntakal', 'IND', 'Andhra Pradesh', '107592'), +('1306', 'Unnao', 'IND', 'Uttar Pradesh', '107425'), +('1307', 'Barasat', 'IND', 'West Bengali', '107365'), +('1308', 'Tambaram', 'IND', 'Tamil Nadu', '107187'), +('1309', 'Abohar', 'IND', 'Punjab', '107163'), +('1310', 'Pilibhit', 'IND', 'Uttar Pradesh', '106605'), +('1311', 'Valparai', 'IND', 'Tamil Nadu', '106523'), +('1312', 'Gonda', 'IND', 'Uttar Pradesh', '106078'), +('1313', 'Surendranagar', 'IND', 'Gujarat', '105973'), +('1314', 'Qutubullapur', 'IND', 'Andhra Pradesh', '105380'), +('1315', 'Beawar', 'IND', 'Rajasthan', '105363'), +('1316', 'Hindupur', 'IND', 'Andhra Pradesh', '104651'), +('1317', 'Gandhidham', 'IND', 'Gujarat', '104585'), +('1318', 'Haldwani-cum-Kathgodam', 'IND', 'Uttaranchal', '104195'), +('1319', 'Tellicherry (Thalassery)', 'IND', 'Kerala', '103579'), +('1320', 'Wardha', 'IND', 'Maharashtra', '102985'), +('1321', 'Rishra', 'IND', 'West Bengali', '102649'), +('1322', 'Bhuj', 'IND', 'Gujarat', '102176'), +('1323', 'Modinagar', 'IND', 'Uttar Pradesh', '101660'), +('1324', 'Gudivada', 'IND', 'Andhra Pradesh', '101656'), +('1325', 'Basirhat', 'IND', 'West Bengali', '101409'), +('1326', 'Uttarpara-Kotrung', 'IND', 'West Bengali', '100867'), +('1327', 'Ongole', 'IND', 'Andhra Pradesh', '100836'), +('1328', 'North Barrackpur', 'IND', 'West Bengali', '100513'), +('1329', 'Guna', 'IND', 'Madhya Pradesh', '100490'), +('1330', 'Haldia', 'IND', 'West Bengali', '100347'), +('1331', 'Habra', 'IND', 'West Bengali', '100223'), +('1332', 'Kanchrapara', 'IND', 'West Bengali', '100194'), +('1333', 'Tonk', 'IND', 'Rajasthan', '100079'), +('1334', 'Champdani', 'IND', 'West Bengali', '98818'), +('1335', 'Orai', 'IND', 'Uttar Pradesh', '98640'), +('1336', 'Pudukkottai', 'IND', 'Tamil Nadu', '98619'), +('1337', 'Sasaram', 'IND', 'Bihar', '98220'), +('1338', 'Hazaribag', 'IND', 'Jharkhand', '97712'), +('1339', 'Palayankottai', 'IND', 'Tamil Nadu', '97662'), +('1340', 'Banda', 'IND', 'Uttar Pradesh', '97227'), +('1341', 'Godhra', 'IND', 'Gujarat', '96813'), +('1342', 'Hospet', 'IND', 'Karnataka', '96322'), +('1343', 'Ashoknagar-Kalyangarh', 'IND', 'West Bengali', '96315'), +('1344', 'Achalpur', 'IND', 'Maharashtra', '96216'), +('1345', 'Patan', 'IND', 'Gujarat', '96109'), +('1346', 'Mandasor', 'IND', 'Madhya Pradesh', '95758'), +('1347', 'Damoh', 'IND', 'Madhya Pradesh', '95661'), +('1348', 'Satara', 'IND', 'Maharashtra', '95133'), +('1349', 'Meerut Cantonment', 'IND', 'Uttar Pradesh', '94876'), +('1350', 'Dehri', 'IND', 'Bihar', '94526'), +('1351', 'Delhi Cantonment', 'IND', 'Delhi', '94326'), +('1352', 'Chhindwara', 'IND', 'Madhya Pradesh', '93731'), +('1353', 'Bansberia', 'IND', 'West Bengali', '93447'), +('1354', 'Nagaon', 'IND', 'Assam', '93350'), +('1355', 'Kanpur Cantonment', 'IND', 'Uttar Pradesh', '93109'), +('1356', 'Vidisha', 'IND', 'Madhya Pradesh', '92917'), +('1357', 'Bettiah', 'IND', 'Bihar', '92583'), +('1358', 'Purulia', 'IND', 'Jharkhand', '92574'), +('1359', 'Hassan', 'IND', 'Karnataka', '90803'), +('1360', 'Ambala Sadar', 'IND', 'Haryana', '90712'), +('1361', 'Baidyabati', 'IND', 'West Bengali', '90601'), +('1362', 'Morvi', 'IND', 'Gujarat', '90357'), +('1363', 'Raigarh', 'IND', 'Chhatisgarh', '89166'), +('1364', 'Vejalpur', 'IND', 'Gujarat', '89053'), +('1365', 'Baghdad', 'IRQ', 'Baghdad', '4336000'), +('1366', 'Mosul', 'IRQ', 'Ninawa', '879000'), +('1367', 'Irbil', 'IRQ', 'Irbil', '485968'), +('1368', 'Kirkuk', 'IRQ', 'al-Tamim', '418624'), +('1369', 'Basra', 'IRQ', 'Basra', '406296'), +('1370', 'al-Sulaymaniya', 'IRQ', 'al-Sulaymaniya', '364096'), +('1371', 'al-Najaf', 'IRQ', 'al-Najaf', '309010'), +('1372', 'Karbala', 'IRQ', 'Karbala', '296705'), +('1373', 'al-Hilla', 'IRQ', 'Babil', '268834'), +('1374', 'al-Nasiriya', 'IRQ', 'DhiQar', '265937'), +('1375', 'al-Amara', 'IRQ', 'Maysan', '208797'), +('1376', 'al-Diwaniya', 'IRQ', 'al-Qadisiya', '196519'), +('1377', 'al-Ramadi', 'IRQ', 'al-Anbar', '192556'), +('1378', 'al-Kut', 'IRQ', 'Wasit', '183183'), +('1379', 'Baquba', 'IRQ', 'Diyala', '114516'), +('1380', 'Teheran', 'IRN', 'Teheran', '6758845'), +('1381', 'Mashhad', 'IRN', 'Khorasan', '1887405'), +('1382', 'Esfahan', 'IRN', 'Esfahan', '1266072'), +('1383', 'Tabriz', 'IRN', 'East Azerbaidzan', '1191043'), +('1384', 'Shiraz', 'IRN', 'Fars', '1053025'), +('1385', 'Karaj', 'IRN', 'Teheran', '940968'), +('1386', 'Ahvaz', 'IRN', 'Khuzestan', '804980'), +('1387', 'Qom', 'IRN', 'Qom', '777677'), +('1388', 'Kermanshah', 'IRN', 'Kermanshah', '692986'), +('1389', 'Urmia', 'IRN', 'West Azerbaidzan', '435200'), +('1390', 'Zahedan', 'IRN', 'Sistan va Baluchesta', '419518'), +('1391', 'Rasht', 'IRN', 'Gilan', '417748'), +('1392', 'Hamadan', 'IRN', 'Hamadan', '401281'), +('1393', 'Kerman', 'IRN', 'Kerman', '384991'), +('1394', 'Arak', 'IRN', 'Markazi', '380755'), +('1395', 'Ardebil', 'IRN', 'Ardebil', '340386'), +('1396', 'Yazd', 'IRN', 'Yazd', '326776'), +('1397', 'Qazvin', 'IRN', 'Qazvin', '291117'), +('1398', 'Zanjan', 'IRN', 'Zanjan', '286295'), +('1399', 'Sanandaj', 'IRN', 'Kordestan', '277808'), +('1400', 'Bandar-e-Abbas', 'IRN', 'Hormozgan', '273578'), +('1401', 'Khorramabad', 'IRN', 'Lorestan', '272815'), +('1402', 'Eslamshahr', 'IRN', 'Teheran', '265450'), +('1403', 'Borujerd', 'IRN', 'Lorestan', '217804'), +('1404', 'Abadan', 'IRN', 'Khuzestan', '206073'), +('1405', 'Dezful', 'IRN', 'Khuzestan', '202639'), +('1406', 'Kashan', 'IRN', 'Esfahan', '201372'), +('1407', 'Sari', 'IRN', 'Mazandaran', '195882'), +('1408', 'Gorgan', 'IRN', 'Golestan', '188710'), +('1409', 'Najafabad', 'IRN', 'Esfahan', '178498'), +('1410', 'Sabzevar', 'IRN', 'Khorasan', '170738'), +('1411', 'Khomeynishahr', 'IRN', 'Esfahan', '165888'), +('1412', 'Amol', 'IRN', 'Mazandaran', '159092'), +('1413', 'Neyshabur', 'IRN', 'Khorasan', '158847'), +('1414', 'Babol', 'IRN', 'Mazandaran', '158346'), +('1415', 'Khoy', 'IRN', 'West Azerbaidzan', '148944'), +('1416', 'Malayer', 'IRN', 'Hamadan', '144373'), +('1417', 'Bushehr', 'IRN', 'Bushehr', '143641'), +('1418', 'Qaemshahr', 'IRN', 'Mazandaran', '143286'), +('1419', 'Qarchak', 'IRN', 'Teheran', '142690'), +('1420', 'Qods', 'IRN', 'Teheran', '138278'), +('1421', 'Sirjan', 'IRN', 'Kerman', '135024'), +('1422', 'Bojnurd', 'IRN', 'Khorasan', '134835'), +('1423', 'Maragheh', 'IRN', 'East Azerbaidzan', '132318'), +('1424', 'Birjand', 'IRN', 'Khorasan', '127608'), +('1425', 'Ilam', 'IRN', 'Ilam', '126346'), +('1426', 'Bukan', 'IRN', 'West Azerbaidzan', '120020'), +('1427', 'Masjed-e-Soleyman', 'IRN', 'Khuzestan', '116883'), +('1428', 'Saqqez', 'IRN', 'Kordestan', '115394'), +('1429', 'Gonbad-e Qabus', 'IRN', 'Mazandaran', '111253'), +('1430', 'Saveh', 'IRN', 'Qom', '111245'), +('1431', 'Mahabad', 'IRN', 'West Azerbaidzan', '107799'), +('1432', 'Varamin', 'IRN', 'Teheran', '107233'), +('1433', 'Andimeshk', 'IRN', 'Khuzestan', '106923'), +('1434', 'Khorramshahr', 'IRN', 'Khuzestan', '105636'), +('1435', 'Shahrud', 'IRN', 'Semnan', '104765'), +('1436', 'Marv Dasht', 'IRN', 'Fars', '103579'), +('1437', 'Zabol', 'IRN', 'Sistan va Baluchesta', '100887'), +('1438', 'Shahr-e Kord', 'IRN', 'Chaharmahal va Bakht', '100477'), +('1439', 'Bandar-e Anzali', 'IRN', 'Gilan', '98500'), +('1440', 'Rafsanjan', 'IRN', 'Kerman', '98300'), +('1441', 'Marand', 'IRN', 'East Azerbaidzan', '96400'), +('1442', 'Torbat-e Heydariyeh', 'IRN', 'Khorasan', '94600'), +('1443', 'Jahrom', 'IRN', 'Fars', '94200'), +('1444', 'Semnan', 'IRN', 'Semnan', '91045'), +('1445', 'Miandoab', 'IRN', 'West Azerbaidzan', '90100'), +('1446', 'Qomsheh', 'IRN', 'Esfahan', '89800'), +('1447', 'Dublin', 'IRL', 'Leinster', '481854'), +('1448', 'Cork', 'IRL', 'Munster', '127187'), +('1449', 'Reykjavík', 'ISL', 'Höfuđborgarsvćđi', '109184'), +('1450', 'Jerusalem', 'ISR', 'Jerusalem', '633700'), +('1451', 'Tel Aviv-Jaffa', 'ISR', 'Tel Aviv', '348100'), +('1452', 'Haifa', 'ISR', 'Haifa', '265700'), +('1453', 'Rishon Le Ziyyon', 'ISR', 'Ha Merkaz', '188200'), +('1454', 'Beerseba', 'ISR', 'Ha Darom', '163700'), +('1455', 'Holon', 'ISR', 'Tel Aviv', '163100'), +('1456', 'Petah Tiqwa', 'ISR', 'Ha Merkaz', '159400'), +('1457', 'Ashdod', 'ISR', 'Ha Darom', '155800'), +('1458', 'Netanya', 'ISR', 'Ha Merkaz', '154900'), +('1459', 'Bat Yam', 'ISR', 'Tel Aviv', '137000'), +('1460', 'Bene Beraq', 'ISR', 'Tel Aviv', '133900'), +('1461', 'Ramat Gan', 'ISR', 'Tel Aviv', '126900'), +('1462', 'Ashqelon', 'ISR', 'Ha Darom', '92300'), +('1463', 'Rehovot', 'ISR', 'Ha Merkaz', '90300'), +('1464', 'Roma', 'ITA', 'Latium', '2643581'), +('1465', 'Milano', 'ITA', 'Lombardia', '1300977'), +('1466', 'Napoli', 'ITA', 'Campania', '1002619'), +('1467', 'Torino', 'ITA', 'Piemonte', '903705'), +('1468', 'Palermo', 'ITA', 'Sisilia', '683794'), +('1469', 'Genova', 'ITA', 'Liguria', '636104'), +('1470', 'Bologna', 'ITA', 'Emilia-Romagna', '381161'), +('1471', 'Firenze', 'ITA', 'Toscana', '376662'), +('1472', 'Catania', 'ITA', 'Sisilia', '337862'), +('1473', 'Bari', 'ITA', 'Apulia', '331848'), +('1474', 'Venezia', 'ITA', 'Veneto', '277305'), +('1475', 'Messina', 'ITA', 'Sisilia', '259156'), +('1476', 'Verona', 'ITA', 'Veneto', '255268'), +('1477', 'Trieste', 'ITA', 'Friuli-Venezia Giuli', '216459'), +('1478', 'Padova', 'ITA', 'Veneto', '211391'), +('1479', 'Taranto', 'ITA', 'Apulia', '208214'), +('1480', 'Brescia', 'ITA', 'Lombardia', '191317'), +('1481', 'Reggio di Calabria', 'ITA', 'Calabria', '179617'), +('1482', 'Modena', 'ITA', 'Emilia-Romagna', '176022'), +('1483', 'Prato', 'ITA', 'Toscana', '172473'), +('1484', 'Parma', 'ITA', 'Emilia-Romagna', '168717'), +('1485', 'Cagliari', 'ITA', 'Sardinia', '165926'), +('1486', 'Livorno', 'ITA', 'Toscana', '161673'), +('1487', 'Perugia', 'ITA', 'Umbria', '156673'), +('1488', 'Foggia', 'ITA', 'Apulia', '154891'), +('1489', 'Reggio nell´ Emilia', 'ITA', 'Emilia-Romagna', '143664'), +('1490', 'Salerno', 'ITA', 'Campania', '142055'), +('1491', 'Ravenna', 'ITA', 'Emilia-Romagna', '138418'), +('1492', 'Ferrara', 'ITA', 'Emilia-Romagna', '132127'), +('1493', 'Rimini', 'ITA', 'Emilia-Romagna', '131062'), +('1494', 'Syrakusa', 'ITA', 'Sisilia', '126282'), +('1495', 'Sassari', 'ITA', 'Sardinia', '120803'), +('1496', 'Monza', 'ITA', 'Lombardia', '119516'), +('1497', 'Bergamo', 'ITA', 'Lombardia', '117837'), +('1498', 'Pescara', 'ITA', 'Abruzzit', '115698'), +('1499', 'Latina', 'ITA', 'Latium', '114099'), +('1500', 'Vicenza', 'ITA', 'Veneto', '109738'), +('1501', 'Terni', 'ITA', 'Umbria', '107770'), +('1502', 'Forlě', 'ITA', 'Emilia-Romagna', '107475'), +('1503', 'Trento', 'ITA', 'Trentino-Alto Adige', '104906'), +('1504', 'Novara', 'ITA', 'Piemonte', '102037'), +('1505', 'Piacenza', 'ITA', 'Emilia-Romagna', '98384'), +('1506', 'Ancona', 'ITA', 'Marche', '98329'), +('1507', 'Lecce', 'ITA', 'Apulia', '98208'), +('1508', 'Bolzano', 'ITA', 'Trentino-Alto Adige', '97232'), +('1509', 'Catanzaro', 'ITA', 'Calabria', '96700'), +('1510', 'La Spezia', 'ITA', 'Liguria', '95504'), +('1511', 'Udine', 'ITA', 'Friuli-Venezia Giuli', '94932'), +('1512', 'Torre del Greco', 'ITA', 'Campania', '94505'), +('1513', 'Andria', 'ITA', 'Apulia', '94443'), +('1514', 'Brindisi', 'ITA', 'Apulia', '93454'), +('1515', 'Giugliano in Campania', 'ITA', 'Campania', '93286'), +('1516', 'Pisa', 'ITA', 'Toscana', '92379'), +('1517', 'Barletta', 'ITA', 'Apulia', '91904'), +('1518', 'Arezzo', 'ITA', 'Toscana', '91729'), +('1519', 'Alessandria', 'ITA', 'Piemonte', '90289'), +('1520', 'Cesena', 'ITA', 'Emilia-Romagna', '89852'), +('1521', 'Pesaro', 'ITA', 'Marche', '88987'), +('1522', 'Dili', 'TMP', 'Dili', '47900'), +('1523', 'Wien', 'AUT', 'Wien', '1608144'), +('1524', 'Graz', 'AUT', 'Steiermark', '240967'), +('1525', 'Linz', 'AUT', 'North Austria', '188022'), +('1526', 'Salzburg', 'AUT', 'Salzburg', '144247'), +('1527', 'Innsbruck', 'AUT', 'Tiroli', '111752'), +('1528', 'Klagenfurt', 'AUT', 'Kärnten', '91141'), +('1529', 'Spanish Town', 'JAM', 'St. Catherine', '110379'), +('1530', 'Kingston', 'JAM', 'St. Andrew', '103962'), +('1531', 'Portmore', 'JAM', 'St. Andrew', '99799'), +('1532', 'Tokyo', 'JPN', 'Tokyo-to', '7980230'), +('1533', 'Jokohama [Yokohama]', 'JPN', 'Kanagawa', '3339594'), +('1534', 'Osaka', 'JPN', 'Osaka', '2595674'), +('1535', 'Nagoya', 'JPN', 'Aichi', '2154376'), +('1536', 'Sapporo', 'JPN', 'Hokkaido', '1790886'), +('1537', 'Kioto', 'JPN', 'Kyoto', '1461974'), +('1538', 'Kobe', 'JPN', 'Hyogo', '1425139'), +('1539', 'Fukuoka', 'JPN', 'Fukuoka', '1308379'), +('1540', 'Kawasaki', 'JPN', 'Kanagawa', '1217359'), +('1541', 'Hiroshima', 'JPN', 'Hiroshima', '1119117'), +('1542', 'Kitakyushu', 'JPN', 'Fukuoka', '1016264'), +('1543', 'Sendai', 'JPN', 'Miyagi', '989975'), +('1544', 'Chiba', 'JPN', 'Chiba', '863930'), +('1545', 'Sakai', 'JPN', 'Osaka', '797735'), +('1546', 'Kumamoto', 'JPN', 'Kumamoto', '656734'), +('1547', 'Okayama', 'JPN', 'Okayama', '624269'), +('1548', 'Sagamihara', 'JPN', 'Kanagawa', '586300'), +('1549', 'Hamamatsu', 'JPN', 'Shizuoka', '568796'), +('1550', 'Kagoshima', 'JPN', 'Kagoshima', '549977'), +('1551', 'Funabashi', 'JPN', 'Chiba', '545299'), +('1552', 'Higashiosaka', 'JPN', 'Osaka', '517785'), +('1553', 'Hachioji', 'JPN', 'Tokyo-to', '513451'), +('1554', 'Niigata', 'JPN', 'Niigata', '497464'), +('1555', 'Amagasaki', 'JPN', 'Hyogo', '481434'), +('1556', 'Himeji', 'JPN', 'Hyogo', '475167'), +('1557', 'Shizuoka', 'JPN', 'Shizuoka', '473854'), +('1558', 'Urawa', 'JPN', 'Saitama', '469675'), +('1559', 'Matsuyama', 'JPN', 'Ehime', '466133'), +('1560', 'Matsudo', 'JPN', 'Chiba', '461126'), +('1561', 'Kanazawa', 'JPN', 'Ishikawa', '455386'), +('1562', 'Kawaguchi', 'JPN', 'Saitama', '452155'), +('1563', 'Ichikawa', 'JPN', 'Chiba', '441893'), +('1564', 'Omiya', 'JPN', 'Saitama', '441649'), +('1565', 'Utsunomiya', 'JPN', 'Tochigi', '440353'), +('1566', 'Oita', 'JPN', 'Oita', '433401'), +('1567', 'Nagasaki', 'JPN', 'Nagasaki', '432759'), +('1568', 'Yokosuka', 'JPN', 'Kanagawa', '430200'), +('1569', 'Kurashiki', 'JPN', 'Okayama', '425103'), +('1570', 'Gifu', 'JPN', 'Gifu', '408007'), +('1571', 'Hirakata', 'JPN', 'Osaka', '403151'), +('1572', 'Nishinomiya', 'JPN', 'Hyogo', '397618'), +('1573', 'Toyonaka', 'JPN', 'Osaka', '396689'), +('1574', 'Wakayama', 'JPN', 'Wakayama', '391233'), +('1575', 'Fukuyama', 'JPN', 'Hiroshima', '376921'), +('1576', 'Fujisawa', 'JPN', 'Kanagawa', '372840'), +('1577', 'Asahikawa', 'JPN', 'Hokkaido', '364813'), +('1578', 'Machida', 'JPN', 'Tokyo-to', '364197'), +('1579', 'Nara', 'JPN', 'Nara', '362812'), +('1580', 'Takatsuki', 'JPN', 'Osaka', '361747'), +('1581', 'Iwaki', 'JPN', 'Fukushima', '361737'), +('1582', 'Nagano', 'JPN', 'Nagano', '361391'), +('1583', 'Toyohashi', 'JPN', 'Aichi', '360066'), +('1584', 'Toyota', 'JPN', 'Aichi', '346090'), +('1585', 'Suita', 'JPN', 'Osaka', '345750'), +('1586', 'Takamatsu', 'JPN', 'Kagawa', '332471'), +('1587', 'Koriyama', 'JPN', 'Fukushima', '330335'), +('1588', 'Okazaki', 'JPN', 'Aichi', '328711'), +('1589', 'Kawagoe', 'JPN', 'Saitama', '327211'), +('1590', 'Tokorozawa', 'JPN', 'Saitama', '325809'), +('1591', 'Toyama', 'JPN', 'Toyama', '325790'), +('1592', 'Kochi', 'JPN', 'Kochi', '324710'), +('1593', 'Kashiwa', 'JPN', 'Chiba', '320296'), +('1594', 'Akita', 'JPN', 'Akita', '314440'), +('1595', 'Miyazaki', 'JPN', 'Miyazaki', '303784'), +('1596', 'Koshigaya', 'JPN', 'Saitama', '301446'), +('1597', 'Naha', 'JPN', 'Okinawa', '299851'), +('1598', 'Aomori', 'JPN', 'Aomori', '295969'), +('1599', 'Hakodate', 'JPN', 'Hokkaido', '294788'), +('1600', 'Akashi', 'JPN', 'Hyogo', '292253'), +('1601', 'Yokkaichi', 'JPN', 'Mie', '288173'), +('1602', 'Fukushima', 'JPN', 'Fukushima', '287525'), +('1603', 'Morioka', 'JPN', 'Iwate', '287353'), +('1604', 'Maebashi', 'JPN', 'Gumma', '284473'), +('1605', 'Kasugai', 'JPN', 'Aichi', '282348'), +('1606', 'Otsu', 'JPN', 'Shiga', '282070'), +('1607', 'Ichihara', 'JPN', 'Chiba', '279280'), +('1608', 'Yao', 'JPN', 'Osaka', '276421'), +('1609', 'Ichinomiya', 'JPN', 'Aichi', '270828'), +('1610', 'Tokushima', 'JPN', 'Tokushima', '269649'), +('1611', 'Kakogawa', 'JPN', 'Hyogo', '266281'), +('1612', 'Ibaraki', 'JPN', 'Osaka', '261020'), +('1613', 'Neyagawa', 'JPN', 'Osaka', '257315'), +('1614', 'Shimonoseki', 'JPN', 'Yamaguchi', '257263'), +('1615', 'Yamagata', 'JPN', 'Yamagata', '255617'), +('1616', 'Fukui', 'JPN', 'Fukui', '254818'), +('1617', 'Hiratsuka', 'JPN', 'Kanagawa', '254207'), +('1618', 'Mito', 'JPN', 'Ibaragi', '246559'), +('1619', 'Sasebo', 'JPN', 'Nagasaki', '244240'), +('1620', 'Hachinohe', 'JPN', 'Aomori', '242979'), +('1621', 'Takasaki', 'JPN', 'Gumma', '239124'), +('1622', 'Shimizu', 'JPN', 'Shizuoka', '239123'), +('1623', 'Kurume', 'JPN', 'Fukuoka', '235611'), +('1624', 'Fuji', 'JPN', 'Shizuoka', '231527'), +('1625', 'Soka', 'JPN', 'Saitama', '222768'), +('1626', 'Fuchu', 'JPN', 'Tokyo-to', '220576'), +('1627', 'Chigasaki', 'JPN', 'Kanagawa', '216015'), +('1628', 'Atsugi', 'JPN', 'Kanagawa', '212407'), +('1629', 'Numazu', 'JPN', 'Shizuoka', '211382'), +('1630', 'Ageo', 'JPN', 'Saitama', '209442'), +('1631', 'Yamato', 'JPN', 'Kanagawa', '208234'), +('1632', 'Matsumoto', 'JPN', 'Nagano', '206801'), +('1633', 'Kure', 'JPN', 'Hiroshima', '206504'), +('1634', 'Takarazuka', 'JPN', 'Hyogo', '205993'), +('1635', 'Kasukabe', 'JPN', 'Saitama', '201838'), +('1636', 'Chofu', 'JPN', 'Tokyo-to', '201585'), +('1637', 'Odawara', 'JPN', 'Kanagawa', '200171'), +('1638', 'Kofu', 'JPN', 'Yamanashi', '199753'), +('1639', 'Kushiro', 'JPN', 'Hokkaido', '197608'), +('1640', 'Kishiwada', 'JPN', 'Osaka', '197276'), +('1641', 'Hitachi', 'JPN', 'Ibaragi', '196622'), +('1642', 'Nagaoka', 'JPN', 'Niigata', '192407'), +('1643', 'Itami', 'JPN', 'Hyogo', '190886'), +('1644', 'Uji', 'JPN', 'Kyoto', '188735'), +('1645', 'Suzuka', 'JPN', 'Mie', '184061'), +('1646', 'Hirosaki', 'JPN', 'Aomori', '177522'), +('1647', 'Ube', 'JPN', 'Yamaguchi', '175206'), +('1648', 'Kodaira', 'JPN', 'Tokyo-to', '174984'), +('1649', 'Takaoka', 'JPN', 'Toyama', '174380'), +('1650', 'Obihiro', 'JPN', 'Hokkaido', '173685'), +('1651', 'Tomakomai', 'JPN', 'Hokkaido', '171958'), +('1652', 'Saga', 'JPN', 'Saga', '170034'), +('1653', 'Sakura', 'JPN', 'Chiba', '168072'), +('1654', 'Kamakura', 'JPN', 'Kanagawa', '167661'), +('1655', 'Mitaka', 'JPN', 'Tokyo-to', '167268'), +('1656', 'Izumi', 'JPN', 'Osaka', '166979'), +('1657', 'Hino', 'JPN', 'Tokyo-to', '166770'), +('1658', 'Hadano', 'JPN', 'Kanagawa', '166512'), +('1659', 'Ashikaga', 'JPN', 'Tochigi', '165243'), +('1660', 'Tsu', 'JPN', 'Mie', '164543'), +('1661', 'Sayama', 'JPN', 'Saitama', '162472'), +('1662', 'Yachiyo', 'JPN', 'Chiba', '161222'), +('1663', 'Tsukuba', 'JPN', 'Ibaragi', '160768'), +('1664', 'Tachikawa', 'JPN', 'Tokyo-to', '159430'), +('1665', 'Kumagaya', 'JPN', 'Saitama', '157171'), +('1666', 'Moriguchi', 'JPN', 'Osaka', '155941'), +('1667', 'Otaru', 'JPN', 'Hokkaido', '155784'), +('1668', 'Anjo', 'JPN', 'Aichi', '153823'), +('1669', 'Narashino', 'JPN', 'Chiba', '152849'), +('1670', 'Oyama', 'JPN', 'Tochigi', '152820'), +('1671', 'Ogaki', 'JPN', 'Gifu', '151758'), +('1672', 'Matsue', 'JPN', 'Shimane', '149821'), +('1673', 'Kawanishi', 'JPN', 'Hyogo', '149794'), +('1674', 'Hitachinaka', 'JPN', 'Tokyo-to', '148006'), +('1675', 'Niiza', 'JPN', 'Saitama', '147744'), +('1676', 'Nagareyama', 'JPN', 'Chiba', '147738'), +('1677', 'Tottori', 'JPN', 'Tottori', '147523'), +('1678', 'Tama', 'JPN', 'Ibaragi', '146712'), +('1679', 'Iruma', 'JPN', 'Saitama', '145922'), +('1680', 'Ota', 'JPN', 'Gumma', '145317'), +('1681', 'Omuta', 'JPN', 'Fukuoka', '142889'), +('1682', 'Komaki', 'JPN', 'Aichi', '139827'), +('1683', 'Ome', 'JPN', 'Tokyo-to', '139216'), +('1684', 'Kadoma', 'JPN', 'Osaka', '138953'), +('1685', 'Yamaguchi', 'JPN', 'Yamaguchi', '138210'), +('1686', 'Higashimurayama', 'JPN', 'Tokyo-to', '136970'), +('1687', 'Yonago', 'JPN', 'Tottori', '136461'), +('1688', 'Matsubara', 'JPN', 'Osaka', '135010'), +('1689', 'Musashino', 'JPN', 'Tokyo-to', '134426'), +('1690', 'Tsuchiura', 'JPN', 'Ibaragi', '134072'), +('1691', 'Joetsu', 'JPN', 'Niigata', '133505'), +('1692', 'Miyakonojo', 'JPN', 'Miyazaki', '133183'), +('1693', 'Misato', 'JPN', 'Saitama', '132957'), +('1694', 'Kakamigahara', 'JPN', 'Gifu', '131831'), +('1695', 'Daito', 'JPN', 'Osaka', '130594'), +('1696', 'Seto', 'JPN', 'Aichi', '130470'), +('1697', 'Kariya', 'JPN', 'Aichi', '127969'), +('1698', 'Urayasu', 'JPN', 'Chiba', '127550'), +('1699', 'Beppu', 'JPN', 'Oita', '127486'), +('1700', 'Niihama', 'JPN', 'Ehime', '127207'), +('1701', 'Minoo', 'JPN', 'Osaka', '127026'), +('1702', 'Fujieda', 'JPN', 'Shizuoka', '126897'), +('1703', 'Abiko', 'JPN', 'Chiba', '126670'), +('1704', 'Nobeoka', 'JPN', 'Miyazaki', '125547'), +('1705', 'Tondabayashi', 'JPN', 'Osaka', '125094'), +('1706', 'Ueda', 'JPN', 'Nagano', '124217'), +('1707', 'Kashihara', 'JPN', 'Nara', '124013'), +('1708', 'Matsusaka', 'JPN', 'Mie', '123582'), +('1709', 'Isesaki', 'JPN', 'Gumma', '123285'), +('1710', 'Zama', 'JPN', 'Kanagawa', '122046'), +('1711', 'Kisarazu', 'JPN', 'Chiba', '121967'), +('1712', 'Noda', 'JPN', 'Chiba', '121030'), +('1713', 'Ishinomaki', 'JPN', 'Miyagi', '120963'), +('1714', 'Fujinomiya', 'JPN', 'Shizuoka', '119714'), +('1715', 'Kawachinagano', 'JPN', 'Osaka', '119666'), +('1716', 'Imabari', 'JPN', 'Ehime', '119357'), +('1717', 'Aizuwakamatsu', 'JPN', 'Fukushima', '119287'), +('1718', 'Higashihiroshima', 'JPN', 'Hiroshima', '119166'), +('1719', 'Habikino', 'JPN', 'Osaka', '118968'), +('1720', 'Ebetsu', 'JPN', 'Hokkaido', '118805'), +('1721', 'Hofu', 'JPN', 'Yamaguchi', '118751'), +('1722', 'Kiryu', 'JPN', 'Gumma', '118326'), +('1723', 'Okinawa', 'JPN', 'Okinawa', '117748'), +('1724', 'Yaizu', 'JPN', 'Shizuoka', '117258'), +('1725', 'Toyokawa', 'JPN', 'Aichi', '115781'), +('1726', 'Ebina', 'JPN', 'Kanagawa', '115571'), +('1727', 'Asaka', 'JPN', 'Saitama', '114815'), +('1728', 'Higashikurume', 'JPN', 'Tokyo-to', '111666'), +('1729', 'Ikoma', 'JPN', 'Nara', '111645'), +('1730', 'Kitami', 'JPN', 'Hokkaido', '111295'), +('1731', 'Koganei', 'JPN', 'Tokyo-to', '110969'), +('1732', 'Iwatsuki', 'JPN', 'Saitama', '110034'), +('1733', 'Mishima', 'JPN', 'Shizuoka', '109699'), +('1734', 'Handa', 'JPN', 'Aichi', '108600'), +('1735', 'Muroran', 'JPN', 'Hokkaido', '108275'), +('1736', 'Komatsu', 'JPN', 'Ishikawa', '107937'), +('1737', 'Yatsushiro', 'JPN', 'Kumamoto', '107661'), +('1738', 'Iida', 'JPN', 'Nagano', '107583'), +('1739', 'Tokuyama', 'JPN', 'Yamaguchi', '107078'), +('1740', 'Kokubunji', 'JPN', 'Tokyo-to', '106996'), +('1741', 'Akishima', 'JPN', 'Tokyo-to', '106914'), +('1742', 'Iwakuni', 'JPN', 'Yamaguchi', '106647'), +('1743', 'Kusatsu', 'JPN', 'Shiga', '106232'), +('1744', 'Kuwana', 'JPN', 'Mie', '106121'), +('1745', 'Sanda', 'JPN', 'Hyogo', '105643'), +('1746', 'Hikone', 'JPN', 'Shiga', '105508'), +('1747', 'Toda', 'JPN', 'Saitama', '103969'), +('1748', 'Tajimi', 'JPN', 'Gifu', '103171'), +('1749', 'Ikeda', 'JPN', 'Osaka', '102710'), +('1750', 'Fukaya', 'JPN', 'Saitama', '102156'), +('1751', 'Ise', 'JPN', 'Mie', '101732'), +('1752', 'Sakata', 'JPN', 'Yamagata', '101651'), +('1753', 'Kasuga', 'JPN', 'Fukuoka', '101344'), +('1754', 'Kamagaya', 'JPN', 'Chiba', '100821'), +('1755', 'Tsuruoka', 'JPN', 'Yamagata', '100713'), +('1756', 'Hoya', 'JPN', 'Tokyo-to', '100313'), +('1757', 'Nishio', 'JPN', 'Chiba', '100032'), +('1758', 'Tokai', 'JPN', 'Aichi', '99738'), +('1759', 'Inazawa', 'JPN', 'Aichi', '98746'), +('1760', 'Sakado', 'JPN', 'Saitama', '98221'), +('1761', 'Isehara', 'JPN', 'Kanagawa', '98123'), +('1762', 'Takasago', 'JPN', 'Hyogo', '97632'), +('1763', 'Fujimi', 'JPN', 'Saitama', '96972'), +('1764', 'Urasoe', 'JPN', 'Okinawa', '96002'), +('1765', 'Yonezawa', 'JPN', 'Yamagata', '95592'), +('1766', 'Konan', 'JPN', 'Aichi', '95521'), +('1767', 'Yamatokoriyama', 'JPN', 'Nara', '95165'), +('1768', 'Maizuru', 'JPN', 'Kyoto', '94784'), +('1769', 'Onomichi', 'JPN', 'Hiroshima', '93756'), +('1770', 'Higashimatsuyama', 'JPN', 'Saitama', '93342'), +('1771', 'Kimitsu', 'JPN', 'Chiba', '93216'), +('1772', 'Isahaya', 'JPN', 'Nagasaki', '93058'), +('1773', 'Kanuma', 'JPN', 'Tochigi', '93053'), +('1774', 'Izumisano', 'JPN', 'Osaka', '92583'), +('1775', 'Kameoka', 'JPN', 'Kyoto', '92398'), +('1776', 'Mobara', 'JPN', 'Chiba', '91664'), +('1777', 'Narita', 'JPN', 'Chiba', '91470'), +('1778', 'Kashiwazaki', 'JPN', 'Niigata', '91229'), +('1779', 'Tsuyama', 'JPN', 'Okayama', '91170'), +('1780', 'Sanaa', 'YEM', 'Sanaa', '503600'), +('1781', 'Aden', 'YEM', 'Aden', '398300'), +('1782', 'Taizz', 'YEM', 'Taizz', '317600'), +('1783', 'Hodeida', 'YEM', 'Hodeida', '298500'), +('1784', 'al-Mukalla', 'YEM', 'Hadramawt', '122400'), +('1785', 'Ibb', 'YEM', 'Ibb', '103300'), +('1786', 'Amman', 'JOR', 'Amman', '1000000'), +('1787', 'al-Zarqa', 'JOR', 'al-Zarqa', '389815'), +('1788', 'Irbid', 'JOR', 'Irbid', '231511'), +('1789', 'al-Rusayfa', 'JOR', 'al-Zarqa', '137247'), +('1790', 'Wadi al-Sir', 'JOR', 'Amman', '89104'), +('1791', 'Flying Fish Cove', 'CXR', '–', '700'), +('1792', 'Beograd', 'YUG', 'Central Serbia', '1204000'), +('1793', 'Novi Sad', 'YUG', 'Vojvodina', '179626'), +('1794', 'Niš', 'YUG', 'Central Serbia', '175391'), +('1795', 'Priština', 'YUG', 'Kosovo and Metohija', '155496'), +('1796', 'Kragujevac', 'YUG', 'Central Serbia', '147305'), +('1797', 'Podgorica', 'YUG', 'Montenegro', '135000'), +('1798', 'Subotica', 'YUG', 'Vojvodina', '100386'), +('1799', 'Prizren', 'YUG', 'Kosovo and Metohija', '92303'), +('1800', 'Phnom Penh', 'KHM', 'Phnom Penh', '570155'), +('1801', 'Battambang', 'KHM', 'Battambang', '129800'), +('1802', 'Siem Reap', 'KHM', 'Siem Reap', '105100'), +('1803', 'Douala', 'CMR', 'Littoral', '1448300'), +('1804', 'Yaoundé', 'CMR', 'Centre', '1372800'), +('1805', 'Garoua', 'CMR', 'Nord', '177000'), +('1806', 'Maroua', 'CMR', 'Extręme-Nord', '143000'), +('1807', 'Bamenda', 'CMR', 'Nord-Ouest', '138000'), +('1808', 'Bafoussam', 'CMR', 'Ouest', '131000'), +('1809', 'Nkongsamba', 'CMR', 'Littoral', '112454'), +('1810', 'Montréal', 'CAN', 'Québec', '1016376'), +('1811', 'Calgary', 'CAN', 'Alberta', '768082'), +('1812', 'Toronto', 'CAN', 'Ontario', '688275'), +('1813', 'North York', 'CAN', 'Ontario', '622632'), +('1814', 'Winnipeg', 'CAN', 'Manitoba', '618477'), +('1815', 'Edmonton', 'CAN', 'Alberta', '616306'), +('1816', 'Mississauga', 'CAN', 'Ontario', '608072'), +('1817', 'Scarborough', 'CAN', 'Ontario', '594501'), +('1818', 'Vancouver', 'CAN', 'British Colombia', '514008'), +('1819', 'Etobicoke', 'CAN', 'Ontario', '348845'), +('1820', 'London', 'CAN', 'Ontario', '339917'), +('1821', 'Hamilton', 'CAN', 'Ontario', '335614'), +('1822', 'Ottawa', 'CAN', 'Ontario', '335277'), +('1823', 'Laval', 'CAN', 'Québec', '330393'), +('1824', 'Surrey', 'CAN', 'British Colombia', '304477'), +('1825', 'Brampton', 'CAN', 'Ontario', '296711'), +('1826', 'Windsor', 'CAN', 'Ontario', '207588'), +('1827', 'Saskatoon', 'CAN', 'Saskatchewan', '193647'), +('1828', 'Kitchener', 'CAN', 'Ontario', '189959'), +('1829', 'Markham', 'CAN', 'Ontario', '189098'), +('1830', 'Regina', 'CAN', 'Saskatchewan', '180400'), +('1831', 'Burnaby', 'CAN', 'British Colombia', '179209'), +('1832', 'Québec', 'CAN', 'Québec', '167264'), +('1833', 'York', 'CAN', 'Ontario', '154980'), +('1834', 'Richmond', 'CAN', 'British Colombia', '148867'), +('1835', 'Vaughan', 'CAN', 'Ontario', '147889'), +('1836', 'Burlington', 'CAN', 'Ontario', '145150'), +('1837', 'Oshawa', 'CAN', 'Ontario', '140173'), +('1838', 'Oakville', 'CAN', 'Ontario', '139192'), +('1839', 'Saint Catharines', 'CAN', 'Ontario', '136216'), +('1840', 'Longueuil', 'CAN', 'Québec', '127977'), +('1841', 'Richmond Hill', 'CAN', 'Ontario', '116428'), +('1842', 'Thunder Bay', 'CAN', 'Ontario', '115913'), +('1843', 'Nepean', 'CAN', 'Ontario', '115100'), +('1844', 'Cape Breton', 'CAN', 'Nova Scotia', '114733'), +('1845', 'East York', 'CAN', 'Ontario', '114034'), +('1846', 'Halifax', 'CAN', 'Nova Scotia', '113910'), +('1847', 'Cambridge', 'CAN', 'Ontario', '109186'), +('1848', 'Gloucester', 'CAN', 'Ontario', '107314'), +('1849', 'Abbotsford', 'CAN', 'British Colombia', '105403'), +('1850', 'Guelph', 'CAN', 'Ontario', '103593'), +('1851', 'Saint John´s', 'CAN', 'Newfoundland', '101936'), +('1852', 'Coquitlam', 'CAN', 'British Colombia', '101820'), +('1853', 'Saanich', 'CAN', 'British Colombia', '101388'), +('1854', 'Gatineau', 'CAN', 'Québec', '100702'), +('1855', 'Delta', 'CAN', 'British Colombia', '95411'), +('1856', 'Sudbury', 'CAN', 'Ontario', '92686'), +('1857', 'Kelowna', 'CAN', 'British Colombia', '89442'), +('1858', 'Barrie', 'CAN', 'Ontario', '89269'), +('1859', 'Praia', 'CPV', 'Săo Tiago', '94800'), +('1860', 'Almaty', 'KAZ', 'Almaty Qalasy', '1129400'), +('1861', 'Qaraghandy', 'KAZ', 'Qaraghandy', '436900'), +('1862', 'Shymkent', 'KAZ', 'South Kazakstan', '360100'), +('1863', 'Taraz', 'KAZ', 'Taraz', '330100'), +('1864', 'Astana', 'KAZ', 'Astana', '311200'), +('1865', 'Öskemen', 'KAZ', 'East Kazakstan', '311000'), +('1866', 'Pavlodar', 'KAZ', 'Pavlodar', '300500'), +('1867', 'Semey', 'KAZ', 'East Kazakstan', '269600'), +('1868', 'Aqtöbe', 'KAZ', 'Aqtöbe', '253100'), +('1869', 'Qostanay', 'KAZ', 'Qostanay', '221400'), +('1870', 'Petropavl', 'KAZ', 'North Kazakstan', '203500'), +('1871', 'Oral', 'KAZ', 'West Kazakstan', '195500'), +('1872', 'Temirtau', 'KAZ', 'Qaraghandy', '170500'), +('1873', 'Qyzylorda', 'KAZ', 'Qyzylorda', '157400'), +('1874', 'Aqtau', 'KAZ', 'Mangghystau', '143400'), +('1875', 'Atyrau', 'KAZ', 'Atyrau', '142500'), +('1876', 'Ekibastuz', 'KAZ', 'Pavlodar', '127200'), +('1877', 'Kökshetau', 'KAZ', 'North Kazakstan', '123400'), +('1878', 'Rudnyy', 'KAZ', 'Qostanay', '109500'), +('1879', 'Taldyqorghan', 'KAZ', 'Almaty', '98000'), +('1880', 'Zhezqazghan', 'KAZ', 'Qaraghandy', '90000'), +('1881', 'Nairobi', 'KEN', 'Nairobi', '2290000'), +('1882', 'Mombasa', 'KEN', 'Coast', '461753'), +('1883', 'Kisumu', 'KEN', 'Nyanza', '192733'), +('1884', 'Nakuru', 'KEN', 'Rift Valley', '163927'), +('1885', 'Machakos', 'KEN', 'Eastern', '116293'), +('1886', 'Eldoret', 'KEN', 'Rift Valley', '111882'), +('1887', 'Meru', 'KEN', 'Eastern', '94947'), +('1888', 'Nyeri', 'KEN', 'Central', '91258'), +('1889', 'Bangui', 'CAF', 'Bangui', '524000'), +('1890', 'Shanghai', 'CHN', 'Shanghai', '9696300'), +('1891', 'Peking', 'CHN', 'Peking', '7472000'), +('1892', 'Chongqing', 'CHN', 'Chongqing', '6351600'), +('1893', 'Tianjin', 'CHN', 'Tianjin', '5286800'), +('1894', 'Wuhan', 'CHN', 'Hubei', '4344600'), +('1895', 'Harbin', 'CHN', 'Heilongjiang', '4289800'), +('1896', 'Shenyang', 'CHN', 'Liaoning', '4265200'), +('1897', 'Kanton [Guangzhou]', 'CHN', 'Guangdong', '4256300'), +('1898', 'Chengdu', 'CHN', 'Sichuan', '3361500'), +('1899', 'Nanking [Nanjing]', 'CHN', 'Jiangsu', '2870300'), +('1900', 'Changchun', 'CHN', 'Jilin', '2812000'), +('1901', 'Xi´an', 'CHN', 'Shaanxi', '2761400'), +('1902', 'Dalian', 'CHN', 'Liaoning', '2697000'), +('1903', 'Qingdao', 'CHN', 'Shandong', '2596000'), +('1904', 'Jinan', 'CHN', 'Shandong', '2278100'), +('1905', 'Hangzhou', 'CHN', 'Zhejiang', '2190500'), +('1906', 'Zhengzhou', 'CHN', 'Henan', '2107200'), +('1907', 'Shijiazhuang', 'CHN', 'Hebei', '2041500'), +('1908', 'Taiyuan', 'CHN', 'Shanxi', '1968400'), +('1909', 'Kunming', 'CHN', 'Yunnan', '1829500'), +('1910', 'Changsha', 'CHN', 'Hunan', '1809800'), +('1911', 'Nanchang', 'CHN', 'Jiangxi', '1691600'), +('1912', 'Fuzhou', 'CHN', 'Fujian', '1593800'), +('1913', 'Lanzhou', 'CHN', 'Gansu', '1565800'), +('1914', 'Guiyang', 'CHN', 'Guizhou', '1465200'), +('1915', 'Ningbo', 'CHN', 'Zhejiang', '1371200'), +('1916', 'Hefei', 'CHN', 'Anhui', '1369100'), +('1917', 'Urumtši [Ürümqi]', 'CHN', 'Xinxiang', '1310100'), +('1918', 'Anshan', 'CHN', 'Liaoning', '1200000'), +('1919', 'Fushun', 'CHN', 'Liaoning', '1200000'), +('1920', 'Nanning', 'CHN', 'Guangxi', '1161800'), +('1921', 'Zibo', 'CHN', 'Shandong', '1140000'), +('1922', 'Qiqihar', 'CHN', 'Heilongjiang', '1070000'), +('1923', 'Jilin', 'CHN', 'Jilin', '1040000'), +('1924', 'Tangshan', 'CHN', 'Hebei', '1040000'), +('1925', 'Baotou', 'CHN', 'Inner Mongolia', '980000'), +('1926', 'Shenzhen', 'CHN', 'Guangdong', '950500'), +('1927', 'Hohhot', 'CHN', 'Inner Mongolia', '916700'), +('1928', 'Handan', 'CHN', 'Hebei', '840000'), +('1929', 'Wuxi', 'CHN', 'Jiangsu', '830000'), +('1930', 'Xuzhou', 'CHN', 'Jiangsu', '810000'), +('1931', 'Datong', 'CHN', 'Shanxi', '800000'), +('1932', 'Yichun', 'CHN', 'Heilongjiang', '800000'), +('1933', 'Benxi', 'CHN', 'Liaoning', '770000'), +('1934', 'Luoyang', 'CHN', 'Henan', '760000'), +('1935', 'Suzhou', 'CHN', 'Jiangsu', '710000'), +('1936', 'Xining', 'CHN', 'Qinghai', '700200'), +('1937', 'Huainan', 'CHN', 'Anhui', '700000'), +('1938', 'Jixi', 'CHN', 'Heilongjiang', '683885'), +('1939', 'Daqing', 'CHN', 'Heilongjiang', '660000'), +('1940', 'Fuxin', 'CHN', 'Liaoning', '640000'), +('1941', 'Amoy [Xiamen]', 'CHN', 'Fujian', '627500'), +('1942', 'Liuzhou', 'CHN', 'Guangxi', '610000'), +('1943', 'Shantou', 'CHN', 'Guangdong', '580000'), +('1944', 'Jinzhou', 'CHN', 'Liaoning', '570000'), +('1945', 'Mudanjiang', 'CHN', 'Heilongjiang', '570000'), +('1946', 'Yinchuan', 'CHN', 'Ningxia', '544500'), +('1947', 'Changzhou', 'CHN', 'Jiangsu', '530000'), +('1948', 'Zhangjiakou', 'CHN', 'Hebei', '530000'), +('1949', 'Dandong', 'CHN', 'Liaoning', '520000'), +('1950', 'Hegang', 'CHN', 'Heilongjiang', '520000'), +('1951', 'Kaifeng', 'CHN', 'Henan', '510000'), +('1952', 'Jiamusi', 'CHN', 'Heilongjiang', '493409'), +('1953', 'Liaoyang', 'CHN', 'Liaoning', '492559'), +('1954', 'Hengyang', 'CHN', 'Hunan', '487148'), +('1955', 'Baoding', 'CHN', 'Hebei', '483155'), +('1956', 'Hunjiang', 'CHN', 'Jilin', '482043'), +('1957', 'Xinxiang', 'CHN', 'Henan', '473762'), +('1958', 'Huangshi', 'CHN', 'Hubei', '457601'), +('1959', 'Haikou', 'CHN', 'Hainan', '454300'), +('1960', 'Yantai', 'CHN', 'Shandong', '452127'), +('1961', 'Bengbu', 'CHN', 'Anhui', '449245'), +('1962', 'Xiangtan', 'CHN', 'Hunan', '441968'), +('1963', 'Weifang', 'CHN', 'Shandong', '428522'), +('1964', 'Wuhu', 'CHN', 'Anhui', '425740'), +('1965', 'Pingxiang', 'CHN', 'Jiangxi', '425579'), +('1966', 'Yingkou', 'CHN', 'Liaoning', '421589'), +('1967', 'Anyang', 'CHN', 'Henan', '420332'), +('1968', 'Panzhihua', 'CHN', 'Sichuan', '415466'), +('1969', 'Pingdingshan', 'CHN', 'Henan', '410775'), +('1970', 'Xiangfan', 'CHN', 'Hubei', '410407'), +('1971', 'Zhuzhou', 'CHN', 'Hunan', '409924'), +('1972', 'Jiaozuo', 'CHN', 'Henan', '409100'), +('1973', 'Wenzhou', 'CHN', 'Zhejiang', '401871'), +('1974', 'Zhangjiang', 'CHN', 'Guangdong', '400997'), +('1975', 'Zigong', 'CHN', 'Sichuan', '393184'), +('1976', 'Shuangyashan', 'CHN', 'Heilongjiang', '386081'), +('1977', 'Zaozhuang', 'CHN', 'Shandong', '380846'), +('1978', 'Yakeshi', 'CHN', 'Inner Mongolia', '377869'), +('1979', 'Yichang', 'CHN', 'Hubei', '371601'), +('1980', 'Zhenjiang', 'CHN', 'Jiangsu', '368316'), +('1981', 'Huaibei', 'CHN', 'Anhui', '366549'), +('1982', 'Qinhuangdao', 'CHN', 'Hebei', '364972'), +('1983', 'Guilin', 'CHN', 'Guangxi', '364130'), +('1984', 'Liupanshui', 'CHN', 'Guizhou', '363954'), +('1985', 'Panjin', 'CHN', 'Liaoning', '362773'), +('1986', 'Yangquan', 'CHN', 'Shanxi', '362268'), +('1987', 'Jinxi', 'CHN', 'Liaoning', '357052'), +('1988', 'Liaoyuan', 'CHN', 'Jilin', '354141'), +('1989', 'Lianyungang', 'CHN', 'Jiangsu', '354139'), +('1990', 'Xianyang', 'CHN', 'Shaanxi', '352125'), +('1991', 'Tai´an', 'CHN', 'Shandong', '350696'), +('1992', 'Chifeng', 'CHN', 'Inner Mongolia', '350077'), +('1993', 'Shaoguan', 'CHN', 'Guangdong', '350043'), +('1994', 'Nantong', 'CHN', 'Jiangsu', '343341'), +('1995', 'Leshan', 'CHN', 'Sichuan', '341128'), +('1996', 'Baoji', 'CHN', 'Shaanxi', '337765'), +('1997', 'Linyi', 'CHN', 'Shandong', '324720'), +('1998', 'Tonghua', 'CHN', 'Jilin', '324600'), +('1999', 'Siping', 'CHN', 'Jilin', '317223'); + +INSERT INTO city (id, name, countrycode, district, population) VALUES +('2000', 'Changzhi', 'CHN', 'Shanxi', '317144'), +('2001', 'Tengzhou', 'CHN', 'Shandong', '315083'), +('2002', 'Chaozhou', 'CHN', 'Guangdong', '313469'), +('2003', 'Yangzhou', 'CHN', 'Jiangsu', '312892'), +('2004', 'Dongwan', 'CHN', 'Guangdong', '308669'), +('2005', 'Ma´anshan', 'CHN', 'Anhui', '305421'), +('2006', 'Foshan', 'CHN', 'Guangdong', '303160'), +('2007', 'Yueyang', 'CHN', 'Hunan', '302800'), +('2008', 'Xingtai', 'CHN', 'Hebei', '302789'), +('2009', 'Changde', 'CHN', 'Hunan', '301276'), +('2010', 'Shihezi', 'CHN', 'Xinxiang', '299676'), +('2011', 'Yancheng', 'CHN', 'Jiangsu', '296831'), +('2012', 'Jiujiang', 'CHN', 'Jiangxi', '291187'), +('2013', 'Dongying', 'CHN', 'Shandong', '281728'), +('2014', 'Shashi', 'CHN', 'Hubei', '281352'), +('2015', 'Xintai', 'CHN', 'Shandong', '281248'), +('2016', 'Jingdezhen', 'CHN', 'Jiangxi', '281183'), +('2017', 'Tongchuan', 'CHN', 'Shaanxi', '280657'), +('2018', 'Zhongshan', 'CHN', 'Guangdong', '278829'), +('2019', 'Shiyan', 'CHN', 'Hubei', '273786'), +('2020', 'Tieli', 'CHN', 'Heilongjiang', '265683'), +('2021', 'Jining', 'CHN', 'Shandong', '265248'), +('2022', 'Wuhai', 'CHN', 'Inner Mongolia', '264081'), +('2023', 'Mianyang', 'CHN', 'Sichuan', '262947'), +('2024', 'Luzhou', 'CHN', 'Sichuan', '262892'), +('2025', 'Zunyi', 'CHN', 'Guizhou', '261862'), +('2026', 'Shizuishan', 'CHN', 'Ningxia', '257862'), +('2027', 'Neijiang', 'CHN', 'Sichuan', '256012'), +('2028', 'Tongliao', 'CHN', 'Inner Mongolia', '255129'), +('2029', 'Tieling', 'CHN', 'Liaoning', '254842'), +('2030', 'Wafangdian', 'CHN', 'Liaoning', '251733'), +('2031', 'Anqing', 'CHN', 'Anhui', '250718'), +('2032', 'Shaoyang', 'CHN', 'Hunan', '247227'), +('2033', 'Laiwu', 'CHN', 'Shandong', '246833'), +('2034', 'Chengde', 'CHN', 'Hebei', '246799'), +('2035', 'Tianshui', 'CHN', 'Gansu', '244974'), +('2036', 'Nanyang', 'CHN', 'Henan', '243303'), +('2037', 'Cangzhou', 'CHN', 'Hebei', '242708'), +('2038', 'Yibin', 'CHN', 'Sichuan', '241019'), +('2039', 'Huaiyin', 'CHN', 'Jiangsu', '239675'), +('2040', 'Dunhua', 'CHN', 'Jilin', '235100'), +('2041', 'Yanji', 'CHN', 'Jilin', '230892'), +('2042', 'Jiangmen', 'CHN', 'Guangdong', '230587'), +('2043', 'Tongling', 'CHN', 'Anhui', '228017'), +('2044', 'Suihua', 'CHN', 'Heilongjiang', '227881'), +('2045', 'Gongziling', 'CHN', 'Jilin', '226569'), +('2046', 'Xiantao', 'CHN', 'Hubei', '222884'), +('2047', 'Chaoyang', 'CHN', 'Liaoning', '222394'), +('2048', 'Ganzhou', 'CHN', 'Jiangxi', '220129'), +('2049', 'Huzhou', 'CHN', 'Zhejiang', '218071'), +('2050', 'Baicheng', 'CHN', 'Jilin', '217987'), +('2051', 'Shangzi', 'CHN', 'Heilongjiang', '215373'), +('2052', 'Yangjiang', 'CHN', 'Guangdong', '215196'), +('2053', 'Qitaihe', 'CHN', 'Heilongjiang', '214957'), +('2054', 'Gejiu', 'CHN', 'Yunnan', '214294'), +('2055', 'Jiangyin', 'CHN', 'Jiangsu', '213659'), +('2056', 'Hebi', 'CHN', 'Henan', '212976'), +('2057', 'Jiaxing', 'CHN', 'Zhejiang', '211526'), +('2058', 'Wuzhou', 'CHN', 'Guangxi', '210452'), +('2059', 'Meihekou', 'CHN', 'Jilin', '209038'), +('2060', 'Xuchang', 'CHN', 'Henan', '208815'), +('2061', 'Liaocheng', 'CHN', 'Shandong', '207844'), +('2062', 'Haicheng', 'CHN', 'Liaoning', '205560'), +('2063', 'Qianjiang', 'CHN', 'Hubei', '205504'), +('2064', 'Baiyin', 'CHN', 'Gansu', '204970'), +('2065', 'Bei´an', 'CHN', 'Heilongjiang', '204899'), +('2066', 'Yixing', 'CHN', 'Jiangsu', '200824'), +('2067', 'Laizhou', 'CHN', 'Shandong', '198664'), +('2068', 'Qaramay', 'CHN', 'Xinxiang', '197602'), +('2069', 'Acheng', 'CHN', 'Heilongjiang', '197595'), +('2070', 'Dezhou', 'CHN', 'Shandong', '195485'), +('2071', 'Nanping', 'CHN', 'Fujian', '195064'), +('2072', 'Zhaoqing', 'CHN', 'Guangdong', '194784'), +('2073', 'Beipiao', 'CHN', 'Liaoning', '194301'), +('2074', 'Fengcheng', 'CHN', 'Jiangxi', '193784'), +('2075', 'Fuyu', 'CHN', 'Jilin', '192981'), +('2076', 'Xinyang', 'CHN', 'Henan', '192509'), +('2077', 'Dongtai', 'CHN', 'Jiangsu', '192247'), +('2078', 'Yuci', 'CHN', 'Shanxi', '191356'), +('2079', 'Honghu', 'CHN', 'Hubei', '190772'), +('2080', 'Ezhou', 'CHN', 'Hubei', '190123'), +('2081', 'Heze', 'CHN', 'Shandong', '189293'), +('2082', 'Daxian', 'CHN', 'Sichuan', '188101'), +('2083', 'Linfen', 'CHN', 'Shanxi', '187309'), +('2084', 'Tianmen', 'CHN', 'Hubei', '186332'), +('2085', 'Yiyang', 'CHN', 'Hunan', '185818'), +('2086', 'Quanzhou', 'CHN', 'Fujian', '185154'), +('2087', 'Rizhao', 'CHN', 'Shandong', '185048'), +('2088', 'Deyang', 'CHN', 'Sichuan', '182488'), +('2089', 'Guangyuan', 'CHN', 'Sichuan', '182241'), +('2090', 'Changshu', 'CHN', 'Jiangsu', '181805'), +('2091', 'Zhangzhou', 'CHN', 'Fujian', '181424'), +('2092', 'Hailar', 'CHN', 'Inner Mongolia', '180650'), +('2093', 'Nanchong', 'CHN', 'Sichuan', '180273'), +('2094', 'Jiutai', 'CHN', 'Jilin', '180130'), +('2095', 'Zhaodong', 'CHN', 'Heilongjiang', '179976'), +('2096', 'Shaoxing', 'CHN', 'Zhejiang', '179818'), +('2097', 'Fuyang', 'CHN', 'Anhui', '179572'), +('2098', 'Maoming', 'CHN', 'Guangdong', '178683'), +('2099', 'Qujing', 'CHN', 'Yunnan', '178669'), +('2100', 'Ghulja', 'CHN', 'Xinxiang', '177193'), +('2101', 'Jiaohe', 'CHN', 'Jilin', '176367'), +('2102', 'Puyang', 'CHN', 'Henan', '175988'), +('2103', 'Huadian', 'CHN', 'Jilin', '175873'), +('2104', 'Jiangyou', 'CHN', 'Sichuan', '175753'), +('2105', 'Qashqar', 'CHN', 'Xinxiang', '174570'), +('2106', 'Anshun', 'CHN', 'Guizhou', '174142'), +('2107', 'Fuling', 'CHN', 'Sichuan', '173878'), +('2108', 'Xinyu', 'CHN', 'Jiangxi', '173524'), +('2109', 'Hanzhong', 'CHN', 'Shaanxi', '169930'), +('2110', 'Danyang', 'CHN', 'Jiangsu', '169603'), +('2111', 'Chenzhou', 'CHN', 'Hunan', '169400'), +('2112', 'Xiaogan', 'CHN', 'Hubei', '166280'), +('2113', 'Shangqiu', 'CHN', 'Henan', '164880'), +('2114', 'Zhuhai', 'CHN', 'Guangdong', '164747'), +('2115', 'Qingyuan', 'CHN', 'Guangdong', '164641'), +('2116', 'Aqsu', 'CHN', 'Xinxiang', '164092'), +('2117', 'Jining', 'CHN', 'Inner Mongolia', '163552'), +('2118', 'Xiaoshan', 'CHN', 'Zhejiang', '162930'), +('2119', 'Zaoyang', 'CHN', 'Hubei', '162198'), +('2120', 'Xinghua', 'CHN', 'Jiangsu', '161910'), +('2121', 'Hami', 'CHN', 'Xinxiang', '161315'), +('2122', 'Huizhou', 'CHN', 'Guangdong', '161023'), +('2123', 'Jinmen', 'CHN', 'Hubei', '160794'), +('2124', 'Sanming', 'CHN', 'Fujian', '160691'), +('2125', 'Ulanhot', 'CHN', 'Inner Mongolia', '159538'), +('2126', 'Korla', 'CHN', 'Xinxiang', '159344'), +('2127', 'Wanxian', 'CHN', 'Sichuan', '156823'), +('2128', 'Rui´an', 'CHN', 'Zhejiang', '156468'), +('2129', 'Zhoushan', 'CHN', 'Zhejiang', '156317'), +('2130', 'Liangcheng', 'CHN', 'Shandong', '156307'), +('2131', 'Jiaozhou', 'CHN', 'Shandong', '153364'), +('2132', 'Taizhou', 'CHN', 'Jiangsu', '152442'), +('2133', 'Suzhou', 'CHN', 'Anhui', '151862'), +('2134', 'Yichun', 'CHN', 'Jiangxi', '151585'), +('2135', 'Taonan', 'CHN', 'Jilin', '150168'), +('2136', 'Pingdu', 'CHN', 'Shandong', '150123'), +('2137', 'Ji´an', 'CHN', 'Jiangxi', '148583'), +('2138', 'Longkou', 'CHN', 'Shandong', '148362'), +('2139', 'Langfang', 'CHN', 'Hebei', '148105'), +('2140', 'Zhoukou', 'CHN', 'Henan', '146288'), +('2141', 'Suining', 'CHN', 'Sichuan', '146086'), +('2142', 'Yulin', 'CHN', 'Guangxi', '144467'), +('2143', 'Jinhua', 'CHN', 'Zhejiang', '144280'), +('2144', 'Liu´an', 'CHN', 'Anhui', '144248'), +('2145', 'Shuangcheng', 'CHN', 'Heilongjiang', '142659'), +('2146', 'Suizhou', 'CHN', 'Hubei', '142302'), +('2147', 'Ankang', 'CHN', 'Shaanxi', '142170'), +('2148', 'Weinan', 'CHN', 'Shaanxi', '140169'), +('2149', 'Longjing', 'CHN', 'Jilin', '139417'), +('2150', 'Da´an', 'CHN', 'Jilin', '138963'), +('2151', 'Lengshuijiang', 'CHN', 'Hunan', '137994'), +('2152', 'Laiyang', 'CHN', 'Shandong', '137080'), +('2153', 'Xianning', 'CHN', 'Hubei', '136811'), +('2154', 'Dali', 'CHN', 'Yunnan', '136554'), +('2155', 'Anda', 'CHN', 'Heilongjiang', '136446'), +('2156', 'Jincheng', 'CHN', 'Shanxi', '136396'), +('2157', 'Longyan', 'CHN', 'Fujian', '134481'), +('2158', 'Xichang', 'CHN', 'Sichuan', '134419'), +('2159', 'Wendeng', 'CHN', 'Shandong', '133910'), +('2160', 'Hailun', 'CHN', 'Heilongjiang', '133565'), +('2161', 'Binzhou', 'CHN', 'Shandong', '133555'), +('2162', 'Linhe', 'CHN', 'Inner Mongolia', '133183'), +('2163', 'Wuwei', 'CHN', 'Gansu', '133101'), +('2164', 'Duyun', 'CHN', 'Guizhou', '132971'), +('2165', 'Mishan', 'CHN', 'Heilongjiang', '132744'), +('2166', 'Shangrao', 'CHN', 'Jiangxi', '132455'), +('2167', 'Changji', 'CHN', 'Xinxiang', '132260'), +('2168', 'Meixian', 'CHN', 'Guangdong', '132156'), +('2169', 'Yushu', 'CHN', 'Jilin', '131861'), +('2170', 'Tiefa', 'CHN', 'Liaoning', '131807'), +('2171', 'Huai´an', 'CHN', 'Jiangsu', '131149'), +('2172', 'Leiyang', 'CHN', 'Hunan', '130115'), +('2173', 'Zalantun', 'CHN', 'Inner Mongolia', '130031'), +('2174', 'Weihai', 'CHN', 'Shandong', '128888'), +('2175', 'Loudi', 'CHN', 'Hunan', '128418'), +('2176', 'Qingzhou', 'CHN', 'Shandong', '128258'), +('2177', 'Qidong', 'CHN', 'Jiangsu', '126872'), +('2178', 'Huaihua', 'CHN', 'Hunan', '126785'), +('2179', 'Luohe', 'CHN', 'Henan', '126438'), +('2180', 'Chuzhou', 'CHN', 'Anhui', '125341'), +('2181', 'Kaiyuan', 'CHN', 'Liaoning', '124219'), +('2182', 'Linqing', 'CHN', 'Shandong', '123958'), +('2183', 'Chaohu', 'CHN', 'Anhui', '123676'), +('2184', 'Laohekou', 'CHN', 'Hubei', '123366'), +('2185', 'Dujiangyan', 'CHN', 'Sichuan', '123357'), +('2186', 'Zhumadian', 'CHN', 'Henan', '123232'), +('2187', 'Linchuan', 'CHN', 'Jiangxi', '121949'), +('2188', 'Jiaonan', 'CHN', 'Shandong', '121397'), +('2189', 'Sanmenxia', 'CHN', 'Henan', '120523'), +('2190', 'Heyuan', 'CHN', 'Guangdong', '120101'), +('2191', 'Manzhouli', 'CHN', 'Inner Mongolia', '120023'), +('2192', 'Lhasa', 'CHN', 'Tibet', '120000'), +('2193', 'Lianyuan', 'CHN', 'Hunan', '118858'), +('2194', 'Kuytun', 'CHN', 'Xinxiang', '118553'), +('2195', 'Puqi', 'CHN', 'Hubei', '117264'), +('2196', 'Hongjiang', 'CHN', 'Hunan', '116188'), +('2197', 'Qinzhou', 'CHN', 'Guangxi', '114586'), +('2198', 'Renqiu', 'CHN', 'Hebei', '114256'), +('2199', 'Yuyao', 'CHN', 'Zhejiang', '114065'), +('2200', 'Guigang', 'CHN', 'Guangxi', '114025'), +('2201', 'Kaili', 'CHN', 'Guizhou', '113958'), +('2202', 'Yan´an', 'CHN', 'Shaanxi', '113277'), +('2203', 'Beihai', 'CHN', 'Guangxi', '112673'), +('2204', 'Xuangzhou', 'CHN', 'Anhui', '112673'), +('2205', 'Quzhou', 'CHN', 'Zhejiang', '112373'), +('2206', 'Yong´an', 'CHN', 'Fujian', '111762'), +('2207', 'Zixing', 'CHN', 'Hunan', '110048'), +('2208', 'Liyang', 'CHN', 'Jiangsu', '109520'), +('2209', 'Yizheng', 'CHN', 'Jiangsu', '109268'), +('2210', 'Yumen', 'CHN', 'Gansu', '109234'), +('2211', 'Liling', 'CHN', 'Hunan', '108504'), +('2212', 'Yuncheng', 'CHN', 'Shanxi', '108359'), +('2213', 'Shanwei', 'CHN', 'Guangdong', '107847'), +('2214', 'Cixi', 'CHN', 'Zhejiang', '107329'), +('2215', 'Yuanjiang', 'CHN', 'Hunan', '107004'), +('2216', 'Bozhou', 'CHN', 'Anhui', '106346'), +('2217', 'Jinchang', 'CHN', 'Gansu', '105287'), +('2218', 'Fu´an', 'CHN', 'Fujian', '105265'), +('2219', 'Suqian', 'CHN', 'Jiangsu', '105021'), +('2220', 'Shishou', 'CHN', 'Hubei', '104571'), +('2221', 'Hengshui', 'CHN', 'Hebei', '104269'), +('2222', 'Danjiangkou', 'CHN', 'Hubei', '103211'), +('2223', 'Fujin', 'CHN', 'Heilongjiang', '103104'), +('2224', 'Sanya', 'CHN', 'Hainan', '102820'), +('2225', 'Guangshui', 'CHN', 'Hubei', '102770'), +('2226', 'Huangshan', 'CHN', 'Anhui', '102628'), +('2227', 'Xingcheng', 'CHN', 'Liaoning', '102384'), +('2228', 'Zhucheng', 'CHN', 'Shandong', '102134'), +('2229', 'Kunshan', 'CHN', 'Jiangsu', '102052'), +('2230', 'Haining', 'CHN', 'Zhejiang', '100478'), +('2231', 'Pingliang', 'CHN', 'Gansu', '99265'), +('2232', 'Fuqing', 'CHN', 'Fujian', '99193'), +('2233', 'Xinzhou', 'CHN', 'Shanxi', '98667'), +('2234', 'Jieyang', 'CHN', 'Guangdong', '98531'), +('2235', 'Zhangjiagang', 'CHN', 'Jiangsu', '97994'), +('2236', 'Tong Xian', 'CHN', 'Peking', '97168'), +('2237', 'Ya´an', 'CHN', 'Sichuan', '95900'), +('2238', 'Jinzhou', 'CHN', 'Liaoning', '95761'), +('2239', 'Emeishan', 'CHN', 'Sichuan', '94000'), +('2240', 'Enshi', 'CHN', 'Hubei', '93056'), +('2241', 'Bose', 'CHN', 'Guangxi', '93009'), +('2242', 'Yuzhou', 'CHN', 'Henan', '92889'), +('2243', 'Kaiyuan', 'CHN', 'Yunnan', '91999'), +('2244', 'Tumen', 'CHN', 'Jilin', '91471'), +('2245', 'Putian', 'CHN', 'Fujian', '91030'), +('2246', 'Linhai', 'CHN', 'Zhejiang', '90870'), +('2247', 'Xilin Hot', 'CHN', 'Inner Mongolia', '90646'), +('2248', 'Shaowu', 'CHN', 'Fujian', '90286'), +('2249', 'Junan', 'CHN', 'Shandong', '90222'), +('2250', 'Huaying', 'CHN', 'Sichuan', '89400'), +('2251', 'Pingyi', 'CHN', 'Shandong', '89373'), +('2252', 'Huangyan', 'CHN', 'Zhejiang', '89288'), +('2253', 'Bishkek', 'KGZ', 'Bishkek shaary', '589400'), +('2254', 'Osh', 'KGZ', 'Osh', '222700'), +('2255', 'Bikenibeu', 'KIR', 'South Tarawa', '5055'), +('2256', 'Bairiki', 'KIR', 'South Tarawa', '2226'), +('2257', 'Santafé de Bogotá', 'COL', 'Santafé de Bogotá', '6260862'), +('2258', 'Cali', 'COL', 'Valle', '2077386'), +('2259', 'Medellín', 'COL', 'Antioquia', '1861265'), +('2260', 'Barranquilla', 'COL', 'Atlántico', '1223260'), +('2261', 'Cartagena', 'COL', 'Bolívar', '805757'), +('2262', 'Cúcuta', 'COL', 'Norte de Santander', '606932'), +('2263', 'Bucaramanga', 'COL', 'Santander', '515555'), +('2264', 'Ibagué', 'COL', 'Tolima', '393664'), +('2265', 'Pereira', 'COL', 'Risaralda', '381725'), +('2266', 'Santa Marta', 'COL', 'Magdalena', '359147'), +('2267', 'Manizales', 'COL', 'Caldas', '337580'), +('2268', 'Bello', 'COL', 'Antioquia', '333470'), +('2269', 'Pasto', 'COL', 'Narińo', '332396'), +('2270', 'Neiva', 'COL', 'Huila', '300052'), +('2271', 'Soledad', 'COL', 'Atlántico', '295058'), +('2272', 'Armenia', 'COL', 'Quindío', '288977'), +('2273', 'Villavicencio', 'COL', 'Meta', '273140'), +('2274', 'Soacha', 'COL', 'Cundinamarca', '272058'), +('2275', 'Valledupar', 'COL', 'Cesar', '263247'), +('2276', 'Montería', 'COL', 'Córdoba', '248245'), +('2277', 'Itagüí', 'COL', 'Antioquia', '228985'), +('2278', 'Palmira', 'COL', 'Valle', '226509'), +('2279', 'Buenaventura', 'COL', 'Valle', '224336'), +('2280', 'Floridablanca', 'COL', 'Santander', '221913'), +('2281', 'Sincelejo', 'COL', 'Sucre', '220704'), +('2282', 'Popayán', 'COL', 'Cauca', '200719'), +('2283', 'Barrancabermeja', 'COL', 'Santander', '178020'), +('2284', 'Dos Quebradas', 'COL', 'Risaralda', '159363'), +('2285', 'Tuluá', 'COL', 'Valle', '152488'), +('2286', 'Envigado', 'COL', 'Antioquia', '135848'), +('2287', 'Cartago', 'COL', 'Valle', '125884'), +('2288', 'Girardot', 'COL', 'Cundinamarca', '110963'), +('2289', 'Buga', 'COL', 'Valle', '110699'), +('2290', 'Tunja', 'COL', 'Boyacá', '109740'), +('2291', 'Florencia', 'COL', 'Caquetá', '108574'), +('2292', 'Maicao', 'COL', 'La Guajira', '108053'), +('2293', 'Sogamoso', 'COL', 'Boyacá', '107728'), +('2294', 'Giron', 'COL', 'Santander', '90688'), +('2295', 'Moroni', 'COM', 'Njazidja', '36000'), +('2296', 'Brazzaville', 'COG', 'Brazzaville', '950000'), +('2297', 'Pointe-Noire', 'COG', 'Kouilou', '500000'), +('2298', 'Kinshasa', 'COD', 'Kinshasa', '5064000'), +('2299', 'Lubumbashi', 'COD', 'Shaba', '851381'), +('2300', 'Mbuji-Mayi', 'COD', 'East Kasai', '806475'), +('2301', 'Kolwezi', 'COD', 'Shaba', '417810'), +('2302', 'Kisangani', 'COD', 'Haute-Zaďre', '417517'), +('2303', 'Kananga', 'COD', 'West Kasai', '393030'), +('2304', 'Likasi', 'COD', 'Shaba', '299118'), +('2305', 'Bukavu', 'COD', 'South Kivu', '201569'), +('2306', 'Kikwit', 'COD', 'Bandundu', '182142'), +('2307', 'Tshikapa', 'COD', 'West Kasai', '180860'), +('2308', 'Matadi', 'COD', 'Bas-Zaďre', '172730'), +('2309', 'Mbandaka', 'COD', 'Equateur', '169841'), +('2310', 'Mwene-Ditu', 'COD', 'East Kasai', '137459'), +('2311', 'Boma', 'COD', 'Bas-Zaďre', '135284'), +('2312', 'Uvira', 'COD', 'South Kivu', '115590'), +('2313', 'Butembo', 'COD', 'North Kivu', '109406'), +('2314', 'Goma', 'COD', 'North Kivu', '109094'), +('2315', 'Kalemie', 'COD', 'Shaba', '101309'), +('2316', 'Bantam', 'CCK', 'Home Island', '503'), +('2317', 'West Island', 'CCK', 'West Island', '167'), +('2318', 'Pyongyang', 'PRK', 'Pyongyang-si', '2484000'), +('2319', 'Hamhung', 'PRK', 'Hamgyong N', '709730'), +('2320', 'Chongjin', 'PRK', 'Hamgyong P', '582480'), +('2321', 'Nampo', 'PRK', 'Nampo-si', '566200'), +('2322', 'Sinuiju', 'PRK', 'Pyongan P', '326011'), +('2323', 'Wonsan', 'PRK', 'Kangwon', '300148'), +('2324', 'Phyongsong', 'PRK', 'Pyongan N', '272934'), +('2325', 'Sariwon', 'PRK', 'Hwanghae P', '254146'), +('2326', 'Haeju', 'PRK', 'Hwanghae N', '229172'), +('2327', 'Kanggye', 'PRK', 'Chagang', '223410'), +('2328', 'Kimchaek', 'PRK', 'Hamgyong P', '179000'), +('2329', 'Hyesan', 'PRK', 'Yanggang', '178020'), +('2330', 'Kaesong', 'PRK', 'Kaesong-si', '171500'), +('2331', 'Seoul', 'KOR', 'Seoul', '9981619'), +('2332', 'Pusan', 'KOR', 'Pusan', '3804522'), +('2333', 'Inchon', 'KOR', 'Inchon', '2559424'), +('2334', 'Taegu', 'KOR', 'Taegu', '2548568'), +('2335', 'Taejon', 'KOR', 'Taejon', '1425835'), +('2336', 'Kwangju', 'KOR', 'Kwangju', '1368341'), +('2337', 'Ulsan', 'KOR', 'Kyongsangnam', '1084891'), +('2338', 'Songnam', 'KOR', 'Kyonggi', '869094'), +('2339', 'Puchon', 'KOR', 'Kyonggi', '779412'), +('2340', 'Suwon', 'KOR', 'Kyonggi', '755550'), +('2341', 'Anyang', 'KOR', 'Kyonggi', '591106'), +('2342', 'Chonju', 'KOR', 'Chollabuk', '563153'), +('2343', 'Chongju', 'KOR', 'Chungchongbuk', '531376'), +('2344', 'Koyang', 'KOR', 'Kyonggi', '518282'), +('2345', 'Ansan', 'KOR', 'Kyonggi', '510314'), +('2346', 'Pohang', 'KOR', 'Kyongsangbuk', '508899'), +('2347', 'Chang-won', 'KOR', 'Kyongsangnam', '481694'), +('2348', 'Masan', 'KOR', 'Kyongsangnam', '441242'), +('2349', 'Kwangmyong', 'KOR', 'Kyonggi', '350914'), +('2350', 'Chonan', 'KOR', 'Chungchongnam', '330259'), +('2351', 'Chinju', 'KOR', 'Kyongsangnam', '329886'), +('2352', 'Iksan', 'KOR', 'Chollabuk', '322685'), +('2353', 'Pyongtaek', 'KOR', 'Kyonggi', '312927'), +('2354', 'Kumi', 'KOR', 'Kyongsangbuk', '311431'), +('2355', 'Uijongbu', 'KOR', 'Kyonggi', '276111'), +('2356', 'Kyongju', 'KOR', 'Kyongsangbuk', '272968'), +('2357', 'Kunsan', 'KOR', 'Chollabuk', '266569'), +('2358', 'Cheju', 'KOR', 'Cheju', '258511'), +('2359', 'Kimhae', 'KOR', 'Kyongsangnam', '256370'), +('2360', 'Sunchon', 'KOR', 'Chollanam', '249263'), +('2361', 'Mokpo', 'KOR', 'Chollanam', '247452'), +('2362', 'Yong-in', 'KOR', 'Kyonggi', '242643'), +('2363', 'Wonju', 'KOR', 'Kang-won', '237460'), +('2364', 'Kunpo', 'KOR', 'Kyonggi', '235233'), +('2365', 'Chunchon', 'KOR', 'Kang-won', '234528'), +('2366', 'Namyangju', 'KOR', 'Kyonggi', '229060'), +('2367', 'Kangnung', 'KOR', 'Kang-won', '220403'), +('2368', 'Chungju', 'KOR', 'Chungchongbuk', '205206'), +('2369', 'Andong', 'KOR', 'Kyongsangbuk', '188443'), +('2370', 'Yosu', 'KOR', 'Chollanam', '183596'), +('2371', 'Kyongsan', 'KOR', 'Kyongsangbuk', '173746'), +('2372', 'Paju', 'KOR', 'Kyonggi', '163379'), +('2373', 'Yangsan', 'KOR', 'Kyongsangnam', '163351'), +('2374', 'Ichon', 'KOR', 'Kyonggi', '155332'), +('2375', 'Asan', 'KOR', 'Chungchongnam', '154663'), +('2376', 'Koje', 'KOR', 'Kyongsangnam', '147562'), +('2377', 'Kimchon', 'KOR', 'Kyongsangbuk', '147027'), +('2378', 'Nonsan', 'KOR', 'Chungchongnam', '146619'), +('2379', 'Kuri', 'KOR', 'Kyonggi', '142173'), +('2380', 'Chong-up', 'KOR', 'Chollabuk', '139111'), +('2381', 'Chechon', 'KOR', 'Chungchongbuk', '137070'), +('2382', 'Sosan', 'KOR', 'Chungchongnam', '134746'), +('2383', 'Shihung', 'KOR', 'Kyonggi', '133443'), +('2384', 'Tong-yong', 'KOR', 'Kyongsangnam', '131717'), +('2385', 'Kongju', 'KOR', 'Chungchongnam', '131229'), +('2386', 'Yongju', 'KOR', 'Kyongsangbuk', '131097'), +('2387', 'Chinhae', 'KOR', 'Kyongsangnam', '125997'), +('2388', 'Sangju', 'KOR', 'Kyongsangbuk', '124116'), +('2389', 'Poryong', 'KOR', 'Chungchongnam', '122604'), +('2390', 'Kwang-yang', 'KOR', 'Chollanam', '122052'), +('2391', 'Miryang', 'KOR', 'Kyongsangnam', '121501'), +('2392', 'Hanam', 'KOR', 'Kyonggi', '115812'), +('2393', 'Kimje', 'KOR', 'Chollabuk', '115427'), +('2394', 'Yongchon', 'KOR', 'Kyongsangbuk', '113511'), +('2395', 'Sachon', 'KOR', 'Kyongsangnam', '113494'), +('2396', 'Uiwang', 'KOR', 'Kyonggi', '108788'), +('2397', 'Naju', 'KOR', 'Chollanam', '107831'), +('2398', 'Namwon', 'KOR', 'Chollabuk', '103544'), +('2399', 'Tonghae', 'KOR', 'Kang-won', '95472'), +('2400', 'Mun-gyong', 'KOR', 'Kyongsangbuk', '92239'), +('2401', 'Athenai', 'GRC', 'Attika', '772072'), +('2402', 'Thessaloniki', 'GRC', 'Central Macedonia', '383967'), +('2403', 'Pireus', 'GRC', 'Attika', '182671'), +('2404', 'Patras', 'GRC', 'West Greece', '153344'), +('2405', 'Peristerion', 'GRC', 'Attika', '137288'), +('2406', 'Herakleion', 'GRC', 'Crete', '116178'), +('2407', 'Kallithea', 'GRC', 'Attika', '114233'), +('2408', 'Larisa', 'GRC', 'Thessalia', '113090'), +('2409', 'Zagreb', 'HRV', 'Grad Zagreb', '706770'), +('2410', 'Split', 'HRV', 'Split-Dalmatia', '189388'), +('2411', 'Rijeka', 'HRV', 'Primorje-Gorski Kota', '167964'), +('2412', 'Osijek', 'HRV', 'Osijek-Baranja', '104761'), +('2413', 'La Habana', 'CUB', 'La Habana', '2256000'), +('2414', 'Santiago de Cuba', 'CUB', 'Santiago de Cuba', '433180'), +('2415', 'Camagüey', 'CUB', 'Camagüey', '298726'), +('2416', 'Holguín', 'CUB', 'Holguín', '249492'), +('2417', 'Santa Clara', 'CUB', 'Villa Clara', '207350'), +('2418', 'Guantánamo', 'CUB', 'Guantánamo', '205078'), +('2419', 'Pinar del Río', 'CUB', 'Pinar del Río', '142100'), +('2420', 'Bayamo', 'CUB', 'Granma', '141000'), +('2421', 'Cienfuegos', 'CUB', 'Cienfuegos', '132770'), +('2422', 'Victoria de las Tunas', 'CUB', 'Las Tunas', '132350'), +('2423', 'Matanzas', 'CUB', 'Matanzas', '123273'), +('2424', 'Manzanillo', 'CUB', 'Granma', '109350'), +('2425', 'Sancti-Spíritus', 'CUB', 'Sancti-Spíritus', '100751'), +('2426', 'Ciego de Ávila', 'CUB', 'Ciego de Ávila', '98505'), +('2427', 'al-Salimiya', 'KWT', 'Hawalli', '130215'), +('2428', 'Jalib al-Shuyukh', 'KWT', 'Hawalli', '102178'), +('2429', 'Kuwait', 'KWT', 'al-Asima', '28859'), +('2430', 'Nicosia', 'CYP', 'Nicosia', '195000'), +('2431', 'Limassol', 'CYP', 'Limassol', '154400'), +('2432', 'Vientiane', 'LAO', 'Viangchan', '531800'), +('2433', 'Savannakhet', 'LAO', 'Savannakhet', '96652'), +('2434', 'Riga', 'LVA', 'Riika', '764328'), +('2435', 'Daugavpils', 'LVA', 'Daugavpils', '114829'), +('2436', 'Liepaja', 'LVA', 'Liepaja', '89439'), +('2437', 'Maseru', 'LSO', 'Maseru', '297000'), +('2438', 'Beirut', 'LBN', 'Beirut', '1100000'), +('2439', 'Tripoli', 'LBN', 'al-Shamal', '240000'), +('2440', 'Monrovia', 'LBR', 'Montserrado', '850000'), +('2441', 'Tripoli', 'LBY', 'Tripoli', '1682000'), +('2442', 'Bengasi', 'LBY', 'Bengasi', '804000'), +('2443', 'Misrata', 'LBY', 'Misrata', '121669'), +('2444', 'al-Zawiya', 'LBY', 'al-Zawiya', '89338'), +('2445', 'Schaan', 'LIE', 'Schaan', '5346'), +('2446', 'Vaduz', 'LIE', 'Vaduz', '5043'), +('2447', 'Vilnius', 'LTU', 'Vilna', '577969'), +('2448', 'Kaunas', 'LTU', 'Kaunas', '412639'), +('2449', 'Klaipeda', 'LTU', 'Klaipeda', '202451'), +('2450', 'Šiauliai', 'LTU', 'Šiauliai', '146563'), +('2451', 'Panevezys', 'LTU', 'Panevezys', '133695'), +('2452', 'Luxembourg [Luxemburg/Lëtzebuerg]', 'LUX', 'Luxembourg', '80700'), +('2453', 'El-Aaiún', 'ESH', 'El-Aaiún', '169000'), +('2454', 'Macao', 'MAC', 'Macau', '437500'), +('2455', 'Antananarivo', 'MDG', 'Antananarivo', '675669'), +('2456', 'Toamasina', 'MDG', 'Toamasina', '127441'), +('2457', 'Antsirabé', 'MDG', 'Antananarivo', '120239'), +('2458', 'Mahajanga', 'MDG', 'Mahajanga', '100807'), +('2459', 'Fianarantsoa', 'MDG', 'Fianarantsoa', '99005'), +('2460', 'Skopje', 'MKD', 'Skopje', '444299'), +('2461', 'Blantyre', 'MWI', 'Blantyre', '478155'), +('2462', 'Lilongwe', 'MWI', 'Lilongwe', '435964'), +('2463', 'Male', 'MDV', 'Maale', '71000'), +('2464', 'Kuala Lumpur', 'MYS', 'Wilayah Persekutuan', '1297526'), +('2465', 'Ipoh', 'MYS', 'Perak', '382853'), +('2466', 'Johor Baharu', 'MYS', 'Johor', '328436'), +('2467', 'Petaling Jaya', 'MYS', 'Selangor', '254350'), +('2468', 'Kelang', 'MYS', 'Selangor', '243355'), +('2469', 'Kuala Terengganu', 'MYS', 'Terengganu', '228119'), +('2470', 'Pinang', 'MYS', 'Pulau Pinang', '219603'), +('2471', 'Kota Bharu', 'MYS', 'Kelantan', '219582'), +('2472', 'Kuantan', 'MYS', 'Pahang', '199484'), +('2473', 'Taiping', 'MYS', 'Perak', '183261'), +('2474', 'Seremban', 'MYS', 'Negeri Sembilan', '182869'), +('2475', 'Kuching', 'MYS', 'Sarawak', '148059'), +('2476', 'Sibu', 'MYS', 'Sarawak', '126381'), +('2477', 'Sandakan', 'MYS', 'Sabah', '125841'), +('2478', 'Alor Setar', 'MYS', 'Kedah', '124412'), +('2479', 'Selayang Baru', 'MYS', 'Selangor', '124228'), +('2480', 'Sungai Petani', 'MYS', 'Kedah', '114763'), +('2481', 'Shah Alam', 'MYS', 'Selangor', '102019'), +('2482', 'Bamako', 'MLI', 'Bamako', '809552'), +('2483', 'Birkirkara', 'MLT', 'Outer Harbour', '21445'), +('2484', 'Valletta', 'MLT', 'Inner Harbour', '7073'), +('2485', 'Casablanca', 'MAR', 'Casablanca', '2940623'), +('2486', 'Rabat', 'MAR', 'Rabat-Salé-Zammour-Z', '623457'), +('2487', 'Marrakech', 'MAR', 'Marrakech-Tensift-Al', '621914'), +('2488', 'Fčs', 'MAR', 'Fčs-Boulemane', '541162'), +('2489', 'Tanger', 'MAR', 'Tanger-Tétouan', '521735'), +('2490', 'Salé', 'MAR', 'Rabat-Salé-Zammour-Z', '504420'), +('2491', 'Meknčs', 'MAR', 'Meknčs-Tafilalet', '460000'), +('2492', 'Oujda', 'MAR', 'Oriental', '365382'), +('2493', 'Kénitra', 'MAR', 'Gharb-Chrarda-Béni H', '292600'), +('2494', 'Tétouan', 'MAR', 'Tanger-Tétouan', '277516'), +('2495', 'Safi', 'MAR', 'Doukkala-Abda', '262300'), +('2496', 'Agadir', 'MAR', 'Souss Massa-Draâ', '155244'), +('2497', 'Mohammedia', 'MAR', 'Casablanca', '154706'), +('2498', 'Khouribga', 'MAR', 'Chaouia-Ouardigha', '152090'), +('2499', 'Beni-Mellal', 'MAR', 'Tadla-Azilal', '140212'), +('2500', 'Témara', 'MAR', 'Rabat-Salé-Zammour-Z', '126303'), +('2501', 'El Jadida', 'MAR', 'Doukkala-Abda', '119083'), +('2502', 'Nador', 'MAR', 'Oriental', '112450'), +('2503', 'Ksar el Kebir', 'MAR', 'Tanger-Tétouan', '107065'), +('2504', 'Settat', 'MAR', 'Chaouia-Ouardigha', '96200'), +('2505', 'Taza', 'MAR', 'Taza-Al Hoceima-Taou', '92700'), +('2506', 'El Araich', 'MAR', 'Tanger-Tétouan', '90400'), +('2507', 'Dalap-Uliga-Darrit', 'MHL', 'Majuro', '28000'), +('2508', 'Fort-de-France', 'MTQ', 'Fort-de-France', '94050'), +('2509', 'Nouakchott', 'MRT', 'Nouakchott', '667300'), +('2510', 'Nouâdhibou', 'MRT', 'Dakhlet Nouâdhibou', '97600'), +('2511', 'Port-Louis', 'MUS', 'Port-Louis', '138200'), +('2512', 'Beau Bassin-Rose Hill', 'MUS', 'Plaines Wilhelms', '100616'), +('2513', 'Vacoas-Phoenix', 'MUS', 'Plaines Wilhelms', '98464'), +('2514', 'Mamoutzou', 'MYT', 'Mamoutzou', '12000'), +('2515', 'Ciudad de México', 'MEX', 'Distrito Federal', '8591309'), +('2516', 'Guadalajara', 'MEX', 'Jalisco', '1647720'), +('2517', 'Ecatepec de Morelos', 'MEX', 'México', '1620303'), +('2518', 'Puebla', 'MEX', 'Puebla', '1346176'), +('2519', 'Nezahualcóyotl', 'MEX', 'México', '1224924'), +('2520', 'Juárez', 'MEX', 'Chihuahua', '1217818'), +('2521', 'Tijuana', 'MEX', 'Baja California', '1212232'), +('2522', 'León', 'MEX', 'Guanajuato', '1133576'), +('2523', 'Monterrey', 'MEX', 'Nuevo León', '1108499'), +('2524', 'Zapopan', 'MEX', 'Jalisco', '1002239'), +('2525', 'Naucalpan de Juárez', 'MEX', 'México', '857511'), +('2526', 'Mexicali', 'MEX', 'Baja California', '764902'), +('2527', 'Culiacán', 'MEX', 'Sinaloa', '744859'), +('2528', 'Acapulco de Juárez', 'MEX', 'Guerrero', '721011'), +('2529', 'Tlalnepantla de Baz', 'MEX', 'México', '720755'), +('2530', 'Mérida', 'MEX', 'Yucatán', '703324'), +('2531', 'Chihuahua', 'MEX', 'Chihuahua', '670208'), +('2532', 'San Luis Potosí', 'MEX', 'San Luis Potosí', '669353'), +('2533', 'Guadalupe', 'MEX', 'Nuevo León', '668780'), +('2534', 'Toluca', 'MEX', 'México', '665617'), +('2535', 'Aguascalientes', 'MEX', 'Aguascalientes', '643360'), +('2536', 'Querétaro', 'MEX', 'Querétaro de Arteaga', '639839'), +('2537', 'Morelia', 'MEX', 'Michoacán de Ocampo', '619958'), +('2538', 'Hermosillo', 'MEX', 'Sonora', '608697'), +('2539', 'Saltillo', 'MEX', 'Coahuila de Zaragoza', '577352'), +('2540', 'Torreón', 'MEX', 'Coahuila de Zaragoza', '529093'), +('2541', 'Centro (Villahermosa)', 'MEX', 'Tabasco', '519873'), +('2542', 'San Nicolás de los Garza', 'MEX', 'Nuevo León', '495540'), +('2543', 'Durango', 'MEX', 'Durango', '490524'), +('2544', 'Chimalhuacán', 'MEX', 'México', '490245'), +('2545', 'Tlaquepaque', 'MEX', 'Jalisco', '475472'), +('2546', 'Atizapán de Zaragoza', 'MEX', 'México', '467262'), +('2547', 'Veracruz', 'MEX', 'Veracruz', '457119'), +('2548', 'Cuautitlán Izcalli', 'MEX', 'México', '452976'), +('2549', 'Irapuato', 'MEX', 'Guanajuato', '440039'), +('2550', 'Tuxtla Gutiérrez', 'MEX', 'Chiapas', '433544'), +('2551', 'Tultitlán', 'MEX', 'México', '432411'), +('2552', 'Reynosa', 'MEX', 'Tamaulipas', '419776'), +('2553', 'Benito Juárez', 'MEX', 'Quintana Roo', '419276'), +('2554', 'Matamoros', 'MEX', 'Tamaulipas', '416428'), +('2555', 'Xalapa', 'MEX', 'Veracruz', '390058'), +('2556', 'Celaya', 'MEX', 'Guanajuato', '382140'), +('2557', 'Mazatlán', 'MEX', 'Sinaloa', '380265'), +('2558', 'Ensenada', 'MEX', 'Baja California', '369573'), +('2559', 'Ahome', 'MEX', 'Sinaloa', '358663'), +('2560', 'Cajeme', 'MEX', 'Sonora', '355679'), +('2561', 'Cuernavaca', 'MEX', 'Morelos', '337966'), +('2562', 'Tonalá', 'MEX', 'Jalisco', '336109'), +('2563', 'Valle de Chalco Solidaridad', 'MEX', 'México', '323113'), +('2564', 'Nuevo Laredo', 'MEX', 'Tamaulipas', '310277'), +('2565', 'Tepic', 'MEX', 'Nayarit', '305025'), +('2566', 'Tampico', 'MEX', 'Tamaulipas', '294789'), +('2567', 'Ixtapaluca', 'MEX', 'México', '293160'), +('2568', 'Apodaca', 'MEX', 'Nuevo León', '282941'), +('2569', 'Guasave', 'MEX', 'Sinaloa', '277201'), +('2570', 'Gómez Palacio', 'MEX', 'Durango', '272806'), +('2571', 'Tapachula', 'MEX', 'Chiapas', '271141'), +('2572', 'Nicolás Romero', 'MEX', 'México', '269393'), +('2573', 'Coatzacoalcos', 'MEX', 'Veracruz', '267037'), +('2574', 'Uruapan', 'MEX', 'Michoacán de Ocampo', '265211'), +('2575', 'Victoria', 'MEX', 'Tamaulipas', '262686'), +('2576', 'Oaxaca de Juárez', 'MEX', 'Oaxaca', '256848'), +('2577', 'Coacalco de Berriozábal', 'MEX', 'México', '252270'), +('2578', 'Pachuca de Soto', 'MEX', 'Hidalgo', '244688'), +('2579', 'General Escobedo', 'MEX', 'Nuevo León', '232961'), +('2580', 'Salamanca', 'MEX', 'Guanajuato', '226864'), +('2581', 'Santa Catarina', 'MEX', 'Nuevo León', '226573'), +('2582', 'Tehuacán', 'MEX', 'Puebla', '225943'), +('2583', 'Chalco', 'MEX', 'México', '222201'), +('2584', 'Cárdenas', 'MEX', 'Tabasco', '216903'), +('2585', 'Campeche', 'MEX', 'Campeche', '216735'), +('2586', 'La Paz', 'MEX', 'México', '213045'), +('2587', 'Othón P. Blanco (Chetumal)', 'MEX', 'Quintana Roo', '208014'), +('2588', 'Texcoco', 'MEX', 'México', '203681'), +('2589', 'La Paz', 'MEX', 'Baja California Sur', '196708'), +('2590', 'Metepec', 'MEX', 'México', '194265'), +('2591', 'Monclova', 'MEX', 'Coahuila de Zaragoza', '193657'), +('2592', 'Huixquilucan', 'MEX', 'México', '193156'), +('2593', 'Chilpancingo de los Bravo', 'MEX', 'Guerrero', '192509'), +('2594', 'Puerto Vallarta', 'MEX', 'Jalisco', '183741'), +('2595', 'Fresnillo', 'MEX', 'Zacatecas', '182744'), +('2596', 'Ciudad Madero', 'MEX', 'Tamaulipas', '182012'), +('2597', 'Soledad de Graciano Sánchez', 'MEX', 'San Luis Potosí', '179956'), +('2598', 'San Juan del Río', 'MEX', 'Querétaro', '179300'), +('2599', 'San Felipe del Progreso', 'MEX', 'México', '177330'), +('2600', 'Córdoba', 'MEX', 'Veracruz', '176952'), +('2601', 'Tecámac', 'MEX', 'México', '172410'), +('2602', 'Ocosingo', 'MEX', 'Chiapas', '171495'), +('2603', 'Carmen', 'MEX', 'Campeche', '171367'), +('2604', 'Lázaro Cárdenas', 'MEX', 'Michoacán de Ocampo', '170878'), +('2605', 'Jiutepec', 'MEX', 'Morelos', '170428'), +('2606', 'Papantla', 'MEX', 'Veracruz', '170123'), +('2607', 'Comalcalco', 'MEX', 'Tabasco', '164640'), +('2608', 'Zamora', 'MEX', 'Michoacán de Ocampo', '161191'), +('2609', 'Nogales', 'MEX', 'Sonora', '159103'), +('2610', 'Huimanguillo', 'MEX', 'Tabasco', '158335'), +('2611', 'Cuautla', 'MEX', 'Morelos', '153132'), +('2612', 'Minatitlán', 'MEX', 'Veracruz', '152983'), +('2613', 'Poza Rica de Hidalgo', 'MEX', 'Veracruz', '152678'), +('2614', 'Ciudad Valles', 'MEX', 'San Luis Potosí', '146411'), +('2615', 'Navolato', 'MEX', 'Sinaloa', '145396'), +('2616', 'San Luis Río Colorado', 'MEX', 'Sonora', '145276'), +('2617', 'Pénjamo', 'MEX', 'Guanajuato', '143927'), +('2618', 'San Andrés Tuxtla', 'MEX', 'Veracruz', '142251'), +('2619', 'Guanajuato', 'MEX', 'Guanajuato', '141215'), +('2620', 'Navojoa', 'MEX', 'Sonora', '140495'), +('2621', 'Zitácuaro', 'MEX', 'Michoacán de Ocampo', '137970'), +('2622', 'Boca del Río', 'MEX', 'Veracruz-Llave', '135721'), +('2623', 'Allende', 'MEX', 'Guanajuato', '134645'), +('2624', 'Silao', 'MEX', 'Guanajuato', '134037'), +('2625', 'Macuspana', 'MEX', 'Tabasco', '133795'), +('2626', 'San Juan Bautista Tuxtepec', 'MEX', 'Oaxaca', '133675'), +('2627', 'San Cristóbal de las Casas', 'MEX', 'Chiapas', '132317'), +('2628', 'Valle de Santiago', 'MEX', 'Guanajuato', '130557'), +('2629', 'Guaymas', 'MEX', 'Sonora', '130108'), +('2630', 'Colima', 'MEX', 'Colima', '129454'), +('2631', 'Dolores Hidalgo', 'MEX', 'Guanajuato', '128675'), +('2632', 'Lagos de Moreno', 'MEX', 'Jalisco', '127949'), +('2633', 'Piedras Negras', 'MEX', 'Coahuila de Zaragoza', '127898'), +('2634', 'Altamira', 'MEX', 'Tamaulipas', '127490'), +('2635', 'Túxpam', 'MEX', 'Veracruz', '126475'), +('2636', 'San Pedro Garza García', 'MEX', 'Nuevo León', '126147'), +('2637', 'Cuauhtémoc', 'MEX', 'Chihuahua', '124279'), +('2638', 'Manzanillo', 'MEX', 'Colima', '124014'), +('2639', 'Iguala de la Independencia', 'MEX', 'Guerrero', '123883'), +('2640', 'Zacatecas', 'MEX', 'Zacatecas', '123700'), +('2641', 'Tlajomulco de Zúńiga', 'MEX', 'Jalisco', '123220'), +('2642', 'Tulancingo de Bravo', 'MEX', 'Hidalgo', '121946'), +('2643', 'Zinacantepec', 'MEX', 'México', '121715'), +('2644', 'San Martín Texmelucan', 'MEX', 'Puebla', '121093'), +('2645', 'Tepatitlán de Morelos', 'MEX', 'Jalisco', '118948'), +('2646', 'Martínez de la Torre', 'MEX', 'Veracruz', '118815'), +('2647', 'Orizaba', 'MEX', 'Veracruz', '118488'), +('2648', 'Apatzingán', 'MEX', 'Michoacán de Ocampo', '117849'), +('2649', 'Atlixco', 'MEX', 'Puebla', '117019'), +('2650', 'Delicias', 'MEX', 'Chihuahua', '116132'), +('2651', 'Ixtlahuaca', 'MEX', 'México', '115548'), +('2652', 'El Mante', 'MEX', 'Tamaulipas', '112453'), +('2653', 'Lerdo', 'MEX', 'Durango', '112272'), +('2654', 'Almoloya de Juárez', 'MEX', 'México', '110550'), +('2655', 'Acámbaro', 'MEX', 'Guanajuato', '110487'), +('2656', 'Acuńa', 'MEX', 'Coahuila de Zaragoza', '110388'), +('2657', 'Guadalupe', 'MEX', 'Zacatecas', '108881'), +('2658', 'Huejutla de Reyes', 'MEX', 'Hidalgo', '108017'), +('2659', 'Hidalgo', 'MEX', 'Michoacán de Ocampo', '106198'), +('2660', 'Los Cabos', 'MEX', 'Baja California Sur', '105199'), +('2661', 'Comitán de Domínguez', 'MEX', 'Chiapas', '104986'), +('2662', 'Cunduacán', 'MEX', 'Tabasco', '104164'), +('2663', 'Río Bravo', 'MEX', 'Tamaulipas', '103901'), +('2664', 'Temapache', 'MEX', 'Veracruz', '102824'), +('2665', 'Chilapa de Alvarez', 'MEX', 'Guerrero', '102716'), +('2666', 'Hidalgo del Parral', 'MEX', 'Chihuahua', '100881'), +('2667', 'San Francisco del Rincón', 'MEX', 'Guanajuato', '100149'), +('2668', 'Taxco de Alarcón', 'MEX', 'Guerrero', '99907'), +('2669', 'Zumpango', 'MEX', 'México', '99781'), +('2670', 'San Pedro Cholula', 'MEX', 'Puebla', '99734'), +('2671', 'Lerma', 'MEX', 'México', '99714'), +('2672', 'Tecomán', 'MEX', 'Colima', '99296'), +('2673', 'Las Margaritas', 'MEX', 'Chiapas', '97389'), +('2674', 'Cosoleacaque', 'MEX', 'Veracruz', '97199'), +('2675', 'San Luis de la Paz', 'MEX', 'Guanajuato', '96763'), +('2676', 'José Azueta', 'MEX', 'Guerrero', '95448'), +('2677', 'Santiago Ixcuintla', 'MEX', 'Nayarit', '95311'), +('2678', 'San Felipe', 'MEX', 'Guanajuato', '95305'), +('2679', 'Tejupilco', 'MEX', 'México', '94934'), +('2680', 'Tantoyuca', 'MEX', 'Veracruz', '94709'), +('2681', 'Salvatierra', 'MEX', 'Guanajuato', '94322'), +('2682', 'Tultepec', 'MEX', 'México', '93364'), +('2683', 'Temixco', 'MEX', 'Morelos', '92686'), +('2684', 'Matamoros', 'MEX', 'Coahuila de Zaragoza', '91858'), +('2685', 'Pánuco', 'MEX', 'Veracruz', '90551'), +('2686', 'El Fuerte', 'MEX', 'Sinaloa', '89556'), +('2687', 'Tierra Blanca', 'MEX', 'Veracruz', '89143'), +('2688', 'Weno', 'FSM', 'Chuuk', '22000'), +('2689', 'Palikir', 'FSM', 'Pohnpei', '8600'), +('2690', 'Chisinau', 'MDA', 'Chisinau', '719900'), +('2691', 'Tiraspol', 'MDA', 'Dnjestria', '194300'), +('2692', 'Balti', 'MDA', 'Balti', '153400'), +('2693', 'Bender (Tîghina)', 'MDA', 'Bender (Tîghina)', '125700'), +('2694', 'Monte-Carlo', 'MCO', '–', '13154'), +('2695', 'Monaco-Ville', 'MCO', '–', '1234'), +('2696', 'Ulan Bator', 'MNG', 'Ulaanbaatar', '773700'), +('2697', 'Plymouth', 'MSR', 'Plymouth', '2000'), +('2698', 'Maputo', 'MOZ', 'Maputo', '1018938'), +('2699', 'Matola', 'MOZ', 'Maputo', '424662'), +('2700', 'Beira', 'MOZ', 'Sofala', '397368'), +('2701', 'Nampula', 'MOZ', 'Nampula', '303346'), +('2702', 'Chimoio', 'MOZ', 'Manica', '171056'), +('2703', 'Naçala-Porto', 'MOZ', 'Nampula', '158248'), +('2704', 'Quelimane', 'MOZ', 'Zambézia', '150116'), +('2705', 'Mocuba', 'MOZ', 'Zambézia', '124700'), +('2706', 'Tete', 'MOZ', 'Tete', '101984'), +('2707', 'Xai-Xai', 'MOZ', 'Gaza', '99442'), +('2708', 'Gurue', 'MOZ', 'Zambézia', '99300'), +('2709', 'Maxixe', 'MOZ', 'Inhambane', '93985'), +('2710', 'Rangoon (Yangon)', 'MMR', 'Rangoon [Yangon]', '3361700'), +('2711', 'Mandalay', 'MMR', 'Mandalay', '885300'), +('2712', 'Moulmein (Mawlamyine)', 'MMR', 'Mon', '307900'), +('2713', 'Pegu (Bago)', 'MMR', 'Pegu [Bago]', '190900'), +('2714', 'Bassein (Pathein)', 'MMR', 'Irrawaddy [Ayeyarwad', '183900'), +('2715', 'Monywa', 'MMR', 'Sagaing', '138600'), +('2716', 'Sittwe (Akyab)', 'MMR', 'Rakhine', '137600'), +('2717', 'Taunggyi (Taunggye)', 'MMR', 'Shan', '131500'), +('2718', 'Meikhtila', 'MMR', 'Mandalay', '129700'), +('2719', 'Mergui (Myeik)', 'MMR', 'Tenasserim [Tanintha', '122700'), +('2720', 'Lashio (Lasho)', 'MMR', 'Shan', '107600'), +('2721', 'Prome (Pyay)', 'MMR', 'Pegu [Bago]', '105700'), +('2722', 'Henzada (Hinthada)', 'MMR', 'Irrawaddy [Ayeyarwad', '104700'), +('2723', 'Myingyan', 'MMR', 'Mandalay', '103600'), +('2724', 'Tavoy (Dawei)', 'MMR', 'Tenasserim [Tanintha', '96800'), +('2725', 'Pagakku (Pakokku)', 'MMR', 'Magwe [Magway]', '94800'), +('2726', 'Windhoek', 'NAM', 'Khomas', '169000'), +('2727', 'Yangor', 'NRU', '–', '4050'), +('2728', 'Yaren', 'NRU', '–', '559'), +('2729', 'Kathmandu', 'NPL', 'Central', '591835'), +('2730', 'Biratnagar', 'NPL', 'Eastern', '157764'), +('2731', 'Pokhara', 'NPL', 'Western', '146318'), +('2732', 'Lalitapur', 'NPL', 'Central', '145847'), +('2733', 'Birgunj', 'NPL', 'Central', '90639'), +('2734', 'Managua', 'NIC', 'Managua', '959000'), +('2735', 'León', 'NIC', 'León', '123865'), +('2736', 'Chinandega', 'NIC', 'Chinandega', '97387'), +('2737', 'Masaya', 'NIC', 'Masaya', '88971'), +('2738', 'Niamey', 'NER', 'Niamey', '420000'), +('2739', 'Zinder', 'NER', 'Zinder', '120892'), +('2740', 'Maradi', 'NER', 'Maradi', '112965'), +('2741', 'Lagos', 'NGA', 'Lagos', '1518000'), +('2742', 'Ibadan', 'NGA', 'Oyo & Osun', '1432000'), +('2743', 'Ogbomosho', 'NGA', 'Oyo & Osun', '730000'), +('2744', 'Kano', 'NGA', 'Kano & Jigawa', '674100'), +('2745', 'Oshogbo', 'NGA', 'Oyo & Osun', '476800'), +('2746', 'Ilorin', 'NGA', 'Kwara & Kogi', '475800'), +('2747', 'Abeokuta', 'NGA', 'Ogun', '427400'), +('2748', 'Port Harcourt', 'NGA', 'Rivers & Bayelsa', '410000'), +('2749', 'Zaria', 'NGA', 'Kaduna', '379200'), +('2750', 'Ilesha', 'NGA', 'Oyo & Osun', '378400'), +('2751', 'Onitsha', 'NGA', 'Anambra & Enugu & Eb', '371900'), +('2752', 'Iwo', 'NGA', 'Oyo & Osun', '362000'), +('2753', 'Ado-Ekiti', 'NGA', 'Ondo & Ekiti', '359400'), +('2754', 'Abuja', 'NGA', 'Federal Capital Dist', '350100'), +('2755', 'Kaduna', 'NGA', 'Kaduna', '342200'), +('2756', 'Mushin', 'NGA', 'Lagos', '333200'), +('2757', 'Maiduguri', 'NGA', 'Borno & Yobe', '320000'), +('2758', 'Enugu', 'NGA', 'Anambra & Enugu & Eb', '316100'), +('2759', 'Ede', 'NGA', 'Oyo & Osun', '307100'), +('2760', 'Aba', 'NGA', 'Imo & Abia', '298900'), +('2761', 'Ife', 'NGA', 'Oyo & Osun', '296800'), +('2762', 'Ila', 'NGA', 'Oyo & Osun', '264000'), +('2763', 'Oyo', 'NGA', 'Oyo & Osun', '256400'), +('2764', 'Ikerre', 'NGA', 'Ondo & Ekiti', '244600'), +('2765', 'Benin City', 'NGA', 'Edo & Delta', '229400'), +('2766', 'Iseyin', 'NGA', 'Oyo & Osun', '217300'), +('2767', 'Katsina', 'NGA', 'Katsina', '206500'), +('2768', 'Jos', 'NGA', 'Plateau & Nassarawa', '206300'), +('2769', 'Sokoto', 'NGA', 'Sokoto & Kebbi & Zam', '204900'), +('2770', 'Ilobu', 'NGA', 'Oyo & Osun', '199000'), +('2771', 'Offa', 'NGA', 'Kwara & Kogi', '197200'), +('2772', 'Ikorodu', 'NGA', 'Lagos', '184900'), +('2773', 'Ilawe-Ekiti', 'NGA', 'Ondo & Ekiti', '184500'), +('2774', 'Owo', 'NGA', 'Ondo & Ekiti', '183500'), +('2775', 'Ikirun', 'NGA', 'Oyo & Osun', '181400'), +('2776', 'Shaki', 'NGA', 'Oyo & Osun', '174500'), +('2777', 'Calabar', 'NGA', 'Cross River', '174400'), +('2778', 'Ondo', 'NGA', 'Ondo & Ekiti', '173600'), +('2779', 'Akure', 'NGA', 'Ondo & Ekiti', '162300'), +('2780', 'Gusau', 'NGA', 'Sokoto & Kebbi & Zam', '158000'), +('2781', 'Ijebu-Ode', 'NGA', 'Ogun', '156400'), +('2782', 'Effon-Alaiye', 'NGA', 'Oyo & Osun', '153100'), +('2783', 'Kumo', 'NGA', 'Bauchi & Gombe', '148000'), +('2784', 'Shomolu', 'NGA', 'Lagos', '147700'), +('2785', 'Oka-Akoko', 'NGA', 'Ondo & Ekiti', '142900'), +('2786', 'Ikare', 'NGA', 'Ondo & Ekiti', '140800'), +('2787', 'Sapele', 'NGA', 'Edo & Delta', '139200'), +('2788', 'Deba Habe', 'NGA', 'Bauchi & Gombe', '138600'), +('2789', 'Minna', 'NGA', 'Niger', '136900'), +('2790', 'Warri', 'NGA', 'Edo & Delta', '126100'), +('2791', 'Bida', 'NGA', 'Niger', '125500'), +('2792', 'Ikire', 'NGA', 'Oyo & Osun', '123300'), +('2793', 'Makurdi', 'NGA', 'Benue', '123100'), +('2794', 'Lafia', 'NGA', 'Plateau & Nassarawa', '122500'), +('2795', 'Inisa', 'NGA', 'Oyo & Osun', '119800'), +('2796', 'Shagamu', 'NGA', 'Ogun', '117200'), +('2797', 'Awka', 'NGA', 'Anambra & Enugu & Eb', '111200'), +('2798', 'Gombe', 'NGA', 'Bauchi & Gombe', '107800'), +('2799', 'Igboho', 'NGA', 'Oyo & Osun', '106800'), +('2800', 'Ejigbo', 'NGA', 'Oyo & Osun', '105900'), +('2801', 'Agege', 'NGA', 'Lagos', '105000'), +('2802', 'Ise-Ekiti', 'NGA', 'Ondo & Ekiti', '103400'), +('2803', 'Ugep', 'NGA', 'Cross River', '102600'), +('2804', 'Epe', 'NGA', 'Lagos', '101000'), +('2805', 'Alofi', 'NIU', '–', '682'), +('2806', 'Kingston', 'NFK', '–', '800'), +('2807', 'Oslo', 'NOR', 'Oslo', '508726'), +('2808', 'Bergen', 'NOR', 'Hordaland', '230948'), +('2809', 'Trondheim', 'NOR', 'Sřr-Trřndelag', '150166'), +('2810', 'Stavanger', 'NOR', 'Rogaland', '108848'), +('2811', 'Bćrum', 'NOR', 'Akershus', '101340'), +('2812', 'Abidjan', 'CIV', 'Abidjan', '2500000'), +('2813', 'Bouaké', 'CIV', 'Bouaké', '329850'), +('2814', 'Yamoussoukro', 'CIV', 'Yamoussoukro', '130000'), +('2815', 'Daloa', 'CIV', 'Daloa', '121842'), +('2816', 'Korhogo', 'CIV', 'Korhogo', '109445'), +('2817', 'al-Sib', 'OMN', 'Masqat', '155000'), +('2818', 'Salala', 'OMN', 'Zufar', '131813'), +('2819', 'Bawshar', 'OMN', 'Masqat', '107500'), +('2820', 'Suhar', 'OMN', 'al-Batina', '90814'), +('2821', 'Masqat', 'OMN', 'Masqat', '51969'), +('2822', 'Karachi', 'PAK', 'Sindh', '9269265'), +('2823', 'Lahore', 'PAK', 'Punjab', '5063499'), +('2824', 'Faisalabad', 'PAK', 'Punjab', '1977246'), +('2825', 'Rawalpindi', 'PAK', 'Punjab', '1406214'), +('2826', 'Multan', 'PAK', 'Punjab', '1182441'), +('2827', 'Hyderabad', 'PAK', 'Sindh', '1151274'), +('2828', 'Gujranwala', 'PAK', 'Punjab', '1124749'), +('2829', 'Peshawar', 'PAK', 'Nothwest Border Prov', '988005'), +('2830', 'Quetta', 'PAK', 'Baluchistan', '560307'), +('2831', 'Islamabad', 'PAK', 'Islamabad', '524500'), +('2832', 'Sargodha', 'PAK', 'Punjab', '455360'), +('2833', 'Sialkot', 'PAK', 'Punjab', '417597'), +('2834', 'Bahawalpur', 'PAK', 'Punjab', '403408'), +('2835', 'Sukkur', 'PAK', 'Sindh', '329176'), +('2836', 'Jhang', 'PAK', 'Punjab', '292214'), +('2837', 'Sheikhupura', 'PAK', 'Punjab', '271875'), +('2838', 'Larkana', 'PAK', 'Sindh', '270366'), +('2839', 'Gujrat', 'PAK', 'Punjab', '250121'), +('2840', 'Mardan', 'PAK', 'Nothwest Border Prov', '244511'), +('2841', 'Kasur', 'PAK', 'Punjab', '241649'), +('2842', 'Rahim Yar Khan', 'PAK', 'Punjab', '228479'), +('2843', 'Sahiwal', 'PAK', 'Punjab', '207388'), +('2844', 'Okara', 'PAK', 'Punjab', '200901'), +('2845', 'Wah', 'PAK', 'Punjab', '198400'), +('2846', 'Dera Ghazi Khan', 'PAK', 'Punjab', '188100'), +('2847', 'Mirpur Khas', 'PAK', 'Sind', '184500'), +('2848', 'Nawabshah', 'PAK', 'Sind', '183100'), +('2849', 'Mingora', 'PAK', 'Nothwest Border Prov', '174500'), +('2850', 'Chiniot', 'PAK', 'Punjab', '169300'), +('2851', 'Kamoke', 'PAK', 'Punjab', '151000'), +('2852', 'Mandi Burewala', 'PAK', 'Punjab', '149900'), +('2853', 'Jhelum', 'PAK', 'Punjab', '145800'), +('2854', 'Sadiqabad', 'PAK', 'Punjab', '141500'), +('2855', 'Jacobabad', 'PAK', 'Sind', '137700'), +('2856', 'Shikarpur', 'PAK', 'Sind', '133300'), +('2857', 'Khanewal', 'PAK', 'Punjab', '133000'), +('2858', 'Hafizabad', 'PAK', 'Punjab', '130200'), +('2859', 'Kohat', 'PAK', 'Nothwest Border Prov', '125300'), +('2860', 'Muzaffargarh', 'PAK', 'Punjab', '121600'), +('2861', 'Khanpur', 'PAK', 'Punjab', '117800'), +('2862', 'Gojra', 'PAK', 'Punjab', '115000'), +('2863', 'Bahawalnagar', 'PAK', 'Punjab', '109600'), +('2864', 'Muridke', 'PAK', 'Punjab', '108600'), +('2865', 'Pak Pattan', 'PAK', 'Punjab', '107800'), +('2866', 'Abottabad', 'PAK', 'Nothwest Border Prov', '106000'), +('2867', 'Tando Adam', 'PAK', 'Sind', '103400'), +('2868', 'Jaranwala', 'PAK', 'Punjab', '103300'), +('2869', 'Khairpur', 'PAK', 'Sind', '102200'), +('2870', 'Chishtian Mandi', 'PAK', 'Punjab', '101700'), +('2871', 'Daska', 'PAK', 'Punjab', '101500'), +('2872', 'Dadu', 'PAK', 'Sind', '98600'), +('2873', 'Mandi Bahauddin', 'PAK', 'Punjab', '97300'), +('2874', 'Ahmadpur East', 'PAK', 'Punjab', '96000'), +('2875', 'Kamalia', 'PAK', 'Punjab', '95300'), +('2876', 'Khuzdar', 'PAK', 'Baluchistan', '93100'), +('2877', 'Vihari', 'PAK', 'Punjab', '92300'), +('2878', 'Dera Ismail Khan', 'PAK', 'Nothwest Border Prov', '90400'), +('2879', 'Wazirabad', 'PAK', 'Punjab', '89700'), +('2880', 'Nowshera', 'PAK', 'Nothwest Border Prov', '89400'), +('2881', 'Koror', 'PLW', 'Koror', '12000'), +('2882', 'Ciudad de Panamá', 'PAN', 'Panamá', '471373'), +('2883', 'San Miguelito', 'PAN', 'San Miguelito', '315382'), +('2884', 'Port Moresby', 'PNG', 'National Capital Dis', '247000'), +('2885', 'Asunción', 'PRY', 'Asunción', '557776'), +('2886', 'Ciudad del Este', 'PRY', 'Alto Paraná', '133881'), +('2887', 'San Lorenzo', 'PRY', 'Central', '133395'), +('2888', 'Lambaré', 'PRY', 'Central', '99681'), +('2889', 'Fernando de la Mora', 'PRY', 'Central', '95287'), +('2890', 'Lima', 'PER', 'Lima', '6464693'), +('2891', 'Arequipa', 'PER', 'Arequipa', '762000'), +('2892', 'Trujillo', 'PER', 'La Libertad', '652000'), +('2893', 'Chiclayo', 'PER', 'Lambayeque', '517000'), +('2894', 'Callao', 'PER', 'Callao', '424294'), +('2895', 'Iquitos', 'PER', 'Loreto', '367000'), +('2896', 'Chimbote', 'PER', 'Ancash', '336000'), +('2897', 'Huancayo', 'PER', 'Junín', '327000'), +('2898', 'Piura', 'PER', 'Piura', '325000'), +('2899', 'Cusco', 'PER', 'Cusco', '291000'), +('2900', 'Pucallpa', 'PER', 'Ucayali', '220866'), +('2901', 'Tacna', 'PER', 'Tacna', '215683'), +('2902', 'Ica', 'PER', 'Ica', '194820'), +('2903', 'Sullana', 'PER', 'Piura', '147361'), +('2904', 'Juliaca', 'PER', 'Puno', '142576'), +('2905', 'Huánuco', 'PER', 'Huanuco', '129688'), +('2906', 'Ayacucho', 'PER', 'Ayacucho', '118960'), +('2907', 'Chincha Alta', 'PER', 'Ica', '110016'), +('2908', 'Cajamarca', 'PER', 'Cajamarca', '108009'), +('2909', 'Puno', 'PER', 'Puno', '101578'), +('2910', 'Ventanilla', 'PER', 'Callao', '101056'), +('2911', 'Castilla', 'PER', 'Piura', '90642'), +('2912', 'Adamstown', 'PCN', '–', '42'), +('2913', 'Garapan', 'MNP', 'Saipan', '9200'), +('2914', 'Lisboa', 'PRT', 'Lisboa', '563210'), +('2915', 'Porto', 'PRT', 'Porto', '273060'), +('2916', 'Amadora', 'PRT', 'Lisboa', '122106'), +('2917', 'Coímbra', 'PRT', 'Coímbra', '96100'), +('2918', 'Braga', 'PRT', 'Braga', '90535'), +('2919', 'San Juan', 'PRI', 'San Juan', '434374'), +('2920', 'Bayamón', 'PRI', 'Bayamón', '224044'), +('2921', 'Ponce', 'PRI', 'Ponce', '186475'), +('2922', 'Carolina', 'PRI', 'Carolina', '186076'), +('2923', 'Caguas', 'PRI', 'Caguas', '140502'), +('2924', 'Arecibo', 'PRI', 'Arecibo', '100131'), +('2925', 'Guaynabo', 'PRI', 'Guaynabo', '100053'), +('2926', 'Mayagüez', 'PRI', 'Mayagüez', '98434'), +('2927', 'Toa Baja', 'PRI', 'Toa Baja', '94085'), +('2928', 'Warszawa', 'POL', 'Mazowieckie', '1615369'), +('2929', 'Lódz', 'POL', 'Lodzkie', '800110'), +('2930', 'Kraków', 'POL', 'Malopolskie', '738150'), +('2931', 'Wroclaw', 'POL', 'Dolnoslaskie', '636765'), +('2932', 'Poznan', 'POL', 'Wielkopolskie', '576899'), +('2933', 'Gdansk', 'POL', 'Pomorskie', '458988'), +('2934', 'Szczecin', 'POL', 'Zachodnio-Pomorskie', '416988'), +('2935', 'Bydgoszcz', 'POL', 'Kujawsko-Pomorskie', '386855'), +('2936', 'Lublin', 'POL', 'Lubelskie', '356251'), +('2937', 'Katowice', 'POL', 'Slaskie', '345934'), +('2938', 'Bialystok', 'POL', 'Podlaskie', '283937'), +('2939', 'Czestochowa', 'POL', 'Slaskie', '257812'), +('2940', 'Gdynia', 'POL', 'Pomorskie', '253521'), +('2941', 'Sosnowiec', 'POL', 'Slaskie', '244102'), +('2942', 'Radom', 'POL', 'Mazowieckie', '232262'), +('2943', 'Kielce', 'POL', 'Swietokrzyskie', '212383'), +('2944', 'Gliwice', 'POL', 'Slaskie', '212164'), +('2945', 'Torun', 'POL', 'Kujawsko-Pomorskie', '206158'), +('2946', 'Bytom', 'POL', 'Slaskie', '205560'), +('2947', 'Zabrze', 'POL', 'Slaskie', '200177'), +('2948', 'Bielsko-Biala', 'POL', 'Slaskie', '180307'), +('2949', 'Olsztyn', 'POL', 'Warminsko-Mazurskie', '170904'), +('2950', 'Rzeszów', 'POL', 'Podkarpackie', '162049'), +('2951', 'Ruda Slaska', 'POL', 'Slaskie', '159665'), +('2952', 'Rybnik', 'POL', 'Slaskie', '144582'), +('2953', 'Walbrzych', 'POL', 'Dolnoslaskie', '136923'), +('2954', 'Tychy', 'POL', 'Slaskie', '133178'), +('2955', 'Dabrowa Górnicza', 'POL', 'Slaskie', '131037'), +('2956', 'Plock', 'POL', 'Mazowieckie', '131011'), +('2957', 'Elblag', 'POL', 'Warminsko-Mazurskie', '129782'), +('2958', 'Opole', 'POL', 'Opolskie', '129553'), +('2959', 'Gorzów Wielkopolski', 'POL', 'Lubuskie', '126019'), +('2960', 'Wloclawek', 'POL', 'Kujawsko-Pomorskie', '123373'), +('2961', 'Chorzów', 'POL', 'Slaskie', '121708'), +('2962', 'Tarnów', 'POL', 'Malopolskie', '121494'), +('2963', 'Zielona Góra', 'POL', 'Lubuskie', '118182'), +('2964', 'Koszalin', 'POL', 'Zachodnio-Pomorskie', '112375'), +('2965', 'Legnica', 'POL', 'Dolnoslaskie', '109335'), +('2966', 'Kalisz', 'POL', 'Wielkopolskie', '106641'), +('2967', 'Grudziadz', 'POL', 'Kujawsko-Pomorskie', '102434'), +('2968', 'Slupsk', 'POL', 'Pomorskie', '102370'), +('2969', 'Jastrzebie-Zdrój', 'POL', 'Slaskie', '102294'), +('2970', 'Jaworzno', 'POL', 'Slaskie', '97929'), +('2971', 'Jelenia Góra', 'POL', 'Dolnoslaskie', '93901'), +('2972', 'Malabo', 'GNQ', 'Bioko', '40000'), +('2973', 'Doha', 'QAT', 'Doha', '355000'), +('2974', 'Paris', 'FRA', 'Île-de-France', '2125246'), +('2975', 'Marseille', 'FRA', 'Provence-Alpes-Côte', '798430'), +('2976', 'Lyon', 'FRA', 'Rhône-Alpes', '445452'), +('2977', 'Toulouse', 'FRA', 'Midi-Pyrénées', '390350'), +('2978', 'Nice', 'FRA', 'Provence-Alpes-Côte', '342738'), +('2979', 'Nantes', 'FRA', 'Pays de la Loire', '270251'), +('2980', 'Strasbourg', 'FRA', 'Alsace', '264115'), +('2981', 'Montpellier', 'FRA', 'Languedoc-Roussillon', '225392'), +('2982', 'Bordeaux', 'FRA', 'Aquitaine', '215363'), +('2983', 'Rennes', 'FRA', 'Haute-Normandie', '206229'), +('2984', 'Le Havre', 'FRA', 'Champagne-Ardenne', '190905'), +('2985', 'Reims', 'FRA', 'Nord-Pas-de-Calais', '187206'), +('2986', 'Lille', 'FRA', 'Rhône-Alpes', '184657'), +('2987', 'St-Étienne', 'FRA', 'Bretagne', '180210'), +('2988', 'Toulon', 'FRA', 'Provence-Alpes-Côte', '160639'), +('2989', 'Grenoble', 'FRA', 'Rhône-Alpes', '153317'), +('2990', 'Angers', 'FRA', 'Pays de la Loire', '151279'), +('2991', 'Dijon', 'FRA', 'Bourgogne', '149867'), +('2992', 'Brest', 'FRA', 'Bretagne', '149634'), +('2993', 'Le Mans', 'FRA', 'Pays de la Loire', '146105'), +('2994', 'Clermont-Ferrand', 'FRA', 'Auvergne', '137140'), +('2995', 'Amiens', 'FRA', 'Picardie', '135501'), +('2996', 'Aix-en-Provence', 'FRA', 'Provence-Alpes-Côte', '134222'), +('2997', 'Limoges', 'FRA', 'Limousin', '133968'), +('2998', 'Nîmes', 'FRA', 'Languedoc-Roussillon', '133424'), +('2999', 'Tours', 'FRA', 'Centre', '132820'); + +INSERT INTO city (id, name, countrycode, district, population) VALUES +('3000', 'Villeurbanne', 'FRA', 'Rhône-Alpes', '124215'), +('3001', 'Metz', 'FRA', 'Lorraine', '123776'), +('3002', 'Besançon', 'FRA', 'Franche-Comté', '117733'), +('3003', 'Caen', 'FRA', 'Basse-Normandie', '113987'), +('3004', 'Orléans', 'FRA', 'Centre', '113126'), +('3005', 'Mulhouse', 'FRA', 'Alsace', '110359'), +('3006', 'Rouen', 'FRA', 'Haute-Normandie', '106592'), +('3007', 'Boulogne-Billancourt', 'FRA', 'Île-de-France', '106367'), +('3008', 'Perpignan', 'FRA', 'Languedoc-Roussillon', '105115'), +('3009', 'Nancy', 'FRA', 'Lorraine', '103605'), +('3010', 'Roubaix', 'FRA', 'Nord-Pas-de-Calais', '96984'), +('3011', 'Argenteuil', 'FRA', 'Île-de-France', '93961'), +('3012', 'Tourcoing', 'FRA', 'Nord-Pas-de-Calais', '93540'), +('3013', 'Montreuil', 'FRA', 'Île-de-France', '90674'), +('3014', 'Cayenne', 'GUF', 'Cayenne', '50699'), +('3015', 'Faaa', 'PYF', 'Tahiti', '25888'), +('3016', 'Papeete', 'PYF', 'Tahiti', '25553'), +('3017', 'Saint-Denis', 'REU', 'Saint-Denis', '131480'), +('3018', 'Bucuresti', 'ROM', 'Bukarest', '2016131'), +('3019', 'Iasi', 'ROM', 'Iasi', '348070'), +('3020', 'Constanta', 'ROM', 'Constanta', '342264'), +('3021', 'Cluj-Napoca', 'ROM', 'Cluj', '332498'), +('3022', 'Galati', 'ROM', 'Galati', '330276'), +('3023', 'Timisoara', 'ROM', 'Timis', '324304'), +('3024', 'Brasov', 'ROM', 'Brasov', '314225'), +('3025', 'Craiova', 'ROM', 'Dolj', '313530'), +('3026', 'Ploiesti', 'ROM', 'Prahova', '251348'), +('3027', 'Braila', 'ROM', 'Braila', '233756'), +('3028', 'Oradea', 'ROM', 'Bihor', '222239'), +('3029', 'Bacau', 'ROM', 'Bacau', '209235'), +('3030', 'Pitesti', 'ROM', 'Arges', '187170'), +('3031', 'Arad', 'ROM', 'Arad', '184408'), +('3032', 'Sibiu', 'ROM', 'Sibiu', '169611'), +('3033', 'Târgu Mures', 'ROM', 'Mures', '165153'), +('3034', 'Baia Mare', 'ROM', 'Maramures', '149665'), +('3035', 'Buzau', 'ROM', 'Buzau', '148372'), +('3036', 'Satu Mare', 'ROM', 'Satu Mare', '130059'), +('3037', 'Botosani', 'ROM', 'Botosani', '128730'), +('3038', 'Piatra Neamt', 'ROM', 'Neamt', '125070'), +('3039', 'Râmnicu Vâlcea', 'ROM', 'Vâlcea', '119741'), +('3040', 'Suceava', 'ROM', 'Suceava', '118549'), +('3041', 'Drobeta-Turnu Severin', 'ROM', 'Mehedinti', '117865'), +('3042', 'Târgoviste', 'ROM', 'Dâmbovita', '98980'), +('3043', 'Focsani', 'ROM', 'Vrancea', '98979'), +('3044', 'Târgu Jiu', 'ROM', 'Gorj', '98524'), +('3045', 'Tulcea', 'ROM', 'Tulcea', '96278'), +('3046', 'Resita', 'ROM', 'Caras-Severin', '93976'), +('3047', 'Kigali', 'RWA', 'Kigali', '286000'), +('3048', 'Stockholm', 'SWE', 'Lisboa', '750348'), +('3049', 'Gothenburg [Göteborg]', 'SWE', 'West Götanmaan län', '466990'), +('3050', 'Malmö', 'SWE', 'Skĺne län', '259579'), +('3051', 'Uppsala', 'SWE', 'Uppsala län', '189569'), +('3052', 'Linköping', 'SWE', 'East Götanmaan län', '133168'), +('3053', 'Västerĺs', 'SWE', 'Västmanlands län', '126328'), +('3054', 'Örebro', 'SWE', 'Örebros län', '124207'), +('3055', 'Norrköping', 'SWE', 'East Götanmaan län', '122199'), +('3056', 'Helsingborg', 'SWE', 'Skĺne län', '117737'), +('3057', 'Jönköping', 'SWE', 'Jönköpings län', '117095'), +('3058', 'Umeĺ', 'SWE', 'Västerbottens län', '104512'), +('3059', 'Lund', 'SWE', 'Skĺne län', '98948'), +('3060', 'Borĺs', 'SWE', 'West Götanmaan län', '96883'), +('3061', 'Sundsvall', 'SWE', 'Västernorrlands län', '93126'), +('3062', 'Gävle', 'SWE', 'Gävleborgs län', '90742'), +('3063', 'Jamestown', 'SHN', 'Saint Helena', '1500'), +('3064', 'Basseterre', 'KNA', 'St George Basseterre', '11600'), +('3065', 'Castries', 'LCA', 'Castries', '2301'), +('3066', 'Kingstown', 'VCT', 'St George', '17100'), +('3067', 'Saint-Pierre', 'SPM', 'Saint-Pierre', '5808'), +('3068', 'Berlin', 'DEU', 'Berliini', '3386667'), +('3069', 'Hamburg', 'DEU', 'Hamburg', '1704735'), +('3070', 'Munich [München]', 'DEU', 'Baijeri', '1194560'), +('3071', 'Köln', 'DEU', 'Nordrhein-Westfalen', '962507'), +('3072', 'Frankfurt am Main', 'DEU', 'Hessen', '643821'), +('3073', 'Essen', 'DEU', 'Nordrhein-Westfalen', '599515'), +('3074', 'Dortmund', 'DEU', 'Nordrhein-Westfalen', '590213'), +('3075', 'Stuttgart', 'DEU', 'Baden-Württemberg', '582443'), +('3076', 'Düsseldorf', 'DEU', 'Nordrhein-Westfalen', '568855'), +('3077', 'Bremen', 'DEU', 'Bremen', '540330'), +('3078', 'Duisburg', 'DEU', 'Nordrhein-Westfalen', '519793'), +('3079', 'Hannover', 'DEU', 'Niedersachsen', '514718'), +('3080', 'Leipzig', 'DEU', 'Saksi', '489532'), +('3081', 'Nürnberg', 'DEU', 'Baijeri', '486628'), +('3082', 'Dresden', 'DEU', 'Saksi', '476668'), +('3083', 'Bochum', 'DEU', 'Nordrhein-Westfalen', '392830'), +('3084', 'Wuppertal', 'DEU', 'Nordrhein-Westfalen', '368993'), +('3085', 'Bielefeld', 'DEU', 'Nordrhein-Westfalen', '321125'), +('3086', 'Mannheim', 'DEU', 'Baden-Württemberg', '307730'), +('3087', 'Bonn', 'DEU', 'Nordrhein-Westfalen', '301048'), +('3088', 'Gelsenkirchen', 'DEU', 'Nordrhein-Westfalen', '281979'), +('3089', 'Karlsruhe', 'DEU', 'Baden-Württemberg', '277204'), +('3090', 'Wiesbaden', 'DEU', 'Hessen', '268716'), +('3091', 'Münster', 'DEU', 'Nordrhein-Westfalen', '264670'), +('3092', 'Mönchengladbach', 'DEU', 'Nordrhein-Westfalen', '263697'), +('3093', 'Chemnitz', 'DEU', 'Saksi', '263222'), +('3094', 'Augsburg', 'DEU', 'Baijeri', '254867'), +('3095', 'Halle/Saale', 'DEU', 'Anhalt Sachsen', '254360'), +('3096', 'Braunschweig', 'DEU', 'Niedersachsen', '246322'), +('3097', 'Aachen', 'DEU', 'Nordrhein-Westfalen', '243825'), +('3098', 'Krefeld', 'DEU', 'Nordrhein-Westfalen', '241769'), +('3099', 'Magdeburg', 'DEU', 'Anhalt Sachsen', '235073'), +('3100', 'Kiel', 'DEU', 'Schleswig-Holstein', '233795'), +('3101', 'Oberhausen', 'DEU', 'Nordrhein-Westfalen', '222349'), +('3102', 'Lübeck', 'DEU', 'Schleswig-Holstein', '213326'), +('3103', 'Hagen', 'DEU', 'Nordrhein-Westfalen', '205201'), +('3104', 'Rostock', 'DEU', 'Mecklenburg-Vorpomme', '203279'), +('3105', 'Freiburg im Breisgau', 'DEU', 'Baden-Württemberg', '202455'), +('3106', 'Erfurt', 'DEU', 'Thüringen', '201267'), +('3107', 'Kassel', 'DEU', 'Hessen', '196211'), +('3108', 'Saarbrücken', 'DEU', 'Saarland', '183836'), +('3109', 'Mainz', 'DEU', 'Rheinland-Pfalz', '183134'), +('3110', 'Hamm', 'DEU', 'Nordrhein-Westfalen', '181804'), +('3111', 'Herne', 'DEU', 'Nordrhein-Westfalen', '175661'), +('3112', 'Mülheim an der Ruhr', 'DEU', 'Nordrhein-Westfalen', '173895'), +('3113', 'Solingen', 'DEU', 'Nordrhein-Westfalen', '165583'), +('3114', 'Osnabrück', 'DEU', 'Niedersachsen', '164539'), +('3115', 'Ludwigshafen am Rhein', 'DEU', 'Rheinland-Pfalz', '163771'), +('3116', 'Leverkusen', 'DEU', 'Nordrhein-Westfalen', '160841'), +('3117', 'Oldenburg', 'DEU', 'Niedersachsen', '154125'), +('3118', 'Neuss', 'DEU', 'Nordrhein-Westfalen', '149702'), +('3119', 'Heidelberg', 'DEU', 'Baden-Württemberg', '139672'), +('3120', 'Darmstadt', 'DEU', 'Hessen', '137776'), +('3121', 'Paderborn', 'DEU', 'Nordrhein-Westfalen', '137647'), +('3122', 'Potsdam', 'DEU', 'Brandenburg', '128983'), +('3123', 'Würzburg', 'DEU', 'Baijeri', '127350'), +('3124', 'Regensburg', 'DEU', 'Baijeri', '125236'), +('3125', 'Recklinghausen', 'DEU', 'Nordrhein-Westfalen', '125022'), +('3126', 'Göttingen', 'DEU', 'Niedersachsen', '124775'), +('3127', 'Bremerhaven', 'DEU', 'Bremen', '122735'), +('3128', 'Wolfsburg', 'DEU', 'Niedersachsen', '121954'), +('3129', 'Bottrop', 'DEU', 'Nordrhein-Westfalen', '121097'), +('3130', 'Remscheid', 'DEU', 'Nordrhein-Westfalen', '120125'), +('3131', 'Heilbronn', 'DEU', 'Baden-Württemberg', '119526'), +('3132', 'Pforzheim', 'DEU', 'Baden-Württemberg', '117227'), +('3133', 'Offenbach am Main', 'DEU', 'Hessen', '116627'), +('3134', 'Ulm', 'DEU', 'Baden-Württemberg', '116103'), +('3135', 'Ingolstadt', 'DEU', 'Baijeri', '114826'), +('3136', 'Gera', 'DEU', 'Thüringen', '114718'), +('3137', 'Salzgitter', 'DEU', 'Niedersachsen', '112934'), +('3138', 'Cottbus', 'DEU', 'Brandenburg', '110894'), +('3139', 'Reutlingen', 'DEU', 'Baden-Württemberg', '110343'), +('3140', 'Fürth', 'DEU', 'Baijeri', '109771'), +('3141', 'Siegen', 'DEU', 'Nordrhein-Westfalen', '109225'), +('3142', 'Koblenz', 'DEU', 'Rheinland-Pfalz', '108003'), +('3143', 'Moers', 'DEU', 'Nordrhein-Westfalen', '106837'), +('3144', 'Bergisch Gladbach', 'DEU', 'Nordrhein-Westfalen', '106150'), +('3145', 'Zwickau', 'DEU', 'Saksi', '104146'), +('3146', 'Hildesheim', 'DEU', 'Niedersachsen', '104013'), +('3147', 'Witten', 'DEU', 'Nordrhein-Westfalen', '103384'), +('3148', 'Schwerin', 'DEU', 'Mecklenburg-Vorpomme', '102878'), +('3149', 'Erlangen', 'DEU', 'Baijeri', '100750'), +('3150', 'Kaiserslautern', 'DEU', 'Rheinland-Pfalz', '100025'), +('3151', 'Trier', 'DEU', 'Rheinland-Pfalz', '99891'), +('3152', 'Jena', 'DEU', 'Thüringen', '99779'), +('3153', 'Iserlohn', 'DEU', 'Nordrhein-Westfalen', '99474'), +('3154', 'Gütersloh', 'DEU', 'Nordrhein-Westfalen', '95028'), +('3155', 'Marl', 'DEU', 'Nordrhein-Westfalen', '93735'), +('3156', 'Lünen', 'DEU', 'Nordrhein-Westfalen', '92044'), +('3157', 'Düren', 'DEU', 'Nordrhein-Westfalen', '91092'), +('3158', 'Ratingen', 'DEU', 'Nordrhein-Westfalen', '90951'), +('3159', 'Velbert', 'DEU', 'Nordrhein-Westfalen', '89881'), +('3160', 'Esslingen am Neckar', 'DEU', 'Baden-Württemberg', '89667'), +('3161', 'Honiara', 'SLB', 'Honiara', '50100'), +('3162', 'Lusaka', 'ZMB', 'Lusaka', '1317000'), +('3163', 'Ndola', 'ZMB', 'Copperbelt', '329200'), +('3164', 'Kitwe', 'ZMB', 'Copperbelt', '288600'), +('3165', 'Kabwe', 'ZMB', 'Central', '154300'), +('3166', 'Chingola', 'ZMB', 'Copperbelt', '142400'), +('3167', 'Mufulira', 'ZMB', 'Copperbelt', '123900'), +('3168', 'Luanshya', 'ZMB', 'Copperbelt', '118100'), +('3169', 'Apia', 'WSM', 'Upolu', '35900'), +('3170', 'Serravalle', 'SMR', 'Serravalle/Dogano', '4802'), +('3171', 'San Marino', 'SMR', 'San Marino', '2294'), +('3172', 'Săo Tomé', 'STP', 'Aqua Grande', '49541'), +('3173', 'Riyadh', 'SAU', 'Riyadh', '3324000'), +('3174', 'Jedda', 'SAU', 'Mekka', '2046300'), +('3175', 'Mekka', 'SAU', 'Mekka', '965700'), +('3176', 'Medina', 'SAU', 'Medina', '608300'), +('3177', 'al-Dammam', 'SAU', 'al-Sharqiya', '482300'), +('3178', 'al-Taif', 'SAU', 'Mekka', '416100'), +('3179', 'Tabuk', 'SAU', 'Tabuk', '292600'), +('3180', 'Burayda', 'SAU', 'al-Qasim', '248600'), +('3181', 'al-Hufuf', 'SAU', 'al-Sharqiya', '225800'), +('3182', 'al-Mubarraz', 'SAU', 'al-Sharqiya', '219100'), +('3183', 'Khamis Mushayt', 'SAU', 'Asir', '217900'), +('3184', 'Hail', 'SAU', 'Hail', '176800'), +('3185', 'al-Kharj', 'SAU', 'Riad', '152100'), +('3186', 'al-Khubar', 'SAU', 'al-Sharqiya', '141700'), +('3187', 'Jubayl', 'SAU', 'al-Sharqiya', '140800'), +('3188', 'Hafar al-Batin', 'SAU', 'al-Sharqiya', '137800'), +('3189', 'al-Tuqba', 'SAU', 'al-Sharqiya', '125700'), +('3190', 'Yanbu', 'SAU', 'Medina', '119800'), +('3191', 'Abha', 'SAU', 'Asir', '112300'), +('3192', 'Ara´ar', 'SAU', 'al-Khudud al-Samaliy', '108100'), +('3193', 'al-Qatif', 'SAU', 'al-Sharqiya', '98900'), +('3194', 'al-Hawiya', 'SAU', 'Mekka', '93900'), +('3195', 'Unayza', 'SAU', 'Qasim', '91100'), +('3196', 'Najran', 'SAU', 'Najran', '91000'), +('3197', 'Pikine', 'SEN', 'Cap-Vert', '855287'), +('3198', 'Dakar', 'SEN', 'Cap-Vert', '785071'), +('3199', 'Thičs', 'SEN', 'Thičs', '248000'), +('3200', 'Kaolack', 'SEN', 'Kaolack', '199000'), +('3201', 'Ziguinchor', 'SEN', 'Ziguinchor', '192000'), +('3202', 'Rufisque', 'SEN', 'Cap-Vert', '150000'), +('3203', 'Saint-Louis', 'SEN', 'Saint-Louis', '132400'), +('3204', 'Mbour', 'SEN', 'Thičs', '109300'), +('3205', 'Diourbel', 'SEN', 'Diourbel', '99400'), +('3206', 'Victoria', 'SYC', 'Mahé', '41000'), +('3207', 'Freetown', 'SLE', 'Western', '850000'), +('3208', 'Singapore', 'SGP', '–', '4017733'), +('3209', 'Bratislava', 'SVK', 'Bratislava', '448292'), +('3210', 'Košice', 'SVK', 'Východné Slovensko', '241874'), +('3211', 'Prešov', 'SVK', 'Východné Slovensko', '93977'), +('3212', 'Ljubljana', 'SVN', 'Osrednjeslovenska', '270986'), +('3213', 'Maribor', 'SVN', 'Podravska', '115532'), +('3214', 'Mogadishu', 'SOM', 'Banaadir', '997000'), +('3215', 'Hargeysa', 'SOM', 'Woqooyi Galbeed', '90000'), +('3216', 'Kismaayo', 'SOM', 'Jubbada Hoose', '90000'), +('3217', 'Colombo', 'LKA', 'Western', '645000'), +('3218', 'Dehiwala', 'LKA', 'Western', '203000'), +('3219', 'Moratuwa', 'LKA', 'Western', '190000'), +('3220', 'Jaffna', 'LKA', 'Northern', '149000'), +('3221', 'Kandy', 'LKA', 'Central', '140000'), +('3222', 'Sri Jayawardenepura Kotte', 'LKA', 'Western', '118000'), +('3223', 'Negombo', 'LKA', 'Western', '100000'), +('3224', 'Omdurman', 'SDN', 'Khartum', '1271403'), +('3225', 'Khartum', 'SDN', 'Khartum', '947483'), +('3226', 'Sharq al-Nil', 'SDN', 'Khartum', '700887'), +('3227', 'Port Sudan', 'SDN', 'al-Bahr al-Ahmar', '308195'), +('3228', 'Kassala', 'SDN', 'Kassala', '234622'), +('3229', 'Obeid', 'SDN', 'Kurdufan al-Shamaliy', '229425'), +('3230', 'Nyala', 'SDN', 'Darfur al-Janubiya', '227183'), +('3231', 'Wad Madani', 'SDN', 'al-Jazira', '211362'), +('3232', 'al-Qadarif', 'SDN', 'al-Qadarif', '191164'), +('3233', 'Kusti', 'SDN', 'al-Bahr al-Abyad', '173599'), +('3234', 'al-Fashir', 'SDN', 'Darfur al-Shamaliya', '141884'), +('3235', 'Juba', 'SDN', 'Bahr al-Jabal', '114980'), +('3236', 'Helsinki [Helsingfors]', 'FIN', 'Newmaa', '555474'), +('3237', 'Espoo', 'FIN', 'Newmaa', '213271'), +('3238', 'Tampere', 'FIN', 'Pirkanmaa', '195468'), +('3239', 'Vantaa', 'FIN', 'Newmaa', '178471'), +('3240', 'Turku [Ĺbo]', 'FIN', 'Varsinais-Suomi', '172561'), +('3241', 'Oulu', 'FIN', 'Pohjois-Pohjanmaa', '120753'), +('3242', 'Lahti', 'FIN', 'Päijät-Häme', '96921'), +('3243', 'Paramaribo', 'SUR', 'Paramaribo', '112000'), +('3244', 'Mbabane', 'SWZ', 'Hhohho', '61000'), +('3245', 'Zürich', 'CHE', 'Zürich', '336800'), +('3246', 'Geneve', 'CHE', 'Geneve', '173500'), +('3247', 'Basel', 'CHE', 'Basel-Stadt', '166700'), +('3248', 'Bern', 'CHE', 'Bern', '122700'), +('3249', 'Lausanne', 'CHE', 'Vaud', '114500'), +('3250', 'Damascus', 'SYR', 'Damascus', '1347000'), +('3251', 'Aleppo', 'SYR', 'Aleppo', '1261983'), +('3252', 'Hims', 'SYR', 'Hims', '507404'), +('3253', 'Hama', 'SYR', 'Hama', '343361'), +('3254', 'Latakia', 'SYR', 'Latakia', '264563'), +('3255', 'al-Qamishliya', 'SYR', 'al-Hasaka', '144286'), +('3256', 'Dayr al-Zawr', 'SYR', 'Dayr al-Zawr', '140459'), +('3257', 'Jaramana', 'SYR', 'Damaskos', '138469'), +('3258', 'Duma', 'SYR', 'Damaskos', '131158'), +('3259', 'al-Raqqa', 'SYR', 'al-Raqqa', '108020'), +('3260', 'Idlib', 'SYR', 'Idlib', '91081'), +('3261', 'Dushanbe', 'TJK', 'Karotegin', '524000'), +('3262', 'Khujand', 'TJK', 'Khujand', '161500'), +('3263', 'Taipei', 'TWN', 'Taipei', '2641312'), +('3264', 'Kaohsiung', 'TWN', 'Kaohsiung', '1475505'), +('3265', 'Taichung', 'TWN', 'Taichung', '940589'), +('3266', 'Tainan', 'TWN', 'Tainan', '728060'), +('3267', 'Panchiao', 'TWN', 'Taipei', '523850'), +('3268', 'Chungho', 'TWN', 'Taipei', '392176'), +('3269', 'Keelung (Chilung)', 'TWN', 'Keelung', '385201'), +('3270', 'Sanchung', 'TWN', 'Taipei', '380084'), +('3271', 'Hsinchuang', 'TWN', 'Taipei', '365048'), +('3272', 'Hsinchu', 'TWN', 'Hsinchu', '361958'), +('3273', 'Chungli', 'TWN', 'Taoyuan', '318649'), +('3274', 'Fengshan', 'TWN', 'Kaohsiung', '318562'), +('3275', 'Taoyuan', 'TWN', 'Taoyuan', '316438'), +('3276', 'Chiayi', 'TWN', 'Chiayi', '265109'), +('3277', 'Hsintien', 'TWN', 'Taipei', '263603'), +('3278', 'Changhwa', 'TWN', 'Changhwa', '227715'), +('3279', 'Yungho', 'TWN', 'Taipei', '227700'), +('3280', 'Tucheng', 'TWN', 'Taipei', '224897'), +('3281', 'Pingtung', 'TWN', 'Pingtung', '214727'), +('3282', 'Yungkang', 'TWN', 'Tainan', '193005'), +('3283', 'Pingchen', 'TWN', 'Taoyuan', '188344'), +('3284', 'Tali', 'TWN', 'Taichung', '171940'), +('3285', 'Taiping', 'TWN', '-', '165524'), +('3286', 'Pate', 'TWN', 'Taoyuan', '161700'), +('3287', 'Fengyuan', 'TWN', 'Taichung', '161032'), +('3288', 'Luchou', 'TWN', 'Taipei', '160516'), +('3289', 'Hsichuh', 'TWN', 'Taipei', '154976'), +('3290', 'Shulin', 'TWN', 'Taipei', '151260'), +('3291', 'Yuanlin', 'TWN', 'Changhwa', '126402'), +('3292', 'Yangmei', 'TWN', 'Taoyuan', '126323'), +('3293', 'Taliao', 'TWN', '-', '115897'), +('3294', 'Kueishan', 'TWN', '-', '112195'), +('3295', 'Tanshui', 'TWN', 'Taipei', '111882'), +('3296', 'Taitung', 'TWN', 'Taitung', '111039'), +('3297', 'Hualien', 'TWN', 'Hualien', '108407'), +('3298', 'Nantou', 'TWN', 'Nantou', '104723'), +('3299', 'Lungtan', 'TWN', 'Taipei', '103088'), +('3300', 'Touliu', 'TWN', 'Yünlin', '98900'), +('3301', 'Tsaotun', 'TWN', 'Nantou', '96800'), +('3302', 'Kangshan', 'TWN', 'Kaohsiung', '92200'), +('3303', 'Ilan', 'TWN', 'Ilan', '92000'), +('3304', 'Miaoli', 'TWN', 'Miaoli', '90000'), +('3305', 'Dar es Salaam', 'TZA', 'Dar es Salaam', '1747000'), +('3306', 'Dodoma', 'TZA', 'Dodoma', '189000'), +('3307', 'Mwanza', 'TZA', 'Mwanza', '172300'), +('3308', 'Zanzibar', 'TZA', 'Zanzibar West', '157634'), +('3309', 'Tanga', 'TZA', 'Tanga', '137400'), +('3310', 'Mbeya', 'TZA', 'Mbeya', '130800'), +('3311', 'Morogoro', 'TZA', 'Morogoro', '117800'), +('3312', 'Arusha', 'TZA', 'Arusha', '102500'), +('3313', 'Moshi', 'TZA', 'Kilimanjaro', '96800'), +('3314', 'Tabora', 'TZA', 'Tabora', '92800'), +('3315', 'Křbenhavn', 'DNK', 'Křbenhavn', '495699'), +('3316', 'Ĺrhus', 'DNK', 'Ĺrhus', '284846'), +('3317', 'Odense', 'DNK', 'Fyn', '183912'), +('3318', 'Aalborg', 'DNK', 'Nordjylland', '161161'), +('3319', 'Frederiksberg', 'DNK', 'Frederiksberg', '90327'), +('3320', 'Bangkok', 'THA', 'Bangkok', '6320174'), +('3321', 'Nonthaburi', 'THA', 'Nonthaburi', '292100'), +('3322', 'Nakhon Ratchasima', 'THA', 'Nakhon Ratchasima', '181400'), +('3323', 'Chiang Mai', 'THA', 'Chiang Mai', '171100'), +('3324', 'Udon Thani', 'THA', 'Udon Thani', '158100'), +('3325', 'Hat Yai', 'THA', 'Songkhla', '148632'), +('3326', 'Khon Kaen', 'THA', 'Khon Kaen', '126500'), +('3327', 'Pak Kret', 'THA', 'Nonthaburi', '126055'), +('3328', 'Nakhon Sawan', 'THA', 'Nakhon Sawan', '123800'), +('3329', 'Ubon Ratchathani', 'THA', 'Ubon Ratchathani', '116300'), +('3330', 'Songkhla', 'THA', 'Songkhla', '94900'), +('3331', 'Nakhon Pathom', 'THA', 'Nakhon Pathom', '94100'), +('3332', 'Lomé', 'TGO', 'Maritime', '375000'), +('3333', 'Fakaofo', 'TKL', 'Fakaofo', '300'), +('3334', 'Nuku´alofa', 'TON', 'Tongatapu', '22400'), +('3335', 'Chaguanas', 'TTO', 'Caroni', '56601'), +('3336', 'Port-of-Spain', 'TTO', 'Port-of-Spain', '43396'), +('3337', 'N´Djaména', 'TCD', 'Chari-Baguirmi', '530965'), +('3338', 'Moundou', 'TCD', 'Logone Occidental', '99500'), +('3339', 'Praha', 'CZE', 'Hlavní mesto Praha', '1181126'), +('3340', 'Brno', 'CZE', 'Jizní Morava', '381862'), +('3341', 'Ostrava', 'CZE', 'Severní Morava', '320041'), +('3342', 'Plzen', 'CZE', 'Zapadní Cechy', '166759'), +('3343', 'Olomouc', 'CZE', 'Severní Morava', '102702'), +('3344', 'Liberec', 'CZE', 'Severní Cechy', '99155'), +('3345', 'Ceské Budejovice', 'CZE', 'Jizní Cechy', '98186'), +('3346', 'Hradec Králové', 'CZE', 'Východní Cechy', '98080'), +('3347', 'Ústí nad Labem', 'CZE', 'Severní Cechy', '95491'), +('3348', 'Pardubice', 'CZE', 'Východní Cechy', '91309'), +('3349', 'Tunis', 'TUN', 'Tunis', '690600'), +('3350', 'Sfax', 'TUN', 'Sfax', '257800'), +('3351', 'Ariana', 'TUN', 'Ariana', '197000'), +('3352', 'Ettadhamen', 'TUN', 'Ariana', '178600'), +('3353', 'Sousse', 'TUN', 'Sousse', '145900'), +('3354', 'Kairouan', 'TUN', 'Kairouan', '113100'), +('3355', 'Biserta', 'TUN', 'Biserta', '108900'), +('3356', 'Gabčs', 'TUN', 'Gabčs', '106600'), +('3357', 'Istanbul', 'TUR', 'Istanbul', '8787958'), +('3358', 'Ankara', 'TUR', 'Ankara', '3038159'), +('3359', 'Izmir', 'TUR', 'Izmir', '2130359'), +('3360', 'Adana', 'TUR', 'Adana', '1131198'), +('3361', 'Bursa', 'TUR', 'Bursa', '1095842'), +('3362', 'Gaziantep', 'TUR', 'Gaziantep', '789056'), +('3363', 'Konya', 'TUR', 'Konya', '628364'), +('3364', 'Mersin (Içel)', 'TUR', 'Içel', '587212'), +('3365', 'Antalya', 'TUR', 'Antalya', '564914'), +('3366', 'Diyarbakir', 'TUR', 'Diyarbakir', '479884'), +('3367', 'Kayseri', 'TUR', 'Kayseri', '475657'), +('3368', 'Eskisehir', 'TUR', 'Eskisehir', '470781'), +('3369', 'Sanliurfa', 'TUR', 'Sanliurfa', '405905'), +('3370', 'Samsun', 'TUR', 'Samsun', '339871'), +('3371', 'Malatya', 'TUR', 'Malatya', '330312'), +('3372', 'Gebze', 'TUR', 'Kocaeli', '264170'), +('3373', 'Denizli', 'TUR', 'Denizli', '253848'), +('3374', 'Sivas', 'TUR', 'Sivas', '246642'), +('3375', 'Erzurum', 'TUR', 'Erzurum', '246535'), +('3376', 'Tarsus', 'TUR', 'Adana', '246206'), +('3377', 'Kahramanmaras', 'TUR', 'Kahramanmaras', '245772'), +('3378', 'Elâzig', 'TUR', 'Elâzig', '228815'), +('3379', 'Van', 'TUR', 'Van', '219319'), +('3380', 'Sultanbeyli', 'TUR', 'Istanbul', '211068'), +('3381', 'Izmit (Kocaeli)', 'TUR', 'Kocaeli', '210068'), +('3382', 'Manisa', 'TUR', 'Manisa', '207148'), +('3383', 'Batman', 'TUR', 'Batman', '203793'), +('3384', 'Balikesir', 'TUR', 'Balikesir', '196382'), +('3385', 'Sakarya (Adapazari)', 'TUR', 'Sakarya', '190641'), +('3386', 'Iskenderun', 'TUR', 'Hatay', '153022'), +('3387', 'Osmaniye', 'TUR', 'Osmaniye', '146003'), +('3388', 'Çorum', 'TUR', 'Çorum', '145495'), +('3389', 'Kütahya', 'TUR', 'Kütahya', '144761'), +('3390', 'Hatay (Antakya)', 'TUR', 'Hatay', '143982'), +('3391', 'Kirikkale', 'TUR', 'Kirikkale', '142044'), +('3392', 'Adiyaman', 'TUR', 'Adiyaman', '141529'), +('3393', 'Trabzon', 'TUR', 'Trabzon', '138234'), +('3394', 'Ordu', 'TUR', 'Ordu', '133642'), +('3395', 'Aydin', 'TUR', 'Aydin', '128651'), +('3396', 'Usak', 'TUR', 'Usak', '128162'), +('3397', 'Edirne', 'TUR', 'Edirne', '123383'), +('3398', 'Çorlu', 'TUR', 'Tekirdag', '123300'), +('3399', 'Isparta', 'TUR', 'Isparta', '121911'), +('3400', 'Karabük', 'TUR', 'Karabük', '118285'), +('3401', 'Kilis', 'TUR', 'Kilis', '118245'), +('3402', 'Alanya', 'TUR', 'Antalya', '117300'), +('3403', 'Kiziltepe', 'TUR', 'Mardin', '112000'), +('3404', 'Zonguldak', 'TUR', 'Zonguldak', '111542'), +('3405', 'Siirt', 'TUR', 'Siirt', '107100'), +('3406', 'Viransehir', 'TUR', 'Sanliurfa', '106400'), +('3407', 'Tekirdag', 'TUR', 'Tekirdag', '106077'), +('3408', 'Karaman', 'TUR', 'Karaman', '104200'), +('3409', 'Afyon', 'TUR', 'Afyon', '103984'), +('3410', 'Aksaray', 'TUR', 'Aksaray', '102681'), +('3411', 'Ceyhan', 'TUR', 'Adana', '102412'), +('3412', 'Erzincan', 'TUR', 'Erzincan', '102304'), +('3413', 'Bismil', 'TUR', 'Diyarbakir', '101400'), +('3414', 'Nazilli', 'TUR', 'Aydin', '99900'), +('3415', 'Tokat', 'TUR', 'Tokat', '99500'), +('3416', 'Kars', 'TUR', 'Kars', '93000'), +('3417', 'Inegöl', 'TUR', 'Bursa', '90500'), +('3418', 'Bandirma', 'TUR', 'Balikesir', '90200'), +('3419', 'Ashgabat', 'TKM', 'Ahal', '540600'), +('3420', 'Chärjew', 'TKM', 'Lebap', '189200'), +('3421', 'Dashhowuz', 'TKM', 'Dashhowuz', '141800'), +('3422', 'Mary', 'TKM', 'Mary', '101000'), +('3423', 'Cockburn Town', 'TCA', 'Grand Turk', '4800'), +('3424', 'Funafuti', 'TUV', 'Funafuti', '4600'), +('3425', 'Kampala', 'UGA', 'Central', '890800'), +('3426', 'Kyiv', 'UKR', 'Kiova', '2624000'), +('3427', 'Harkova [Harkiv]', 'UKR', 'Harkova', '1500000'), +('3428', 'Dnipropetrovsk', 'UKR', 'Dnipropetrovsk', '1103000'), +('3429', 'Donetsk', 'UKR', 'Donetsk', '1050000'), +('3430', 'Odesa', 'UKR', 'Odesa', '1011000'), +('3431', 'Zaporizzja', 'UKR', 'Zaporizzja', '848000'), +('3432', 'Lviv', 'UKR', 'Lviv', '788000'), +('3433', 'Kryvyi Rig', 'UKR', 'Dnipropetrovsk', '703000'), +('3434', 'Mykolajiv', 'UKR', 'Mykolajiv', '508000'), +('3435', 'Mariupol', 'UKR', 'Donetsk', '490000'), +('3436', 'Lugansk', 'UKR', 'Lugansk', '469000'), +('3437', 'Vinnytsja', 'UKR', 'Vinnytsja', '391000'), +('3438', 'Makijivka', 'UKR', 'Donetsk', '384000'), +('3439', 'Herson', 'UKR', 'Herson', '353000'), +('3440', 'Sevastopol', 'UKR', 'Krim', '348000'), +('3441', 'Simferopol', 'UKR', 'Krim', '339000'), +('3442', 'Pultava [Poltava]', 'UKR', 'Pultava', '313000'), +('3443', 'Tšernigiv', 'UKR', 'Tšernigiv', '313000'), +('3444', 'Tšerkasy', 'UKR', 'Tšerkasy', '309000'), +('3445', 'Gorlivka', 'UKR', 'Donetsk', '299000'), +('3446', 'Zytomyr', 'UKR', 'Zytomyr', '297000'), +('3447', 'Sumy', 'UKR', 'Sumy', '294000'), +('3448', 'Dniprodzerzynsk', 'UKR', 'Dnipropetrovsk', '270000'), +('3449', 'Kirovograd', 'UKR', 'Kirovograd', '265000'), +('3450', 'Hmelnytskyi', 'UKR', 'Hmelnytskyi', '262000'), +('3451', 'Tšernivtsi', 'UKR', 'Tšernivtsi', '259000'), +('3452', 'Rivne', 'UKR', 'Rivne', '245000'), +('3453', 'Krementšuk', 'UKR', 'Pultava', '239000'), +('3454', 'Ivano-Frankivsk', 'UKR', 'Ivano-Frankivsk', '237000'), +('3455', 'Ternopil', 'UKR', 'Ternopil', '236000'), +('3456', 'Lutsk', 'UKR', 'Volynia', '217000'), +('3457', 'Bila Tserkva', 'UKR', 'Kiova', '215000'), +('3458', 'Kramatorsk', 'UKR', 'Donetsk', '186000'), +('3459', 'Melitopol', 'UKR', 'Zaporizzja', '169000'), +('3460', 'Kertš', 'UKR', 'Krim', '162000'), +('3461', 'Nikopol', 'UKR', 'Dnipropetrovsk', '149000'), +('3462', 'Berdjansk', 'UKR', 'Zaporizzja', '130000'), +('3463', 'Pavlograd', 'UKR', 'Dnipropetrovsk', '127000'), +('3464', 'Sjeverodonetsk', 'UKR', 'Lugansk', '127000'), +('3465', 'Slovjansk', 'UKR', 'Donetsk', '127000'), +('3466', 'Uzgorod', 'UKR', 'Taka-Karpatia', '127000'), +('3467', 'Altševsk', 'UKR', 'Lugansk', '119000'), +('3468', 'Lysytšansk', 'UKR', 'Lugansk', '116000'), +('3469', 'Jevpatorija', 'UKR', 'Krim', '112000'), +('3470', 'Kamjanets-Podilskyi', 'UKR', 'Hmelnytskyi', '109000'), +('3471', 'Jenakijeve', 'UKR', 'Donetsk', '105000'), +('3472', 'Krasnyi Lutš', 'UKR', 'Lugansk', '101000'), +('3473', 'Stahanov', 'UKR', 'Lugansk', '101000'), +('3474', 'Oleksandrija', 'UKR', 'Kirovograd', '99000'), +('3475', 'Konotop', 'UKR', 'Sumy', '96000'), +('3476', 'Kostjantynivka', 'UKR', 'Donetsk', '95000'), +('3477', 'Berdytšiv', 'UKR', 'Zytomyr', '90000'), +('3478', 'Izmajil', 'UKR', 'Odesa', '90000'), +('3479', 'Šostka', 'UKR', 'Sumy', '90000'), +('3480', 'Uman', 'UKR', 'Tšerkasy', '90000'), +('3481', 'Brovary', 'UKR', 'Kiova', '89000'), +('3482', 'Mukatševe', 'UKR', 'Taka-Karpatia', '89000'), +('3483', 'Budapest', 'HUN', 'Budapest', '1811552'), +('3484', 'Debrecen', 'HUN', 'Hajdú-Bihar', '203648'), +('3485', 'Miskolc', 'HUN', 'Borsod-Abaúj-Zemplén', '172357'), +('3486', 'Szeged', 'HUN', 'Csongrád', '158158'), +('3487', 'Pécs', 'HUN', 'Baranya', '157332'), +('3488', 'Györ', 'HUN', 'Györ-Moson-Sopron', '127119'), +('3489', 'Nyiregyháza', 'HUN', 'Szabolcs-Szatmár-Ber', '112419'), +('3490', 'Kecskemét', 'HUN', 'Bács-Kiskun', '105606'), +('3491', 'Székesfehérvár', 'HUN', 'Fejér', '105119'), +('3492', 'Montevideo', 'URY', 'Montevideo', '1236000'), +('3493', 'Nouméa', 'NCL', '–', '76293'), +('3494', 'Auckland', 'NZL', 'Auckland', '381800'), +('3495', 'Christchurch', 'NZL', 'Canterbury', '324200'), +('3496', 'Manukau', 'NZL', 'Auckland', '281800'), +('3497', 'North Shore', 'NZL', 'Auckland', '187700'), +('3498', 'Waitakere', 'NZL', 'Auckland', '170600'), +('3499', 'Wellington', 'NZL', 'Wellington', '166700'), +('3500', 'Dunedin', 'NZL', 'Dunedin', '119600'), +('3501', 'Hamilton', 'NZL', 'Hamilton', '117100'), +('3502', 'Lower Hutt', 'NZL', 'Wellington', '98100'), +('3503', 'Toskent', 'UZB', 'Toskent Shahri', '2117500'), +('3504', 'Namangan', 'UZB', 'Namangan', '370500'), +('3505', 'Samarkand', 'UZB', 'Samarkand', '361800'), +('3506', 'Andijon', 'UZB', 'Andijon', '318600'), +('3507', 'Buhoro', 'UZB', 'Buhoro', '237100'), +('3508', 'Karsi', 'UZB', 'Qashqadaryo', '194100'), +('3509', 'Nukus', 'UZB', 'Karakalpakistan', '194100'), +('3510', 'Kükon', 'UZB', 'Fargona', '190100'), +('3511', 'Fargona', 'UZB', 'Fargona', '180500'), +('3512', 'Circik', 'UZB', 'Toskent', '146400'), +('3513', 'Margilon', 'UZB', 'Fargona', '140800'), +('3514', 'Ürgenc', 'UZB', 'Khorazm', '138900'), +('3515', 'Angren', 'UZB', 'Toskent', '128000'), +('3516', 'Cizah', 'UZB', 'Cizah', '124800'), +('3517', 'Navoi', 'UZB', 'Navoi', '116300'), +('3518', 'Olmalik', 'UZB', 'Toskent', '114900'), +('3519', 'Termiz', 'UZB', 'Surkhondaryo', '109500'), +('3520', 'Minsk', 'BLR', 'Horad Minsk', '1674000'), +('3521', 'Gomel', 'BLR', 'Gomel', '475000'), +('3522', 'Mogiljov', 'BLR', 'Mogiljov', '356000'), +('3523', 'Vitebsk', 'BLR', 'Vitebsk', '340000'), +('3524', 'Grodno', 'BLR', 'Grodno', '302000'), +('3525', 'Brest', 'BLR', 'Brest', '286000'), +('3526', 'Bobruisk', 'BLR', 'Mogiljov', '221000'), +('3527', 'Baranovitši', 'BLR', 'Brest', '167000'), +('3528', 'Borisov', 'BLR', 'Minsk', '151000'), +('3529', 'Pinsk', 'BLR', 'Brest', '130000'), +('3530', 'Orša', 'BLR', 'Vitebsk', '124000'), +('3531', 'Mozyr', 'BLR', 'Gomel', '110000'), +('3532', 'Novopolotsk', 'BLR', 'Vitebsk', '106000'), +('3533', 'Lida', 'BLR', 'Grodno', '101000'), +('3534', 'Soligorsk', 'BLR', 'Minsk', '101000'), +('3535', 'Molodetšno', 'BLR', 'Minsk', '97000'), +('3536', 'Mata-Utu', 'WLF', 'Wallis', '1137'), +('3537', 'Port-Vila', 'VUT', 'Shefa', '33700'), +('3538', 'Cittŕ del Vaticano', 'VAT', '–', '455'), +('3539', 'Caracas', 'VEN', 'Distrito Federal', '1975294'), +('3540', 'Maracaíbo', 'VEN', 'Zulia', '1304776'), +('3541', 'Barquisimeto', 'VEN', 'Lara', '877239'), +('3542', 'Valencia', 'VEN', 'Carabobo', '794246'), +('3543', 'Ciudad Guayana', 'VEN', 'Bolívar', '663713'), +('3544', 'Petare', 'VEN', 'Miranda', '488868'), +('3545', 'Maracay', 'VEN', 'Aragua', '444443'), +('3546', 'Barcelona', 'VEN', 'Anzoátegui', '322267'), +('3547', 'Maturín', 'VEN', 'Monagas', '319726'), +('3548', 'San Cristóbal', 'VEN', 'Táchira', '319373'), +('3549', 'Ciudad Bolívar', 'VEN', 'Bolívar', '301107'), +('3550', 'Cumaná', 'VEN', 'Sucre', '293105'), +('3551', 'Mérida', 'VEN', 'Mérida', '224887'), +('3552', 'Cabimas', 'VEN', 'Zulia', '221329'), +('3553', 'Barinas', 'VEN', 'Barinas', '217831'), +('3554', 'Turmero', 'VEN', 'Aragua', '217499'), +('3555', 'Baruta', 'VEN', 'Miranda', '207290'), +('3556', 'Puerto Cabello', 'VEN', 'Carabobo', '187722'), +('3557', 'Santa Ana de Coro', 'VEN', 'Falcón', '185766'), +('3558', 'Los Teques', 'VEN', 'Miranda', '178784'), +('3559', 'Punto Fijo', 'VEN', 'Falcón', '167215'), +('3560', 'Guarenas', 'VEN', 'Miranda', '165889'), +('3561', 'Acarigua', 'VEN', 'Portuguesa', '158954'), +('3562', 'Puerto La Cruz', 'VEN', 'Anzoátegui', '155700'), +('3563', 'Ciudad Losada', 'VEN', '-', '134501'), +('3564', 'Guacara', 'VEN', 'Carabobo', '131334'), +('3565', 'Valera', 'VEN', 'Trujillo', '130281'), +('3566', 'Guanare', 'VEN', 'Portuguesa', '125621'), +('3567', 'Carúpano', 'VEN', 'Sucre', '119639'), +('3568', 'Catia La Mar', 'VEN', 'Distrito Federal', '117012'), +('3569', 'El Tigre', 'VEN', 'Anzoátegui', '116256'), +('3570', 'Guatire', 'VEN', 'Miranda', '109121'), +('3571', 'Calabozo', 'VEN', 'Guárico', '107146'), +('3572', 'Pozuelos', 'VEN', 'Anzoátegui', '105690'), +('3573', 'Ciudad Ojeda', 'VEN', 'Zulia', '99354'), +('3574', 'Ocumare del Tuy', 'VEN', 'Miranda', '97168'), +('3575', 'Valle de la Pascua', 'VEN', 'Guárico', '95927'), +('3576', 'Araure', 'VEN', 'Portuguesa', '94269'), +('3577', 'San Fernando de Apure', 'VEN', 'Apure', '93809'), +('3578', 'San Felipe', 'VEN', 'Yaracuy', '90940'), +('3579', 'El Limón', 'VEN', 'Aragua', '90000'), +('3580', 'Moscow', 'RUS', 'Moscow (City)', '8389200'), +('3581', 'St Petersburg', 'RUS', 'Pietari', '4694000'), +('3582', 'Novosibirsk', 'RUS', 'Novosibirsk', '1398800'), +('3583', 'Nizni Novgorod', 'RUS', 'Nizni Novgorod', '1357000'), +('3584', 'Jekaterinburg', 'RUS', 'Sverdlovsk', '1266300'), +('3585', 'Samara', 'RUS', 'Samara', '1156100'), +('3586', 'Omsk', 'RUS', 'Omsk', '1148900'), +('3587', 'Kazan', 'RUS', 'Tatarstan', '1101000'), +('3588', 'Ufa', 'RUS', 'Baškortostan', '1091200'), +('3589', 'Tšeljabinsk', 'RUS', 'Tšeljabinsk', '1083200'), +('3590', 'Rostov-na-Donu', 'RUS', 'Rostov-na-Donu', '1012700'), +('3591', 'Perm', 'RUS', 'Perm', '1009700'), +('3592', 'Volgograd', 'RUS', 'Volgograd', '993400'), +('3593', 'Voronez', 'RUS', 'Voronez', '907700'), +('3594', 'Krasnojarsk', 'RUS', 'Krasnojarsk', '875500'), +('3595', 'Saratov', 'RUS', 'Saratov', '874000'), +('3596', 'Toljatti', 'RUS', 'Samara', '722900'), +('3597', 'Uljanovsk', 'RUS', 'Uljanovsk', '667400'), +('3598', 'Izevsk', 'RUS', 'Udmurtia', '652800'), +('3599', 'Krasnodar', 'RUS', 'Krasnodar', '639000'), +('3600', 'Jaroslavl', 'RUS', 'Jaroslavl', '616700'), +('3601', 'Habarovsk', 'RUS', 'Habarovsk', '609400'), +('3602', 'Vladivostok', 'RUS', 'Primorje', '606200'), +('3603', 'Irkutsk', 'RUS', 'Irkutsk', '593700'), +('3604', 'Barnaul', 'RUS', 'Altai', '580100'), +('3605', 'Novokuznetsk', 'RUS', 'Kemerovo', '561600'), +('3606', 'Penza', 'RUS', 'Penza', '532200'), +('3607', 'Rjazan', 'RUS', 'Rjazan', '529900'), +('3608', 'Orenburg', 'RUS', 'Orenburg', '523600'), +('3609', 'Lipetsk', 'RUS', 'Lipetsk', '521000'), +('3610', 'Nabereznyje Tšelny', 'RUS', 'Tatarstan', '514700'), +('3611', 'Tula', 'RUS', 'Tula', '506100'), +('3612', 'Tjumen', 'RUS', 'Tjumen', '503400'), +('3613', 'Kemerovo', 'RUS', 'Kemerovo', '492700'), +('3614', 'Astrahan', 'RUS', 'Astrahan', '486100'), +('3615', 'Tomsk', 'RUS', 'Tomsk', '482100'), +('3616', 'Kirov', 'RUS', 'Kirov', '466200'), +('3617', 'Ivanovo', 'RUS', 'Ivanovo', '459200'), +('3618', 'Tšeboksary', 'RUS', 'Tšuvassia', '459200'), +('3619', 'Brjansk', 'RUS', 'Brjansk', '457400'), +('3620', 'Tver', 'RUS', 'Tver', '454900'), +('3621', 'Kursk', 'RUS', 'Kursk', '443500'), +('3622', 'Magnitogorsk', 'RUS', 'Tšeljabinsk', '427900'), +('3623', 'Kaliningrad', 'RUS', 'Kaliningrad', '424400'), +('3624', 'Nizni Tagil', 'RUS', 'Sverdlovsk', '390900'), +('3625', 'Murmansk', 'RUS', 'Murmansk', '376300'), +('3626', 'Ulan-Ude', 'RUS', 'Burjatia', '370400'), +('3627', 'Kurgan', 'RUS', 'Kurgan', '364700'), +('3628', 'Arkangeli', 'RUS', 'Arkangeli', '361800'), +('3629', 'Sotši', 'RUS', 'Krasnodar', '358600'), +('3630', 'Smolensk', 'RUS', 'Smolensk', '353400'), +('3631', 'Orjol', 'RUS', 'Orjol', '344500'), +('3632', 'Stavropol', 'RUS', 'Stavropol', '343300'), +('3633', 'Belgorod', 'RUS', 'Belgorod', '342000'), +('3634', 'Kaluga', 'RUS', 'Kaluga', '339300'), +('3635', 'Vladimir', 'RUS', 'Vladimir', '337100'), +('3636', 'Mahatškala', 'RUS', 'Dagestan', '332800'), +('3637', 'Tšerepovets', 'RUS', 'Vologda', '324400'), +('3638', 'Saransk', 'RUS', 'Mordva', '314800'), +('3639', 'Tambov', 'RUS', 'Tambov', '312000'), +('3640', 'Vladikavkaz', 'RUS', 'North Ossetia-Alania', '310100'), +('3641', 'Tšita', 'RUS', 'Tšita', '309900'), +('3642', 'Vologda', 'RUS', 'Vologda', '302500'), +('3643', 'Veliki Novgorod', 'RUS', 'Novgorod', '299500'), +('3644', 'Komsomolsk-na-Amure', 'RUS', 'Habarovsk', '291600'), +('3645', 'Kostroma', 'RUS', 'Kostroma', '288100'), +('3646', 'Volzski', 'RUS', 'Volgograd', '286900'), +('3647', 'Taganrog', 'RUS', 'Rostov-na-Donu', '284400'), +('3648', 'Petroskoi', 'RUS', 'Karjala', '282100'), +('3649', 'Bratsk', 'RUS', 'Irkutsk', '277600'), +('3650', 'Dzerzinsk', 'RUS', 'Nizni Novgorod', '277100'), +('3651', 'Surgut', 'RUS', 'Hanti-Mansia', '274900'), +('3652', 'Orsk', 'RUS', 'Orenburg', '273900'), +('3653', 'Sterlitamak', 'RUS', 'Baškortostan', '265200'), +('3654', 'Angarsk', 'RUS', 'Irkutsk', '264700'), +('3655', 'Joškar-Ola', 'RUS', 'Marinmaa', '249200'), +('3656', 'Rybinsk', 'RUS', 'Jaroslavl', '239600'), +('3657', 'Prokopjevsk', 'RUS', 'Kemerovo', '237300'), +('3658', 'Niznevartovsk', 'RUS', 'Hanti-Mansia', '233900'), +('3659', 'Naltšik', 'RUS', 'Kabardi-Balkaria', '233400'), +('3660', 'Syktyvkar', 'RUS', 'Komi', '229700'), +('3661', 'Severodvinsk', 'RUS', 'Arkangeli', '229300'), +('3662', 'Bijsk', 'RUS', 'Altai', '225000'), +('3663', 'Niznekamsk', 'RUS', 'Tatarstan', '223400'), +('3664', 'Blagoveštšensk', 'RUS', 'Amur', '222000'), +('3665', 'Šahty', 'RUS', 'Rostov-na-Donu', '221800'), +('3666', 'Staryi Oskol', 'RUS', 'Belgorod', '213800'), +('3667', 'Zelenograd', 'RUS', 'Moscow (City)', '207100'), +('3668', 'Balakovo', 'RUS', 'Saratov', '206000'), +('3669', 'Novorossijsk', 'RUS', 'Krasnodar', '203300'), +('3670', 'Pihkova', 'RUS', 'Pihkova', '201500'), +('3671', 'Zlatoust', 'RUS', 'Tšeljabinsk', '196900'), +('3672', 'Jakutsk', 'RUS', 'Saha (Jakutia)', '195400'), +('3673', 'Podolsk', 'RUS', 'Moskova', '194300'), +('3674', 'Petropavlovsk-Kamtšatski', 'RUS', 'Kamtšatka', '194100'), +('3675', 'Kamensk-Uralski', 'RUS', 'Sverdlovsk', '190600'), +('3676', 'Engels', 'RUS', 'Saratov', '189000'), +('3677', 'Syzran', 'RUS', 'Samara', '186900'), +('3678', 'Grozny', 'RUS', 'Tšetšenia', '186000'), +('3679', 'Novotšerkassk', 'RUS', 'Rostov-na-Donu', '184400'), +('3680', 'Berezniki', 'RUS', 'Perm', '181900'), +('3681', 'Juzno-Sahalinsk', 'RUS', 'Sahalin', '179200'), +('3682', 'Volgodonsk', 'RUS', 'Rostov-na-Donu', '178200'), +('3683', 'Abakan', 'RUS', 'Hakassia', '169200'), +('3684', 'Maikop', 'RUS', 'Adygea', '167300'), +('3685', 'Miass', 'RUS', 'Tšeljabinsk', '166200'), +('3686', 'Armavir', 'RUS', 'Krasnodar', '164900'), +('3687', 'Ljubertsy', 'RUS', 'Moskova', '163900'), +('3688', 'Rubtsovsk', 'RUS', 'Altai', '162600'), +('3689', 'Kovrov', 'RUS', 'Vladimir', '159900'), +('3690', 'Nahodka', 'RUS', 'Primorje', '157700'), +('3691', 'Ussurijsk', 'RUS', 'Primorje', '157300'), +('3692', 'Salavat', 'RUS', 'Baškortostan', '156800'), +('3693', 'Mytištši', 'RUS', 'Moskova', '155700'), +('3694', 'Kolomna', 'RUS', 'Moskova', '150700'), +('3695', 'Elektrostal', 'RUS', 'Moskova', '147000'), +('3696', 'Murom', 'RUS', 'Vladimir', '142400'), +('3697', 'Kolpino', 'RUS', 'Pietari', '141200'), +('3698', 'Norilsk', 'RUS', 'Krasnojarsk', '140800'), +('3699', 'Almetjevsk', 'RUS', 'Tatarstan', '140700'), +('3700', 'Novomoskovsk', 'RUS', 'Tula', '138100'), +('3701', 'Dimitrovgrad', 'RUS', 'Uljanovsk', '137000'), +('3702', 'Pervouralsk', 'RUS', 'Sverdlovsk', '136100'), +('3703', 'Himki', 'RUS', 'Moskova', '133700'), +('3704', 'Balašiha', 'RUS', 'Moskova', '132900'), +('3705', 'Nevinnomyssk', 'RUS', 'Stavropol', '132600'), +('3706', 'Pjatigorsk', 'RUS', 'Stavropol', '132500'), +('3707', 'Korolev', 'RUS', 'Moskova', '132400'), +('3708', 'Serpuhov', 'RUS', 'Moskova', '132000'), +('3709', 'Odintsovo', 'RUS', 'Moskova', '127400'), +('3710', 'Orehovo-Zujevo', 'RUS', 'Moskova', '124900'), +('3711', 'Kamyšin', 'RUS', 'Volgograd', '124600'), +('3712', 'Novotšeboksarsk', 'RUS', 'Tšuvassia', '123400'), +('3713', 'Tšerkessk', 'RUS', 'Karatšai-Tšerkessia', '121700'), +('3714', 'Atšinsk', 'RUS', 'Krasnojarsk', '121600'), +('3715', 'Magadan', 'RUS', 'Magadan', '121000'), +('3716', 'Mitšurinsk', 'RUS', 'Tambov', '120700'), +('3717', 'Kislovodsk', 'RUS', 'Stavropol', '120400'), +('3718', 'Jelets', 'RUS', 'Lipetsk', '119400'), +('3719', 'Seversk', 'RUS', 'Tomsk', '118600'), +('3720', 'Noginsk', 'RUS', 'Moskova', '117200'), +('3721', 'Velikije Luki', 'RUS', 'Pihkova', '116300'), +('3722', 'Novokuibyševsk', 'RUS', 'Samara', '116200'), +('3723', 'Neftekamsk', 'RUS', 'Baškortostan', '115700'), +('3724', 'Leninsk-Kuznetski', 'RUS', 'Kemerovo', '113800'), +('3725', 'Oktjabrski', 'RUS', 'Baškortostan', '111500'), +('3726', 'Sergijev Posad', 'RUS', 'Moskova', '111100'), +('3727', 'Arzamas', 'RUS', 'Nizni Novgorod', '110700'), +('3728', 'Kiseljovsk', 'RUS', 'Kemerovo', '110000'), +('3729', 'Novotroitsk', 'RUS', 'Orenburg', '109600'), +('3730', 'Obninsk', 'RUS', 'Kaluga', '108300'), +('3731', 'Kansk', 'RUS', 'Krasnojarsk', '107400'), +('3732', 'Glazov', 'RUS', 'Udmurtia', '106300'), +('3733', 'Solikamsk', 'RUS', 'Perm', '106000'), +('3734', 'Sarapul', 'RUS', 'Udmurtia', '105700'), +('3735', 'Ust-Ilimsk', 'RUS', 'Irkutsk', '105200'), +('3736', 'Štšolkovo', 'RUS', 'Moskova', '104900'), +('3737', 'Mezduretšensk', 'RUS', 'Kemerovo', '104400'), +('3738', 'Usolje-Sibirskoje', 'RUS', 'Irkutsk', '103500'), +('3739', 'Elista', 'RUS', 'Kalmykia', '103300'), +('3740', 'Novošahtinsk', 'RUS', 'Rostov-na-Donu', '101900'), +('3741', 'Votkinsk', 'RUS', 'Udmurtia', '101700'), +('3742', 'Kyzyl', 'RUS', 'Tyva', '101100'), +('3743', 'Serov', 'RUS', 'Sverdlovsk', '100400'), +('3744', 'Zelenodolsk', 'RUS', 'Tatarstan', '100200'), +('3745', 'Zeleznodoroznyi', 'RUS', 'Moskova', '100100'), +('3746', 'Kinešma', 'RUS', 'Ivanovo', '100000'), +('3747', 'Kuznetsk', 'RUS', 'Penza', '98200'), +('3748', 'Uhta', 'RUS', 'Komi', '98000'), +('3749', 'Jessentuki', 'RUS', 'Stavropol', '97900'), +('3750', 'Tobolsk', 'RUS', 'Tjumen', '97600'), +('3751', 'Neftejugansk', 'RUS', 'Hanti-Mansia', '97400'), +('3752', 'Bataisk', 'RUS', 'Rostov-na-Donu', '97300'), +('3753', 'Nojabrsk', 'RUS', 'Yamalin Nenetsia', '97300'), +('3754', 'Balašov', 'RUS', 'Saratov', '97100'), +('3755', 'Zeleznogorsk', 'RUS', 'Kursk', '96900'), +('3756', 'Zukovski', 'RUS', 'Moskova', '96500'), +('3757', 'Anzero-Sudzensk', 'RUS', 'Kemerovo', '96100'), +('3758', 'Bugulma', 'RUS', 'Tatarstan', '94100'), +('3759', 'Zeleznogorsk', 'RUS', 'Krasnojarsk', '94000'), +('3760', 'Novouralsk', 'RUS', 'Sverdlovsk', '93300'), +('3761', 'Puškin', 'RUS', 'Pietari', '92900'), +('3762', 'Vorkuta', 'RUS', 'Komi', '92600'), +('3763', 'Derbent', 'RUS', 'Dagestan', '92300'), +('3764', 'Kirovo-Tšepetsk', 'RUS', 'Kirov', '91600'), +('3765', 'Krasnogorsk', 'RUS', 'Moskova', '91000'), +('3766', 'Klin', 'RUS', 'Moskova', '90000'), +('3767', 'Tšaikovski', 'RUS', 'Perm', '90000'), +('3768', 'Novyi Urengoi', 'RUS', 'Yamalin Nenetsia', '89800'), +('3769', 'Ho Chi Minh City', 'VNM', 'Ho Chi Minh City', '3980000'), +('3770', 'Hanoi', 'VNM', 'Hanoi', '1410000'), +('3771', 'Haiphong', 'VNM', 'Haiphong', '783133'), +('3772', 'Da Nang', 'VNM', 'Quang Nam-Da Nang', '382674'), +('3773', 'Bięn Hoa', 'VNM', 'Dong Nai', '282095'), +('3774', 'Nha Trang', 'VNM', 'Khanh Hoa', '221331'), +('3775', 'Hue', 'VNM', 'Thua Thien-Hue', '219149'), +('3776', 'Can Tho', 'VNM', 'Can Tho', '215587'), +('3777', 'Cam Pha', 'VNM', 'Quang Binh', '209086'), +('3778', 'Nam Dinh', 'VNM', 'Nam Ha', '171699'), +('3779', 'Quy Nhon', 'VNM', 'Binh Dinh', '163385'), +('3780', 'Vung Tau', 'VNM', 'Ba Ria-Vung Tau', '145145'), +('3781', 'Rach Gia', 'VNM', 'Kien Giang', '141132'), +('3782', 'Long Xuyen', 'VNM', 'An Giang', '132681'), +('3783', 'Thai Nguyen', 'VNM', 'Bac Thai', '127643'), +('3784', 'Hong Gai', 'VNM', 'Quang Ninh', '127484'), +('3785', 'Phan Thięt', 'VNM', 'Binh Thuan', '114236'), +('3786', 'Cam Ranh', 'VNM', 'Khanh Hoa', '114041'), +('3787', 'Vinh', 'VNM', 'Nghe An', '112455'), +('3788', 'My Tho', 'VNM', 'Tien Giang', '108404'), +('3789', 'Da Lat', 'VNM', 'Lam Dong', '106409'), +('3790', 'Buon Ma Thuot', 'VNM', 'Dac Lac', '97044'), +('3791', 'Tallinn', 'EST', 'Harjumaa', '403981'), +('3792', 'Tartu', 'EST', 'Tartumaa', '101246'), +('3793', 'New York', 'USA', 'New York', '8008278'), +('3794', 'Los Angeles', 'USA', 'California', '3694820'), +('3795', 'Chicago', 'USA', 'Illinois', '2896016'), +('3796', 'Houston', 'USA', 'Texas', '1953631'), +('3797', 'Philadelphia', 'USA', 'Pennsylvania', '1517550'), +('3798', 'Phoenix', 'USA', 'Arizona', '1321045'), +('3799', 'San Diego', 'USA', 'California', '1223400'), +('3800', 'Dallas', 'USA', 'Texas', '1188580'), +('3801', 'San Antonio', 'USA', 'Texas', '1144646'), +('3802', 'Detroit', 'USA', 'Michigan', '951270'), +('3803', 'San Jose', 'USA', 'California', '894943'), +('3804', 'Indianapolis', 'USA', 'Indiana', '791926'), +('3805', 'San Francisco', 'USA', 'California', '776733'), +('3806', 'Jacksonville', 'USA', 'Florida', '735167'), +('3807', 'Columbus', 'USA', 'Ohio', '711470'), +('3808', 'Austin', 'USA', 'Texas', '656562'), +('3809', 'Baltimore', 'USA', 'Maryland', '651154'), +('3810', 'Memphis', 'USA', 'Tennessee', '650100'), +('3811', 'Milwaukee', 'USA', 'Wisconsin', '596974'), +('3812', 'Boston', 'USA', 'Massachusetts', '589141'), +('3813', 'Washington', 'USA', 'District of Columbia', '572059'), +('3814', 'Nashville-Davidson', 'USA', 'Tennessee', '569891'), +('3815', 'El Paso', 'USA', 'Texas', '563662'), +('3816', 'Seattle', 'USA', 'Washington', '563374'), +('3817', 'Denver', 'USA', 'Colorado', '554636'), +('3818', 'Charlotte', 'USA', 'North Carolina', '540828'), +('3819', 'Fort Worth', 'USA', 'Texas', '534694'), +('3820', 'Portland', 'USA', 'Oregon', '529121'), +('3821', 'Oklahoma City', 'USA', 'Oklahoma', '506132'), +('3822', 'Tucson', 'USA', 'Arizona', '486699'), +('3823', 'New Orleans', 'USA', 'Louisiana', '484674'), +('3824', 'Las Vegas', 'USA', 'Nevada', '478434'), +('3825', 'Cleveland', 'USA', 'Ohio', '478403'), +('3826', 'Long Beach', 'USA', 'California', '461522'), +('3827', 'Albuquerque', 'USA', 'New Mexico', '448607'), +('3828', 'Kansas City', 'USA', 'Missouri', '441545'), +('3829', 'Fresno', 'USA', 'California', '427652'), +('3830', 'Virginia Beach', 'USA', 'Virginia', '425257'), +('3831', 'Atlanta', 'USA', 'Georgia', '416474'), +('3832', 'Sacramento', 'USA', 'California', '407018'), +('3833', 'Oakland', 'USA', 'California', '399484'), +('3834', 'Mesa', 'USA', 'Arizona', '396375'), +('3835', 'Tulsa', 'USA', 'Oklahoma', '393049'), +('3836', 'Omaha', 'USA', 'Nebraska', '390007'), +('3837', 'Minneapolis', 'USA', 'Minnesota', '382618'), +('3838', 'Honolulu', 'USA', 'Hawaii', '371657'), +('3839', 'Miami', 'USA', 'Florida', '362470'), +('3840', 'Colorado Springs', 'USA', 'Colorado', '360890'), +('3841', 'Saint Louis', 'USA', 'Missouri', '348189'), +('3842', 'Wichita', 'USA', 'Kansas', '344284'), +('3843', 'Santa Ana', 'USA', 'California', '337977'), +('3844', 'Pittsburgh', 'USA', 'Pennsylvania', '334563'), +('3845', 'Arlington', 'USA', 'Texas', '332969'), +('3846', 'Cincinnati', 'USA', 'Ohio', '331285'), +('3847', 'Anaheim', 'USA', 'California', '328014'), +('3848', 'Toledo', 'USA', 'Ohio', '313619'), +('3849', 'Tampa', 'USA', 'Florida', '303447'), +('3850', 'Buffalo', 'USA', 'New York', '292648'), +('3851', 'Saint Paul', 'USA', 'Minnesota', '287151'), +('3852', 'Corpus Christi', 'USA', 'Texas', '277454'), +('3853', 'Aurora', 'USA', 'Colorado', '276393'), +('3854', 'Raleigh', 'USA', 'North Carolina', '276093'), +('3855', 'Newark', 'USA', 'New Jersey', '273546'), +('3856', 'Lexington-Fayette', 'USA', 'Kentucky', '260512'), +('3857', 'Anchorage', 'USA', 'Alaska', '260283'), +('3858', 'Louisville', 'USA', 'Kentucky', '256231'), +('3859', 'Riverside', 'USA', 'California', '255166'), +('3860', 'Saint Petersburg', 'USA', 'Florida', '248232'), +('3861', 'Bakersfield', 'USA', 'California', '247057'), +('3862', 'Stockton', 'USA', 'California', '243771'), +('3863', 'Birmingham', 'USA', 'Alabama', '242820'), +('3864', 'Jersey City', 'USA', 'New Jersey', '240055'), +('3865', 'Norfolk', 'USA', 'Virginia', '234403'), +('3866', 'Baton Rouge', 'USA', 'Louisiana', '227818'), +('3867', 'Hialeah', 'USA', 'Florida', '226419'), +('3868', 'Lincoln', 'USA', 'Nebraska', '225581'), +('3869', 'Greensboro', 'USA', 'North Carolina', '223891'), +('3870', 'Plano', 'USA', 'Texas', '222030'), +('3871', 'Rochester', 'USA', 'New York', '219773'), +('3872', 'Glendale', 'USA', 'Arizona', '218812'), +('3873', 'Akron', 'USA', 'Ohio', '217074'), +('3874', 'Garland', 'USA', 'Texas', '215768'), +('3875', 'Madison', 'USA', 'Wisconsin', '208054'), +('3876', 'Fort Wayne', 'USA', 'Indiana', '205727'), +('3877', 'Fremont', 'USA', 'California', '203413'), +('3878', 'Scottsdale', 'USA', 'Arizona', '202705'), +('3879', 'Montgomery', 'USA', 'Alabama', '201568'), +('3880', 'Shreveport', 'USA', 'Louisiana', '200145'), +('3881', 'Augusta-Richmond County', 'USA', 'Georgia', '199775'), +('3882', 'Lubbock', 'USA', 'Texas', '199564'), +('3883', 'Chesapeake', 'USA', 'Virginia', '199184'), +('3884', 'Mobile', 'USA', 'Alabama', '198915'), +('3885', 'Des Moines', 'USA', 'Iowa', '198682'), +('3886', 'Grand Rapids', 'USA', 'Michigan', '197800'), +('3887', 'Richmond', 'USA', 'Virginia', '197790'), +('3888', 'Yonkers', 'USA', 'New York', '196086'), +('3889', 'Spokane', 'USA', 'Washington', '195629'), +('3890', 'Glendale', 'USA', 'California', '194973'), +('3891', 'Tacoma', 'USA', 'Washington', '193556'), +('3892', 'Irving', 'USA', 'Texas', '191615'), +('3893', 'Huntington Beach', 'USA', 'California', '189594'), +('3894', 'Modesto', 'USA', 'California', '188856'), +('3895', 'Durham', 'USA', 'North Carolina', '187035'), +('3896', 'Columbus', 'USA', 'Georgia', '186291'), +('3897', 'Orlando', 'USA', 'Florida', '185951'), +('3898', 'Boise City', 'USA', 'Idaho', '185787'), +('3899', 'Winston-Salem', 'USA', 'North Carolina', '185776'), +('3900', 'San Bernardino', 'USA', 'California', '185401'), +('3901', 'Jackson', 'USA', 'Mississippi', '184256'), +('3902', 'Little Rock', 'USA', 'Arkansas', '183133'), +('3903', 'Salt Lake City', 'USA', 'Utah', '181743'), +('3904', 'Reno', 'USA', 'Nevada', '180480'), +('3905', 'Newport News', 'USA', 'Virginia', '180150'), +('3906', 'Chandler', 'USA', 'Arizona', '176581'), +('3907', 'Laredo', 'USA', 'Texas', '176576'), +('3908', 'Henderson', 'USA', 'Nevada', '175381'), +('3909', 'Arlington', 'USA', 'Virginia', '174838'), +('3910', 'Knoxville', 'USA', 'Tennessee', '173890'), +('3911', 'Amarillo', 'USA', 'Texas', '173627'), +('3912', 'Providence', 'USA', 'Rhode Island', '173618'), +('3913', 'Chula Vista', 'USA', 'California', '173556'), +('3914', 'Worcester', 'USA', 'Massachusetts', '172648'), +('3915', 'Oxnard', 'USA', 'California', '170358'), +('3916', 'Dayton', 'USA', 'Ohio', '166179'), +('3917', 'Garden Grove', 'USA', 'California', '165196'), +('3918', 'Oceanside', 'USA', 'California', '161029'), +('3919', 'Tempe', 'USA', 'Arizona', '158625'), +('3920', 'Huntsville', 'USA', 'Alabama', '158216'), +('3921', 'Ontario', 'USA', 'California', '158007'), +('3922', 'Chattanooga', 'USA', 'Tennessee', '155554'), +('3923', 'Fort Lauderdale', 'USA', 'Florida', '152397'), +('3924', 'Springfield', 'USA', 'Massachusetts', '152082'), +('3925', 'Springfield', 'USA', 'Missouri', '151580'), +('3926', 'Santa Clarita', 'USA', 'California', '151088'), +('3927', 'Salinas', 'USA', 'California', '151060'), +('3928', 'Tallahassee', 'USA', 'Florida', '150624'), +('3929', 'Rockford', 'USA', 'Illinois', '150115'), +('3930', 'Pomona', 'USA', 'California', '149473'), +('3931', 'Metairie', 'USA', 'Louisiana', '149428'), +('3932', 'Paterson', 'USA', 'New Jersey', '149222'), +('3933', 'Overland Park', 'USA', 'Kansas', '149080'), +('3934', 'Santa Rosa', 'USA', 'California', '147595'), +('3935', 'Syracuse', 'USA', 'New York', '147306'), +('3936', 'Kansas City', 'USA', 'Kansas', '146866'), +('3937', 'Hampton', 'USA', 'Virginia', '146437'), +('3938', 'Lakewood', 'USA', 'Colorado', '144126'), +('3939', 'Vancouver', 'USA', 'Washington', '143560'), +('3940', 'Irvine', 'USA', 'California', '143072'), +('3941', 'Aurora', 'USA', 'Illinois', '142990'), +('3942', 'Moreno Valley', 'USA', 'California', '142381'), +('3943', 'Pasadena', 'USA', 'California', '141674'), +('3944', 'Hayward', 'USA', 'California', '140030'), +('3945', 'Brownsville', 'USA', 'Texas', '139722'), +('3946', 'Bridgeport', 'USA', 'Connecticut', '139529'), +('3947', 'Hollywood', 'USA', 'Florida', '139357'), +('3948', 'Warren', 'USA', 'Michigan', '138247'), +('3949', 'Torrance', 'USA', 'California', '137946'), +('3950', 'Eugene', 'USA', 'Oregon', '137893'), +('3951', 'Pembroke Pines', 'USA', 'Florida', '137427'), +('3952', 'Salem', 'USA', 'Oregon', '136924'), +('3953', 'Pasadena', 'USA', 'Texas', '133936'), +('3954', 'Escondido', 'USA', 'California', '133559'), +('3955', 'Sunnyvale', 'USA', 'California', '131760'), +('3956', 'Savannah', 'USA', 'Georgia', '131510'), +('3957', 'Fontana', 'USA', 'California', '128929'), +('3958', 'Orange', 'USA', 'California', '128821'), +('3959', 'Naperville', 'USA', 'Illinois', '128358'), +('3960', 'Alexandria', 'USA', 'Virginia', '128283'), +('3961', 'Rancho Cucamonga', 'USA', 'California', '127743'), +('3962', 'Grand Prairie', 'USA', 'Texas', '127427'), +('3963', 'East Los Angeles', 'USA', 'California', '126379'), +('3964', 'Fullerton', 'USA', 'California', '126003'), +('3965', 'Corona', 'USA', 'California', '124966'), +('3966', 'Flint', 'USA', 'Michigan', '124943'), +('3967', 'Paradise', 'USA', 'Nevada', '124682'), +('3968', 'Mesquite', 'USA', 'Texas', '124523'), +('3969', 'Sterling Heights', 'USA', 'Michigan', '124471'), +('3970', 'Sioux Falls', 'USA', 'South Dakota', '123975'), +('3971', 'New Haven', 'USA', 'Connecticut', '123626'), +('3972', 'Topeka', 'USA', 'Kansas', '122377'), +('3973', 'Concord', 'USA', 'California', '121780'), +('3974', 'Evansville', 'USA', 'Indiana', '121582'), +('3975', 'Hartford', 'USA', 'Connecticut', '121578'), +('3976', 'Fayetteville', 'USA', 'North Carolina', '121015'), +('3977', 'Cedar Rapids', 'USA', 'Iowa', '120758'), +('3978', 'Elizabeth', 'USA', 'New Jersey', '120568'), +('3979', 'Lansing', 'USA', 'Michigan', '119128'), +('3980', 'Lancaster', 'USA', 'California', '118718'), +('3981', 'Fort Collins', 'USA', 'Colorado', '118652'), +('3982', 'Coral Springs', 'USA', 'Florida', '117549'), +('3983', 'Stamford', 'USA', 'Connecticut', '117083'), +('3984', 'Thousand Oaks', 'USA', 'California', '117005'), +('3985', 'Vallejo', 'USA', 'California', '116760'), +('3986', 'Palmdale', 'USA', 'California', '116670'), +('3987', 'Columbia', 'USA', 'South Carolina', '116278'), +('3988', 'El Monte', 'USA', 'California', '115965'), +('3989', 'Abilene', 'USA', 'Texas', '115930'), +('3990', 'North Las Vegas', 'USA', 'Nevada', '115488'), +('3991', 'Ann Arbor', 'USA', 'Michigan', '114024'), +('3992', 'Beaumont', 'USA', 'Texas', '113866'), +('3993', 'Waco', 'USA', 'Texas', '113726'), +('3994', 'Macon', 'USA', 'Georgia', '113336'), +('3995', 'Independence', 'USA', 'Missouri', '113288'), +('3996', 'Peoria', 'USA', 'Illinois', '112936'), +('3997', 'Inglewood', 'USA', 'California', '112580'), +('3998', 'Springfield', 'USA', 'Illinois', '111454'), +('3999', 'Simi Valley', 'USA', 'California', '111351'); + +INSERT INTO city (id, name, countrycode, district, population) VALUES +('4000', 'Lafayette', 'USA', 'Louisiana', '110257'), +('4001', 'Gilbert', 'USA', 'Arizona', '109697'), +('4002', 'Carrollton', 'USA', 'Texas', '109576'), +('4003', 'Bellevue', 'USA', 'Washington', '109569'), +('4004', 'West Valley City', 'USA', 'Utah', '108896'), +('4005', 'Clarksville', 'USA', 'Tennessee', '108787'), +('4006', 'Costa Mesa', 'USA', 'California', '108724'), +('4007', 'Peoria', 'USA', 'Arizona', '108364'), +('4008', 'South Bend', 'USA', 'Indiana', '107789'), +('4009', 'Downey', 'USA', 'California', '107323'), +('4010', 'Waterbury', 'USA', 'Connecticut', '107271'), +('4011', 'Manchester', 'USA', 'New Hampshire', '107006'), +('4012', 'Allentown', 'USA', 'Pennsylvania', '106632'), +('4013', 'McAllen', 'USA', 'Texas', '106414'), +('4014', 'Joliet', 'USA', 'Illinois', '106221'), +('4015', 'Lowell', 'USA', 'Massachusetts', '105167'), +('4016', 'Provo', 'USA', 'Utah', '105166'), +('4017', 'West Covina', 'USA', 'California', '105080'), +('4018', 'Wichita Falls', 'USA', 'Texas', '104197'), +('4019', 'Erie', 'USA', 'Pennsylvania', '103717'), +('4020', 'Daly City', 'USA', 'California', '103621'), +('4021', 'Citrus Heights', 'USA', 'California', '103455'), +('4022', 'Norwalk', 'USA', 'California', '103298'), +('4023', 'Gary', 'USA', 'Indiana', '102746'), +('4024', 'Berkeley', 'USA', 'California', '102743'), +('4025', 'Santa Clara', 'USA', 'California', '102361'), +('4026', 'Green Bay', 'USA', 'Wisconsin', '102313'), +('4027', 'Cape Coral', 'USA', 'Florida', '102286'), +('4028', 'Arvada', 'USA', 'Colorado', '102153'), +('4029', 'Pueblo', 'USA', 'Colorado', '102121'), +('4030', 'Sandy', 'USA', 'Utah', '101853'), +('4031', 'Athens-Clarke County', 'USA', 'Georgia', '101489'), +('4032', 'Cambridge', 'USA', 'Massachusetts', '101355'), +('4033', 'Westminster', 'USA', 'Colorado', '100940'), +('4034', 'San Buenaventura', 'USA', 'California', '100916'), +('4035', 'Portsmouth', 'USA', 'Virginia', '100565'), +('4036', 'Livonia', 'USA', 'Michigan', '100545'), +('4037', 'Burbank', 'USA', 'California', '100316'), +('4038', 'Clearwater', 'USA', 'Florida', '99936'), +('4039', 'Midland', 'USA', 'Texas', '98293'), +('4040', 'Davenport', 'USA', 'Iowa', '98256'), +('4041', 'Mission Viejo', 'USA', 'California', '98049'), +('4042', 'Miami Beach', 'USA', 'Florida', '97855'), +('4043', 'Sunrise Manor', 'USA', 'Nevada', '95362'), +('4044', 'New Bedford', 'USA', 'Massachusetts', '94780'), +('4045', 'El Cajon', 'USA', 'California', '94578'), +('4046', 'Norman', 'USA', 'Oklahoma', '94193'), +('4047', 'Richmond', 'USA', 'California', '94100'), +('4048', 'Albany', 'USA', 'New York', '93994'), +('4049', 'Brockton', 'USA', 'Massachusetts', '93653'), +('4050', 'Roanoke', 'USA', 'Virginia', '93357'), +('4051', 'Billings', 'USA', 'Montana', '92988'), +('4052', 'Compton', 'USA', 'California', '92864'), +('4053', 'Gainesville', 'USA', 'Florida', '92291'), +('4054', 'Fairfield', 'USA', 'California', '92256'), +('4055', 'Arden-Arcade', 'USA', 'California', '92040'), +('4056', 'San Mateo', 'USA', 'California', '91799'), +('4057', 'Visalia', 'USA', 'California', '91762'), +('4058', 'Boulder', 'USA', 'Colorado', '91238'), +('4059', 'Cary', 'USA', 'North Carolina', '91213'), +('4060', 'Santa Monica', 'USA', 'California', '91084'), +('4061', 'Fall River', 'USA', 'Massachusetts', '90555'), +('4062', 'Kenosha', 'USA', 'Wisconsin', '89447'), +('4063', 'Elgin', 'USA', 'Illinois', '89408'), +('4064', 'Odessa', 'USA', 'Texas', '89293'), +('4065', 'Carson', 'USA', 'California', '89089'), +('4066', 'Charleston', 'USA', 'South Carolina', '89063'), +('4067', 'Charlotte Amalie', 'VIR', 'St Thomas', '13000'), +('4068', 'Harare', 'ZWE', 'Harare', '1410000'), +('4069', 'Bulawayo', 'ZWE', 'Bulawayo', '621742'), +('4070', 'Chitungwiza', 'ZWE', 'Harare', '274912'), +('4071', 'Mount Darwin', 'ZWE', 'Harare', '164362'), +('4072', 'Mutare', 'ZWE', 'Manicaland', '131367'), +('4073', 'Gweru', 'ZWE', 'Midlands', '128037'), +('4074', 'Gaza', 'PSE', 'Gaza', '353632'), +('4075', 'Khan Yunis', 'PSE', 'Khan Yunis', '123175'), +('4076', 'Hebron', 'PSE', 'Hebron', '119401'), +('4077', 'Jabaliya', 'PSE', 'North Gaza', '113901'), +('4078', 'Nablus', 'PSE', 'Nablus', '100231'), +('4079', 'Rafah', 'PSE', 'Rafah', '92020'); + +-- +-- Data for Name: country; Type: TABLE DATA; Schema: public; Owner: chriskl +-- +INSERT INTO country (code, name, continent, region, surfacearea, indepyear, population, lifeexpectancy, gnp, gnpold, localname, governmentform, headofstate, capital, code2) VALUES +('AFG', 'Afghanistan', 'Asia', 'Southern and Central Asia', '652090', '1919', '22720000', '45.900002', '5976.00', NULL, 'Afganistan/Afqanestan', 'Islamic Emirate', 'Mohammad Omar', '1', 'AF'), +('NLD', 'Netherlands', 'Europe', 'Western Europe', '41526', '1581', '15864000', '78.300003', '371362.00', '360478.00', 'Nederland', 'Constitutional Monarchy', 'Beatrix', '5', 'NL'), +('ANT', 'Netherlands Antilles', 'North America', 'Caribbean', '800', NULL, '217000', '74.699997', '1941.00', NULL, 'Nederlandse Antillen', 'Nonmetropolitan Territory of The Netherlands', 'Beatrix', '33', 'AN'), +('ALB', 'Albania', 'Europe', 'Southern Europe', '28748', '1912', '3401200', '71.599998', '3205.00', '2500.00', 'Shqipëria', 'Republic', 'Rexhep Mejdani', '34', 'AL'), +('DZA', 'Algeria', 'Africa', 'Northern Africa', '2381741', '1962', '31471000', '69.699997', '49982.00', '46966.00', 'Al-Jaza’ir/Algérie', 'Republic', 'Abdelaziz Bouteflika', '35', 'DZ'), +('ASM', 'American Samoa', 'Oceania', 'Polynesia', '199', NULL, '68000', '75.099998', '334.00', NULL, 'Amerika Samoa', 'US Territory', 'George W. Bush', '54', 'AS'), +('AND', 'Andorra', 'Europe', 'Southern Europe', '468', '1278', '78000', '83.5', '1630.00', NULL, 'Andorra', 'Parliamentary Coprincipality', '', '55', 'AD'), +('AGO', 'Angola', 'Africa', 'Central Africa', '1246700', '1975', '12878000', '38.299999', '6648.00', '7984.00', 'Angola', 'Republic', 'José Eduardo dos Santos', '56', 'AO'), +('AIA', 'Anguilla', 'North America', 'Caribbean', '96', NULL, '8000', '76.099998', '63.20', NULL, 'Anguilla', 'Dependent Territory of the UK', 'Elisabeth II', '62', 'AI'), +('ATG', 'Antigua and Barbuda', 'North America', 'Caribbean', '442', '1981', '68000', '70.5', '612.00', '584.00', 'Antigua and Barbuda', 'Constitutional Monarchy', 'Elisabeth II', '63', 'AG'), +('ARE', 'United Arab Emirates', 'Asia', 'Middle East', '83600', '1971', '2441000', '74.099998', '37966.00', '36846.00', 'Al-Imarat al-´Arabiya al-Muttahida', 'Emirate Federation', 'Zayid bin Sultan al-Nahayan', '65', 'AE'), +('ARG', 'Argentina', 'South America', 'South America', '2780400', '1816', '37032000', '75.099998', '340238.00', '323310.00', 'Argentina', 'Federal Republic', 'Fernando de la Rúa', '69', 'AR'), +('ARM', 'Armenia', 'Asia', 'Middle East', '29800', '1991', '3520000', '66.400002', '1813.00', '1627.00', 'Hajastan', 'Republic', 'Robert Kotšarjan', '126', 'AM'), +('ABW', 'Aruba', 'North America', 'Caribbean', '193', NULL, '103000', '78.400002', '828.00', '793.00', 'Aruba', 'Nonmetropolitan Territory of The Netherlands', 'Beatrix', '129', 'AW'), +('AUS', 'Australia', 'Oceania', 'Australia and New Zealand', '7741220', '1901', '18886000', '79.800003', '351182.00', '392911.00', 'Australia', 'Constitutional Monarchy, Federation', 'Elisabeth II', '135', 'AU'), +('AZE', 'Azerbaijan', 'Asia', 'Middle East', '86600', '1991', '7734000', '62.900002', '4127.00', '4100.00', 'Azärbaycan', 'Federal Republic', 'Heydär Äliyev', '144', 'AZ'), +('BHS', 'Bahamas', 'North America', 'Caribbean', '13878', '1973', '307000', '71.099998', '3527.00', '3347.00', 'The Bahamas', 'Constitutional Monarchy', 'Elisabeth II', '148', 'BS'), +('BHR', 'Bahrain', 'Asia', 'Middle East', '694', '1971', '617000', '73', '6366.00', '6097.00', 'Al-Bahrayn', 'Monarchy (Emirate)', 'Hamad ibn Isa al-Khalifa', '149', 'BH'), +('BGD', 'Bangladesh', 'Asia', 'Southern and Central Asia', '143998', '1971', '129155000', '60.200001', '32852.00', '31966.00', 'Bangladesh', 'Republic', 'Shahabuddin Ahmad', '150', 'BD'), +('BRB', 'Barbados', 'North America', 'Caribbean', '430', '1966', '270000', '73', '2223.00', '2186.00', 'Barbados', 'Constitutional Monarchy', 'Elisabeth II', '174', 'BB'), +('BEL', 'Belgium', 'Europe', 'Western Europe', '30518', '1830', '10239000', '77.800003', '249704.00', '243948.00', 'België/Belgique', 'Constitutional Monarchy, Federation', 'Albert II', '179', 'BE'), +('BLZ', 'Belize', 'North America', 'Central America', '22696', '1981', '241000', '70.900002', '630.00', '616.00', 'Belize', 'Constitutional Monarchy', 'Elisabeth II', '185', 'BZ'), +('BEN', 'Benin', 'Africa', 'Western Africa', '112622', '1960', '6097000', '50.200001', '2357.00', '2141.00', 'Bénin', 'Republic', 'Mathieu Kérékou', '187', 'BJ'), +('BMU', 'Bermuda', 'North America', 'North America', '53', NULL, '65000', '76.900002', '2328.00', '2190.00', 'Bermuda', 'Dependent Territory of the UK', 'Elisabeth II', '191', 'BM'), +('BTN', 'Bhutan', 'Asia', 'Southern and Central Asia', '47000', '1910', '2124000', '52.400002', '372.00', '383.00', 'Druk-Yul', 'Monarchy', 'Jigme Singye Wangchuk', '192', 'BT'), +('BOL', 'Bolivia', 'South America', 'South America', '1098581', '1825', '8329000', '63.700001', '8571.00', '7967.00', 'Bolivia', 'Republic', 'Hugo Bánzer Suárez', '194', 'BO'), +('BIH', 'Bosnia and Herzegovina', 'Europe', 'Southern Europe', '51197', '1992', '3972000', '71.5', '2841.00', NULL, 'Bosna i Hercegovina', 'Federal Republic', 'Ante Jelavic', '201', 'BA'), +('BWA', 'Botswana', 'Africa', 'Southern Africa', '581730', '1966', '1622000', '39.299999', '4834.00', '4935.00', 'Botswana', 'Republic', 'Festus G. Mogae', '204', 'BW'), +('BRA', 'Brazil', 'South America', 'South America', '8547403', '1822', '170115000', '62.900002', '776739.00', '804108.00', 'Brasil', 'Federal Republic', 'Fernando Henrique Cardoso', '211', 'BR'), +('GBR', 'United Kingdom', 'Europe', 'British Islands', '242900', '1066', '59623400', '77.699997', '1378330.00', '1296830.00', 'United Kingdom', 'Constitutional Monarchy', 'Elisabeth II', '456', 'GB'), +('VGB', 'Virgin Islands, British', 'North America', 'Caribbean', '151', NULL, '21000', '75.400002', '612.00', '573.00', 'British Virgin Islands', 'Dependent Territory of the UK', 'Elisabeth II', '537', 'VG'), +('BRN', 'Brunei', 'Asia', 'Southeast Asia', '5765', '1984', '328000', '73.599998', '11705.00', '12460.00', 'Brunei Darussalam', 'Monarchy (Sultanate)', 'Haji Hassan al-Bolkiah', '538', 'BN'), +('BGR', 'Bulgaria', 'Europe', 'Eastern Europe', '110994', '1908', '8190900', '70.900002', '12178.00', '10169.00', 'Balgarija', 'Republic', 'Petar Stojanov', '539', 'BG'), +('BFA', 'Burkina Faso', 'Africa', 'Western Africa', '274000', '1960', '11937000', '46.700001', '2425.00', '2201.00', 'Burkina Faso', 'Republic', 'Blaise Compaoré', '549', 'BF'), +('BDI', 'Burundi', 'Africa', 'Eastern Africa', '27834', '1962', '6695000', '46.200001', '903.00', '982.00', 'Burundi/Uburundi', 'Republic', 'Pierre Buyoya', '552', 'BI'), +('CYM', 'Cayman Islands', 'North America', 'Caribbean', '264', NULL, '38000', '78.900002', '1263.00', '1186.00', 'Cayman Islands', 'Dependent Territory of the UK', 'Elisabeth II', '553', 'KY'), +('CHL', 'Chile', 'South America', 'South America', '756626', '1810', '15211000', '75.699997', '72949.00', '75780.00', 'Chile', 'Republic', 'Ricardo Lagos Escobar', '554', 'CL'), +('COK', 'Cook Islands', 'Oceania', 'Polynesia', '236', NULL, '20000', '71.099998', '100.00', NULL, 'The Cook Islands', 'Nonmetropolitan Territory of New Zealand', 'Elisabeth II', '583', 'CK'), +('CRI', 'Costa Rica', 'North America', 'Central America', '51100', '1821', '4023000', '75.800003', '10226.00', '9757.00', 'Costa Rica', 'Republic', 'Miguel Ángel Rodríguez Echeverría', '584', 'CR'), +('DJI', 'Djibouti', 'Africa', 'Eastern Africa', '23200', '1977', '638000', '50.799999', '382.00', '373.00', 'Djibouti/Jibuti', 'Republic', 'Ismail Omar Guelleh', '585', 'DJ'), +('DMA', 'Dominica', 'North America', 'Caribbean', '751', '1978', '71000', '73.400002', '256.00', '243.00', 'Dominica', 'Republic', 'Vernon Shaw', '586', 'DM'), +('DOM', 'Dominican Republic', 'North America', 'Caribbean', '48511', '1844', '8495000', '73.199997', '15846.00', '15076.00', 'República Dominicana', 'Republic', 'Hipólito Mejía Domínguez', '587', 'DO'), +('ECU', 'Ecuador', 'South America', 'South America', '283561', '1822', '12646000', '71.099998', '19770.00', '19769.00', 'Ecuador', 'Republic', 'Gustavo Noboa Bejarano', '594', 'EC'), +('EGY', 'Egypt', 'Africa', 'Northern Africa', '1001449', '1922', '68470000', '63.299999', '82710.00', '75617.00', 'Misr', 'Republic', 'Hosni Mubarak', '608', 'EG'), +('SLV', 'El Salvador', 'North America', 'Central America', '21041', '1841', '6276000', '69.699997', '11863.00', '11203.00', 'El Salvador', 'Republic', 'Francisco Guillermo Flores Pérez', '645', 'SV'), +('ERI', 'Eritrea', 'Africa', 'Eastern Africa', '117600', '1993', '3850000', '55.799999', '650.00', '755.00', 'Ertra', 'Republic', 'Isayas Afewerki [Isaias Afwerki]', '652', 'ER'), +('ESP', 'Spain', 'Europe', 'Southern Europe', '505992', '1492', '39441700', '78.800003', '553233.00', '532031.00', 'Espańa', 'Constitutional Monarchy', 'Juan Carlos I', '653', 'ES'), +('ZAF', 'South Africa', 'Africa', 'Southern Africa', '1221037', '1910', '40377000', '51.099998', '116729.00', '129092.00', 'South Africa', 'Republic', 'Thabo Mbeki', '716', 'ZA'), +('ETH', 'Ethiopia', 'Africa', 'Eastern Africa', '1104300', '-1000', '62565000', '45.200001', '6353.00', '6180.00', 'YeItyop´iya', 'Republic', 'Negasso Gidada', '756', 'ET'), +('FLK', 'Falkland Islands', 'South America', 'South America', '12173', NULL, '2000', NULL, '0.00', NULL, 'Falkland Islands', 'Dependent Territory of the UK', 'Elisabeth II', '763', 'FK'), +('FJI', 'Fiji Islands', 'Oceania', 'Melanesia', '18274', '1970', '817000', '67.900002', '1536.00', '2149.00', 'Fiji Islands', 'Republic', 'Josefa Iloilo', '764', 'FJ'), +('PHL', 'Philippines', 'Asia', 'Southeast Asia', '300000', '1946', '75967000', '67.5', '65107.00', '82239.00', 'Pilipinas', 'Republic', 'Gloria Macapagal-Arroyo', '766', 'PH'), +('FRO', 'Faroe Islands', 'Europe', 'Nordic Countries', '1399', NULL, '43000', '78.400002', '0.00', NULL, 'Fřroyar', 'Part of Denmark', 'Margrethe II', '901', 'FO'), +('GAB', 'Gabon', 'Africa', 'Central Africa', '267668', '1960', '1226000', '50.099998', '5493.00', '5279.00', 'Le Gabon', 'Republic', 'Omar Bongo', '902', 'GA'), +('GMB', 'Gambia', 'Africa', 'Western Africa', '11295', '1965', '1305000', '53.200001', '320.00', '325.00', 'The Gambia', 'Republic', 'Yahya Jammeh', '904', 'GM'), +('GEO', 'Georgia', 'Asia', 'Middle East', '69700', '1991', '4968000', '64.5', '6064.00', '5924.00', 'Sakartvelo', 'Republic', 'Eduard Ševardnadze', '905', 'GE'), +('GHA', 'Ghana', 'Africa', 'Western Africa', '238533', '1957', '20212000', '57.400002', '7137.00', '6884.00', 'Ghana', 'Republic', 'John Kufuor', '910', 'GH'), +('GIB', 'Gibraltar', 'Europe', 'Southern Europe', '6', NULL, '25000', '79', '258.00', NULL, 'Gibraltar', 'Dependent Territory of the UK', 'Elisabeth II', '915', 'GI'), +('GRD', 'Grenada', 'North America', 'Caribbean', '344', '1974', '94000', '64.5', '318.00', NULL, 'Grenada', 'Constitutional Monarchy', 'Elisabeth II', '916', 'GD'), +('GRL', 'Greenland', 'North America', 'North America', '2166090', NULL, '56000', '68.099998', '0.00', NULL, 'Kalaallit Nunaat/Grřnland', 'Part of Denmark', 'Margrethe II', '917', 'GL'), +('GLP', 'Guadeloupe', 'North America', 'Caribbean', '1705', NULL, '456000', '77', '3501.00', NULL, 'Guadeloupe', 'Overseas Department of France', 'Jacques Chirac', '919', 'GP'), +('GUM', 'Guam', 'Oceania', 'Micronesia', '549', NULL, '168000', '77.800003', '1197.00', '1136.00', 'Guam', 'US Territory', 'George W. Bush', '921', 'GU'), +('GTM', 'Guatemala', 'North America', 'Central America', '108889', '1821', '11385000', '66.199997', '19008.00', '17797.00', 'Guatemala', 'Republic', 'Alfonso Portillo Cabrera', '922', 'GT'), +('GIN', 'Guinea', 'Africa', 'Western Africa', '245857', '1958', '7430000', '45.599998', '2352.00', '2383.00', 'Guinée', 'Republic', 'Lansana Conté', '926', 'GN'), +('GNB', 'Guinea-Bissau', 'Africa', 'Western Africa', '36125', '1974', '1213000', '49', '293.00', '272.00', 'Guiné-Bissau', 'Republic', 'Kumba Ialá', '927', 'GW'), +('GUY', 'Guyana', 'South America', 'South America', '214969', '1966', '861000', '64', '722.00', '743.00', 'Guyana', 'Republic', 'Bharrat Jagdeo', '928', 'GY'), +('HTI', 'Haiti', 'North America', 'Caribbean', '27750', '1804', '8222000', '49.200001', '3459.00', '3107.00', 'Haďti/Dayti', 'Republic', 'Jean-Bertrand Aristide', '929', 'HT'), +('HND', 'Honduras', 'North America', 'Central America', '112088', '1838', '6485000', '69.900002', '5333.00', '4697.00', 'Honduras', 'Republic', 'Carlos Roberto Flores Facussé', '933', 'HN'), +('HKG', 'Hong Kong', 'Asia', 'Eastern Asia', '1075', NULL, '6782000', '79.5', '166448.00', '173610.00', 'Xianggang/Hong Kong', 'Special Administrative Region of China', 'Jiang Zemin', '937', 'HK'), +('SJM', 'Svalbard and Jan Mayen', 'Europe', 'Nordic Countries', '62422', NULL, '3200', NULL, '0.00', NULL, 'Svalbard og Jan Mayen', 'Dependent Territory of Norway', 'Harald V', '938', 'SJ'), +('IDN', 'Indonesia', 'Asia', 'Southeast Asia', '1904569', '1945', '212107000', '68', '84982.00', '215002.00', 'Indonesia', 'Republic', 'Abdurrahman Wahid', '939', 'ID'), +('IND', 'India', 'Asia', 'Southern and Central Asia', '3287263', '1947', '1013662000', '62.5', '447114.00', '430572.00', 'Bharat/India', 'Federal Republic', 'Kocheril Raman Narayanan', '1109', 'IN'), +('IRQ', 'Iraq', 'Asia', 'Middle East', '438317', '1932', '23115000', '66.5', '11500.00', NULL, 'Al-´Iraq', 'Republic', 'Saddam Hussein al-Takriti', '1365', 'IQ'), +('IRN', 'Iran', 'Asia', 'Southern and Central Asia', '1648195', '1906', '67702000', '69.699997', '195746.00', '160151.00', 'Iran', 'Islamic Republic', 'Ali Mohammad Khatami-Ardakani', '1380', 'IR'), +('IRL', 'Ireland', 'Europe', 'British Islands', '70273', '1921', '3775100', '76.800003', '75921.00', '73132.00', 'Ireland/Éire', 'Republic', 'Mary McAleese', '1447', 'IE'), +('ISL', 'Iceland', 'Europe', 'Nordic Countries', '103000', '1944', '279000', '79.400002', '8255.00', '7474.00', 'Ísland', 'Republic', 'Ólafur Ragnar Grímsson', '1449', 'IS'), +('ISR', 'Israel', 'Asia', 'Middle East', '21056', '1948', '6217000', '78.599998', '97477.00', '98577.00', 'Yisra’el/Isra’il', 'Republic', 'Moshe Katzav', '1450', 'IL'), +('ITA', 'Italy', 'Europe', 'Southern Europe', '301316', '1861', '57680000', '79', '1161755.00', '1145372.00', 'Italia', 'Republic', 'Carlo Azeglio Ciampi', '1464', 'IT'), +('TMP', 'East Timor', 'Asia', 'Southeast Asia', '14874', NULL, '885000', '46', '0.00', NULL, 'Timor Timur', 'Administrated by the UN', 'José Alexandre Gusmăo', '1522', 'TP'), +('AUT', 'Austria', 'Europe', 'Western Europe', '83859', '1918', '8091800', '77.699997', '211860.00', '206025.00', 'Österreich', 'Federal Republic', 'Thomas Klestil', '1523', 'AT'), +('JAM', 'Jamaica', 'North America', 'Caribbean', '10990', '1962', '2583000', '75.199997', '6871.00', '6722.00', 'Jamaica', 'Constitutional Monarchy', 'Elisabeth II', '1530', 'JM'), +('JPN', 'Japan', 'Asia', 'Eastern Asia', '377829', '-660', '126714000', '80.699997', '3787042.00', '4192638.00', 'Nihon/Nippon', 'Constitutional Monarchy', 'Akihito', '1532', 'JP'), +('YEM', 'Yemen', 'Asia', 'Middle East', '527968', '1918', '18112000', '59.799999', '6041.00', '5729.00', 'Al-Yaman', 'Republic', 'Ali Abdallah Salih', '1780', 'YE'), +('JOR', 'Jordan', 'Asia', 'Middle East', '88946', '1946', '5083000', '77.400002', '7526.00', '7051.00', 'Al-Urdunn', 'Constitutional Monarchy', 'Abdullah II', '1786', 'JO'), +('CXR', 'Christmas Island', 'Oceania', 'Australia and New Zealand', '135', NULL, '2500', NULL, '0.00', NULL, 'Christmas Island', 'Territory of Australia', 'Elisabeth II', '1791', 'CX'), +('YUG', 'Yugoslavia', 'Europe', 'Southern Europe', '102173', '1918', '10640000', '72.400002', '17000.00', NULL, 'Jugoslavija', 'Federal Republic', 'Vojislav Koštunica', '1792', 'YU'), +('KHM', 'Cambodia', 'Asia', 'Southeast Asia', '181035', '1953', '11168000', '56.5', '5121.00', '5670.00', 'Kâmpuchéa', 'Constitutional Monarchy', 'Norodom Sihanouk', '1800', 'KH'), +('CMR', 'Cameroon', 'Africa', 'Central Africa', '475442', '1960', '15085000', '54.799999', '9174.00', '8596.00', 'Cameroun/Cameroon', 'Republic', 'Paul Biya', '1804', 'CM'), +('CAN', 'Canada', 'North America', 'North America', '9970610', '1867', '31147000', '79.400002', '598862.00', '625626.00', 'Canada', 'Constitutional Monarchy, Federation', 'Elisabeth II', '1822', 'CA'), +('CPV', 'Cape Verde', 'Africa', 'Western Africa', '4033', '1975', '428000', '68.900002', '435.00', '420.00', 'Cabo Verde', 'Republic', 'António Mascarenhas Monteiro', '1859', 'CV'), +('KAZ', 'Kazakstan', 'Asia', 'Southern and Central Asia', '2724900', '1991', '16223000', '63.200001', '24375.00', '23383.00', 'Qazaqstan', 'Republic', 'Nursultan Nazarbajev', '1864', 'KZ'), +('KEN', 'Kenya', 'Africa', 'Eastern Africa', '580367', '1963', '30080000', '48', '9217.00', '10241.00', 'Kenya', 'Republic', 'Daniel arap Moi', '1881', 'KE'), +('CAF', 'Central African Republic', 'Africa', 'Central Africa', '622984', '1960', '3615000', '44', '1054.00', '993.00', 'Centrafrique/Bę-Afrîka', 'Republic', 'Ange-Félix Patassé', '1889', 'CF'), +('CHN', 'China', 'Asia', 'Eastern Asia', '9572900', '-1523', '1277558000', '71.400002', '982268.00', '917719.00', 'Zhongquo', 'People''sRepublic', 'Jiang Zemin', '1891', 'CN'), +('KGZ', 'Kyrgyzstan', 'Asia', 'Southern and Central Asia', '199900', '1991', '4699000', '63.400002', '1626.00', '1767.00', 'Kyrgyzstan', 'Republic', 'Askar Akajev', '2253', 'KG'), +('KIR', 'Kiribati', 'Oceania', 'Micronesia', '726', '1979', '83000', '59.799999', '40.70', NULL, 'Kiribati', 'Republic', 'Teburoro Tito', '2256', 'KI'), +('COL', 'Colombia', 'South America', 'South America', '1138914', '1810', '42321000', '70.300003', '102896.00', '105116.00', 'Colombia', 'Republic', 'Andrés Pastrana Arango', '2257', 'CO'), +('COM', 'Comoros', 'Africa', 'Eastern Africa', '1862', '1975', '578000', '60', '4401.00', '4361.00', 'Komori/Comores', 'Republic', 'Azali Assoumani', '2295', 'KM'), +('COG', 'Congo', 'Africa', 'Central Africa', '342000', '1960', '2943000', '47.400002', '2108.00', '2287.00', 'Congo', 'Republic', 'Denis Sassou-Nguesso', '2296', 'CG'), +('COD', 'Congo, The Democratic Republic of the', 'Africa', 'Central Africa', '2344858', '1960', '51654000', '48.799999', '6964.00', '2474.00', 'République Démocratique du Congo', 'Republic', 'Joseph Kabila', '2298', 'CD'), +('CCK', 'Cocos (Keeling) Islands', 'Oceania', 'Australia and New Zealand', '14', NULL, '600', NULL, '0.00', NULL, 'Cocos (Keeling) Islands', 'Territory of Australia', 'Elisabeth II', '2317', 'CC'), +('PRK', 'North Korea', 'Asia', 'Eastern Asia', '120538', '1948', '24039000', '70.699997', '5332.00', NULL, 'Choson Minjujuui In´min Konghwaguk (Bukhan)', 'Socialistic Republic', 'Kim Jong-il', '2318', 'KP'), +('KOR', 'South Korea', 'Asia', 'Eastern Asia', '99434', '1948', '46844000', '74.400002', '320749.00', '442544.00', 'Taehan Min’guk (Namhan)', 'Republic', 'Kim Dae-jung', '2331', 'KR'), +('GRC', 'Greece', 'Europe', 'Southern Europe', '131626', '1830', '10545700', '78.400002', '120724.00', '119946.00', 'Elláda', 'Republic', 'Kostis Stefanopoulos', '2401', 'GR'), +('HRV', 'Croatia', 'Europe', 'Southern Europe', '56538', '1991', '4473000', '73.699997', '20208.00', '19300.00', 'Hrvatska', 'Republic', 'Štipe Mesic', '2409', 'HR'), +('CUB', 'Cuba', 'North America', 'Caribbean', '110861', '1902', '11201000', '76.199997', '17843.00', '18862.00', 'Cuba', 'Socialistic Republic', 'Fidel Castro Ruz', '2413', 'CU'), +('KWT', 'Kuwait', 'Asia', 'Middle East', '17818', '1961', '1972000', '76.099998', '27037.00', '30373.00', 'Al-Kuwayt', 'Constitutional Monarchy (Emirate)', 'Jabir al-Ahmad al-Jabir al-Sabah', '2429', 'KW'), +('CYP', 'Cyprus', 'Asia', 'Middle East', '9251', '1960', '754700', '76.699997', '9333.00', '8246.00', 'Kýpros/Kibris', 'Republic', 'Glafkos Klerides', '2430', 'CY'), +('LAO', 'Laos', 'Asia', 'Southeast Asia', '236800', '1953', '5433000', '53.099998', '1292.00', '1746.00', 'Lao', 'Republic', 'Khamtay Siphandone', '2432', 'LA'), +('LVA', 'Latvia', 'Europe', 'Baltic Countries', '64589', '1991', '2424200', '68.400002', '6398.00', '5639.00', 'Latvija', 'Republic', 'Vaira Vike-Freiberga', '2434', 'LV'), +('LSO', 'Lesotho', 'Africa', 'Southern Africa', '30355', '1966', '2153000', '50.799999', '1061.00', '1161.00', 'Lesotho', 'Constitutional Monarchy', 'Letsie III', '2437', 'LS'), +('LBN', 'Lebanon', 'Asia', 'Middle East', '10400', '1941', '3282000', '71.300003', '17121.00', '15129.00', 'Lubnan', 'Republic', 'Émile Lahoud', '2438', 'LB'), +('LBR', 'Liberia', 'Africa', 'Western Africa', '111369', '1847', '3154000', '51', '2012.00', NULL, 'Liberia', 'Republic', 'Charles Taylor', '2440', 'LR'), +('LBY', 'Libyan Arab Jamahiriya', 'Africa', 'Northern Africa', '1759540', '1951', '5605000', '75.5', '44806.00', '40562.00', 'Libiya', 'Socialistic State', 'Muammar al-Qadhafi', '2441', 'LY'), +('LIE', 'Liechtenstein', 'Europe', 'Western Europe', '160', '1806', '32300', '78.800003', '1119.00', '1084.00', 'Liechtenstein', 'Constitutional Monarchy', 'Hans-Adam II', '2446', 'LI'), +('LTU', 'Lithuania', 'Europe', 'Baltic Countries', '65301', '1991', '3698500', '69.099998', '10692.00', '9585.00', 'Lietuva', 'Republic', 'Valdas Adamkus', '2447', 'LT'), +('LUX', 'Luxembourg', 'Europe', 'Western Europe', '2586', '1867', '435700', '77.099998', '16321.00', '15519.00', 'Luxembourg/Lëtzebuerg', 'Constitutional Monarchy', 'Henri', '2452', 'LU'), +('ESH', 'Western Sahara', 'Africa', 'Northern Africa', '266000', NULL, '293000', '49.799999', '60.00', NULL, 'As-Sahrawiya', 'Occupied by Marocco', 'Mohammed Abdel Aziz', '2453', 'EH'), +('MAC', 'Macao', 'Asia', 'Eastern Asia', '18', NULL, '473000', '81.599998', '5749.00', '5940.00', 'Macau/Aomen', 'Special Administrative Region of China', 'Jiang Zemin', '2454', 'MO'), +('MDG', 'Madagascar', 'Africa', 'Eastern Africa', '587041', '1960', '15942000', '55', '3750.00', '3545.00', 'Madagasikara/Madagascar', 'Federal Republic', 'Didier Ratsiraka', '2455', 'MG'), +('MKD', 'Macedonia', 'Europe', 'Southern Europe', '25713', '1991', '2024000', '73.800003', '1694.00', '1915.00', 'Makedonija', 'Republic', 'Boris Trajkovski', '2460', 'MK'), +('MWI', 'Malawi', 'Africa', 'Eastern Africa', '118484', '1964', '10925000', '37.599998', '1687.00', '2527.00', 'Malawi', 'Republic', 'Bakili Muluzi', '2462', 'MW'), +('MDV', 'Maldives', 'Asia', 'Southern and Central Asia', '298', '1965', '286000', '62.200001', '199.00', NULL, 'Dhivehi Raajje/Maldives', 'Republic', 'Maumoon Abdul Gayoom', '2463', 'MV'), +('MYS', 'Malaysia', 'Asia', 'Southeast Asia', '329758', '1957', '22244000', '70.800003', '69213.00', '97884.00', 'Malaysia', 'Constitutional Monarchy, Federation', 'Salahuddin Abdul Aziz Shah Alhaj', '2464', 'MY'), +('MLI', 'Mali', 'Africa', 'Western Africa', '1240192', '1960', '11234000', '46.700001', '2642.00', '2453.00', 'Mali', 'Republic', 'Alpha Oumar Konaré', '2482', 'ML'), +('MLT', 'Malta', 'Europe', 'Southern Europe', '316', '1964', '380200', '77.900002', '3512.00', '3338.00', 'Malta', 'Republic', 'Guido de Marco', '2484', 'MT'), +('MAR', 'Morocco', 'Africa', 'Northern Africa', '446550', '1956', '28351000', '69.099998', '36124.00', '33514.00', 'Al-Maghrib', 'Constitutional Monarchy', 'Mohammed VI', '2486', 'MA'), +('MHL', 'Marshall Islands', 'Oceania', 'Micronesia', '181', '1990', '64000', '65.5', '97.00', NULL, 'Marshall Islands/Majol', 'Republic', 'Kessai Note', '2507', 'MH'), +('MTQ', 'Martinique', 'North America', 'Caribbean', '1102', NULL, '395000', '78.300003', '2731.00', '2559.00', 'Martinique', 'Overseas Department of France', 'Jacques Chirac', '2508', 'MQ'), +('MRT', 'Mauritania', 'Africa', 'Western Africa', '1025520', '1960', '2670000', '50.799999', '998.00', '1081.00', 'Muritaniya/Mauritanie', 'Republic', 'Maaouiya Ould Sid´Ahmad Taya', '2509', 'MR'), +('MUS', 'Mauritius', 'Africa', 'Eastern Africa', '2040', '1968', '1158000', '71', '4251.00', '4186.00', 'Mauritius', 'Republic', 'Cassam Uteem', '2511', 'MU'), +('MYT', 'Mayotte', 'Africa', 'Eastern Africa', '373', NULL, '149000', '59.5', '0.00', NULL, 'Mayotte', 'Territorial Collectivity of France', 'Jacques Chirac', '2514', 'YT'), +('MEX', 'Mexico', 'North America', 'Central America', '1958201', '1810', '98881000', '71.5', '414972.00', '401461.00', 'México', 'Federal Republic', 'Vicente Fox Quesada', '2515', 'MX'), +('FSM', 'Micronesia, Federated States of', 'Oceania', 'Micronesia', '702', '1990', '119000', '68.599998', '212.00', NULL, 'Micronesia', 'Federal Republic', 'Leo A. Falcam', '2689', 'FM'), +('MDA', 'Moldova', 'Europe', 'Eastern Europe', '33851', '1991', '4380000', '64.5', '1579.00', '1872.00', 'Moldova', 'Republic', 'Vladimir Voronin', '2690', 'MD'), +('MCO', 'Monaco', 'Europe', 'Western Europe', '1.5', '1861', '34000', '78.800003', '776.00', NULL, 'Monaco', 'Constitutional Monarchy', 'Rainier III', '2695', 'MC'), +('MNG', 'Mongolia', 'Asia', 'Eastern Asia', '1566500', '1921', '2662000', '67.300003', '1043.00', '933.00', 'Mongol Uls', 'Republic', 'Natsagiin Bagabandi', '2696', 'MN'), +('MSR', 'Montserrat', 'North America', 'Caribbean', '102', NULL, '11000', '78', '109.00', NULL, 'Montserrat', 'Dependent Territory of the UK', 'Elisabeth II', '2697', 'MS'), +('MOZ', 'Mozambique', 'Africa', 'Eastern Africa', '801590', '1975', '19680000', '37.5', '2891.00', '2711.00', 'Moçambique', 'Republic', 'Joaquím A. Chissano', '2698', 'MZ'), +('MMR', 'Myanmar', 'Asia', 'Southeast Asia', '676578', '1948', '45611000', '54.900002', '180375.00', '171028.00', 'Myanma Pye', 'Republic', 'kenraali Than Shwe', '2710', 'MM'), +('NAM', 'Namibia', 'Africa', 'Southern Africa', '824292', '1990', '1726000', '42.5', '3101.00', '3384.00', 'Namibia', 'Republic', 'Sam Nujoma', '2726', 'NA'), +('NRU', 'Nauru', 'Oceania', 'Micronesia', '21', '1968', '12000', '60.799999', '197.00', NULL, 'Naoero/Nauru', 'Republic', 'Bernard Dowiyogo', '2728', 'NR'), +('NPL', 'Nepal', 'Asia', 'Southern and Central Asia', '147181', '1769', '23930000', '57.799999', '4768.00', '4837.00', 'Nepal', 'Constitutional Monarchy', 'Gyanendra Bir Bikram', '2729', 'NP'), +('NIC', 'Nicaragua', 'North America', 'Central America', '130000', '1838', '5074000', '68.699997', '1988.00', '2023.00', 'Nicaragua', 'Republic', 'Arnoldo Alemán Lacayo', '2734', 'NI'), +('NER', 'Niger', 'Africa', 'Western Africa', '1267000', '1960', '10730000', '41.299999', '1706.00', '1580.00', 'Niger', 'Republic', 'Mamadou Tandja', '2738', 'NE'), +('NGA', 'Nigeria', 'Africa', 'Western Africa', '923768', '1960', '111506000', '51.599998', '65707.00', '58623.00', 'Nigeria', 'Federal Republic', 'Olusegun Obasanjo', '2754', 'NG'), +('NIU', 'Niue', 'Oceania', 'Polynesia', '260', NULL, '2000', NULL, '0.00', NULL, 'Niue', 'Nonmetropolitan Territory of New Zealand', 'Elisabeth II', '2805', 'NU'), +('NFK', 'Norfolk Island', 'Oceania', 'Australia and New Zealand', '36', NULL, '2000', NULL, '0.00', NULL, 'Norfolk Island', 'Territory of Australia', 'Elisabeth II', '2806', 'NF'), +('NOR', 'Norway', 'Europe', 'Nordic Countries', '323877', '1905', '4478500', '78.699997', '145895.00', '153370.00', 'Norge', 'Constitutional Monarchy', 'Harald V', '2807', 'NO'), +('CIV', 'Côte d’Ivoire', 'Africa', 'Western Africa', '322463', '1960', '14786000', '45.200001', '11345.00', '10285.00', 'Côte d’Ivoire', 'Republic', 'Laurent Gbagbo', '2814', 'CI'), +('OMN', 'Oman', 'Asia', 'Middle East', '309500', '1951', '2542000', '71.800003', '16904.00', '16153.00', '´Uman', 'Monarchy (Sultanate)', 'Qabus ibn Sa´id', '2821', 'OM'), +('PAK', 'Pakistan', 'Asia', 'Southern and Central Asia', '796095', '1947', '156483000', '61.099998', '61289.00', '58549.00', 'Pakistan', 'Republic', 'Mohammad Rafiq Tarar', '2831', 'PK'), +('PLW', 'Palau', 'Oceania', 'Micronesia', '459', '1994', '19000', '68.599998', '105.00', NULL, 'Belau/Palau', 'Republic', 'Kuniwo Nakamura', '2881', 'PW'), +('PAN', 'Panama', 'North America', 'Central America', '75517', '1903', '2856000', '75.5', '9131.00', '8700.00', 'Panamá', 'Republic', 'Mireya Elisa Moscoso Rodríguez', '2882', 'PA'), +('PNG', 'Papua New Guinea', 'Oceania', 'Melanesia', '462840', '1975', '4807000', '63.099998', '4988.00', '6328.00', 'Papua New Guinea/Papua Niugini', 'Constitutional Monarchy', 'Elisabeth II', '2884', 'PG'), +('PRY', 'Paraguay', 'South America', 'South America', '406752', '1811', '5496000', '73.699997', '8444.00', '9555.00', 'Paraguay', 'Republic', 'Luis Ángel González Macchi', '2885', 'PY'), +('PER', 'Peru', 'South America', 'South America', '1285216', '1821', '25662000', '70', '64140.00', '65186.00', 'Perú/Piruw', 'Republic', 'Valentin Paniagua Corazao', '2890', 'PE'), +('PCN', 'Pitcairn', 'Oceania', 'Polynesia', '49', NULL, '50', NULL, '0.00', NULL, 'Pitcairn', 'Dependent Territory of the UK', 'Elisabeth II', '2912', 'PN'), +('MNP', 'Northern Mariana Islands', 'Oceania', 'Micronesia', '464', NULL, '78000', '75.5', '0.00', NULL, 'Northern Mariana Islands', 'Commonwealth of the US', 'George W. Bush', '2913', 'MP'), +('PRT', 'Portugal', 'Europe', 'Southern Europe', '91982', '1143', '9997600', '75.800003', '105954.00', '102133.00', 'Portugal', 'Republic', 'Jorge Sampăio', '2914', 'PT'), +('PRI', 'Puerto Rico', 'North America', 'Caribbean', '8875', NULL, '3869000', '75.599998', '34100.00', '32100.00', 'Puerto Rico', 'Commonwealth of the US', 'George W. Bush', '2919', 'PR'), +('POL', 'Poland', 'Europe', 'Eastern Europe', '323250', '1918', '38653600', '73.199997', '151697.00', '135636.00', 'Polska', 'Republic', 'Aleksander Kwasniewski', '2928', 'PL'), +('GNQ', 'Equatorial Guinea', 'Africa', 'Central Africa', '28051', '1968', '453000', '53.599998', '283.00', '542.00', 'Guinea Ecuatorial', 'Republic', 'Teodoro Obiang Nguema Mbasogo', '2972', 'GQ'), +('QAT', 'Qatar', 'Asia', 'Middle East', '11000', '1971', '599000', '72.400002', '9472.00', '8920.00', 'Qatar', 'Monarchy', 'Hamad ibn Khalifa al-Thani', '2973', 'QA'), +('FRA', 'France', 'Europe', 'Western Europe', '551500', '843', '59225700', '78.800003', '1424285.00', '1392448.00', 'France', 'Republic', 'Jacques Chirac', '2974', 'FR'), +('GUF', 'French Guiana', 'South America', 'South America', '90000', NULL, '181000', '76.099998', '681.00', NULL, 'Guyane française', 'Overseas Department of France', 'Jacques Chirac', '3014', 'GF'), +('PYF', 'French Polynesia', 'Oceania', 'Polynesia', '4000', NULL, '235000', '74.800003', '818.00', '781.00', 'Polynésie française', 'Nonmetropolitan Territory of France', 'Jacques Chirac', '3016', 'PF'), +('REU', 'Réunion', 'Africa', 'Eastern Africa', '2510', NULL, '699000', '72.699997', '8287.00', '7988.00', 'Réunion', 'Overseas Department of France', 'Jacques Chirac', '3017', 'RE'), +('ROM', 'Romania', 'Europe', 'Eastern Europe', '238391', '1878', '22455500', '69.900002', '38158.00', '34843.00', 'România', 'Republic', 'Ion Iliescu', '3018', 'RO'), +('RWA', 'Rwanda', 'Africa', 'Eastern Africa', '26338', '1962', '7733000', '39.299999', '2036.00', '1863.00', 'Rwanda/Urwanda', 'Republic', 'Paul Kagame', '3047', 'RW'), +('SWE', 'Sweden', 'Europe', 'Nordic Countries', '449964', '836', '8861400', '79.599998', '226492.00', '227757.00', 'Sverige', 'Constitutional Monarchy', 'Carl XVI Gustaf', '3048', 'SE'), +('SHN', 'Saint Helena', 'Africa', 'Western Africa', '314', NULL, '6000', '76.800003', '0.00', NULL, 'Saint Helena', 'Dependent Territory of the UK', 'Elisabeth II', '3063', 'SH'), +('KNA', 'Saint Kitts and Nevis', 'North America', 'Caribbean', '261', '1983', '38000', '70.699997', '299.00', NULL, 'Saint Kitts and Nevis', 'Constitutional Monarchy', 'Elisabeth II', '3064', 'KN'), +('LCA', 'Saint Lucia', 'North America', 'Caribbean', '622', '1979', '154000', '72.300003', '571.00', NULL, 'Saint Lucia', 'Constitutional Monarchy', 'Elisabeth II', '3065', 'LC'), +('VCT', 'Saint Vincent and the Grenadines', 'North America', 'Caribbean', '388', '1979', '114000', '72.300003', '285.00', NULL, 'Saint Vincent and the Grenadines', 'Constitutional Monarchy', 'Elisabeth II', '3066', 'VC'), +('SPM', 'Saint Pierre and Miquelon', 'North America', 'North America', '242', NULL, '7000', '77.599998', '0.00', NULL, 'Saint-Pierre-et-Miquelon', 'Territorial Collectivity of France', 'Jacques Chirac', '3067', 'PM'), +('DEU', 'Germany', 'Europe', 'Western Europe', '357022', '1955', '82164700', '77.400002', '2133367.00', '2102826.00', 'Deutschland', 'Federal Republic', 'Johannes Rau', '3068', 'DE'), +('SLB', 'Solomon Islands', 'Oceania', 'Melanesia', '28896', '1978', '444000', '71.300003', '182.00', '220.00', 'Solomon Islands', 'Constitutional Monarchy', 'Elisabeth II', '3161', 'SB'), +('ZMB', 'Zambia', 'Africa', 'Eastern Africa', '752618', '1964', '9169000', '37.200001', '3377.00', '3922.00', 'Zambia', 'Republic', 'Frederick Chiluba', '3162', 'ZM'), +('WSM', 'Samoa', 'Oceania', 'Polynesia', '2831', '1962', '180000', '69.199997', '141.00', '157.00', 'Samoa', 'Parlementary Monarchy', 'Malietoa Tanumafili II', '3169', 'WS'), +('SMR', 'San Marino', 'Europe', 'Southern Europe', '61', '885', '27000', '81.099998', '510.00', NULL, 'San Marino', 'Republic', '', '3171', 'SM'), +('STP', 'Sao Tome and Principe', 'Africa', 'Central Africa', '964', '1975', '147000', '65.300003', '6.00', NULL, 'Săo Tomé e Príncipe', 'Republic', 'Miguel Trovoada', '3172', 'ST'), +('SAU', 'Saudi Arabia', 'Asia', 'Middle East', '2149690', '1932', '21607000', '67.800003', '137635.00', '146171.00', 'Al-´Arabiya as-Sa´udiya', 'Monarchy', 'Fahd ibn Abdul-Aziz al-Sa´ud', '3173', 'SA'), +('SEN', 'Senegal', 'Africa', 'Western Africa', '196722', '1960', '9481000', '62.200001', '4787.00', '4542.00', 'Sénégal/Sounougal', 'Republic', 'Abdoulaye Wade', '3198', 'SN'), +('SYC', 'Seychelles', 'Africa', 'Eastern Africa', '455', '1976', '77000', '70.400002', '536.00', '539.00', 'Sesel/Seychelles', 'Republic', 'France-Albert René', '3206', 'SC'), +('SLE', 'Sierra Leone', 'Africa', 'Western Africa', '71740', '1961', '4854000', '45.299999', '746.00', '858.00', 'Sierra Leone', 'Republic', 'Ahmed Tejan Kabbah', '3207', 'SL'), +('SGP', 'Singapore', 'Asia', 'Southeast Asia', '618', '1965', '3567000', '80.099998', '86503.00', '96318.00', 'Singapore/Singapura/Xinjiapo/Singapur', 'Republic', 'Sellapan Rama Nathan', '3208', 'SG'), +('SVK', 'Slovakia', 'Europe', 'Eastern Europe', '49012', '1993', '5398700', '73.699997', '20594.00', '19452.00', 'Slovensko', 'Republic', 'Rudolf Schuster', '3209', 'SK'), +('SVN', 'Slovenia', 'Europe', 'Southern Europe', '20256', '1991', '1987800', '74.900002', '19756.00', '18202.00', 'Slovenija', 'Republic', 'Milan Kucan', '3212', 'SI'), +('SOM', 'Somalia', 'Africa', 'Eastern Africa', '637657', '1960', '10097000', '46.200001', '935.00', NULL, 'Soomaaliya', 'Republic', 'Abdiqassim Salad Hassan', '3214', 'SO'), +('LKA', 'Sri Lanka', 'Asia', 'Southern and Central Asia', '65610', '1948', '18827000', '71.800003', '15706.00', '15091.00', 'Sri Lanka/Ilankai', 'Republic', 'Chandrika Kumaratunga', '3217', 'LK'), +('SDN', 'Sudan', 'Africa', 'Northern Africa', '2505813', '1956', '29490000', '56.599998', '10162.00', NULL, 'As-Sudan', 'Islamic Republic', 'Omar Hassan Ahmad al-Bashir', '3225', 'SD'), +('FIN', 'Finland', 'Europe', 'Nordic Countries', '338145', '1917', '5171300', '77.400002', '121914.00', '119833.00', 'Suomi', 'Republic', 'Tarja Halonen', '3236', 'FI'), +('SUR', 'Suriname', 'South America', 'South America', '163265', '1975', '417000', '71.400002', '870.00', '706.00', 'Suriname', 'Republic', 'Ronald Venetiaan', '3243', 'SR'), +('SWZ', 'Swaziland', 'Africa', 'Southern Africa', '17364', '1968', '1008000', '40.400002', '1206.00', '1312.00', 'kaNgwane', 'Monarchy', 'Mswati III', '3244', 'SZ'), +('CHE', 'Switzerland', 'Europe', 'Western Europe', '41284', '1499', '7160400', '79.599998', '264478.00', '256092.00', 'Schweiz/Suisse/Svizzera/Svizra', 'Federation', 'Adolf Ogi', '3248', 'CH'), +('SYR', 'Syria', 'Asia', 'Middle East', '185180', '1941', '16125000', '68.5', '65984.00', '64926.00', 'Suriya', 'Republic', 'Bashar al-Assad', '3250', 'SY'), +('TJK', 'Tajikistan', 'Asia', 'Southern and Central Asia', '143100', '1991', '6188000', '64.099998', '1990.00', '1056.00', 'Toçikiston', 'Republic', 'Emomali Rahmonov', '3261', 'TJ'), +('TWN', 'Taiwan', 'Asia', 'Eastern Asia', '36188', '1945', '22256000', '76.400002', '256254.00', '263451.00', 'T’ai-wan', 'Republic', 'Chen Shui-bian', '3263', 'TW'), +('TZA', 'Tanzania', 'Africa', 'Eastern Africa', '883749', '1961', '33517000', '52.299999', '8005.00', '7388.00', 'Tanzania', 'Republic', 'Benjamin William Mkapa', '3306', 'TZ'), +('DNK', 'Denmark', 'Europe', 'Nordic Countries', '43094', '800', '5330000', '76.5', '174099.00', '169264.00', 'Danmark', 'Constitutional Monarchy', 'Margrethe II', '3315', 'DK'), +('THA', 'Thailand', 'Asia', 'Southeast Asia', '513115', '1350', '61399000', '68.599998', '116416.00', '153907.00', 'Prathet Thai', 'Constitutional Monarchy', 'Bhumibol Adulyadej', '3320', 'TH'), +('TGO', 'Togo', 'Africa', 'Western Africa', '56785', '1960', '4629000', '54.700001', '1449.00', '1400.00', 'Togo', 'Republic', 'Gnassingbé Eyadéma', '3332', 'TG'), +('TKL', 'Tokelau', 'Oceania', 'Polynesia', '12', NULL, '2000', NULL, '0.00', NULL, 'Tokelau', 'Nonmetropolitan Territory of New Zealand', 'Elisabeth II', '3333', 'TK'), +('TON', 'Tonga', 'Oceania', 'Polynesia', '650', '1970', '99000', '67.900002', '146.00', '170.00', 'Tonga', 'Monarchy', 'Taufa''ahau Tupou IV', '3334', 'TO'), +('TTO', 'Trinidad and Tobago', 'North America', 'Caribbean', '5130', '1962', '1295000', '68', '6232.00', '5867.00', 'Trinidad and Tobago', 'Republic', 'Arthur N. R. Robinson', '3336', 'TT'), +('TCD', 'Chad', 'Africa', 'Central Africa', '1284000', '1960', '7651000', '50.5', '1208.00', '1102.00', 'Tchad/Tshad', 'Republic', 'Idriss Déby', '3337', 'TD'), +('CZE', 'Czech Republic', 'Europe', 'Eastern Europe', '78866', '1993', '10278100', '74.5', '55017.00', '52037.00', '¸esko', 'Republic', 'Václav Havel', '3339', 'CZ'), +('TUN', 'Tunisia', 'Africa', 'Northern Africa', '163610', '1956', '9586000', '73.699997', '20026.00', '18898.00', 'Tunis/Tunisie', 'Republic', 'Zine al-Abidine Ben Ali', '3349', 'TN'), +('TUR', 'Turkey', 'Asia', 'Middle East', '774815', '1923', '66591000', '71', '210721.00', '189122.00', 'Türkiye', 'Republic', 'Ahmet Necdet Sezer', '3358', 'TR'), +('TKM', 'Turkmenistan', 'Asia', 'Southern and Central Asia', '488100', '1991', '4459000', '60.900002', '4397.00', '2000.00', 'Türkmenostan', 'Republic', 'Saparmurad Nijazov', '3419', 'TM'), +('TCA', 'Turks and Caicos Islands', 'North America', 'Caribbean', '430', NULL, '17000', '73.300003', '96.00', NULL, 'The Turks and Caicos Islands', 'Dependent Territory of the UK', 'Elisabeth II', '3423', 'TC'), +('TUV', 'Tuvalu', 'Oceania', 'Polynesia', '26', '1978', '12000', '66.300003', '6.00', NULL, 'Tuvalu', 'Constitutional Monarchy', 'Elisabeth II', '3424', 'TV'), +('UGA', 'Uganda', 'Africa', 'Eastern Africa', '241038', '1962', '21778000', '42.900002', '6313.00', '6887.00', 'Uganda', 'Republic', 'Yoweri Museveni', '3425', 'UG'), +('UKR', 'Ukraine', 'Europe', 'Eastern Europe', '603700', '1991', '50456000', '66', '42168.00', '49677.00', 'Ukrajina', 'Republic', 'Leonid Kutšma', '3426', 'UA'), +('HUN', 'Hungary', 'Europe', 'Eastern Europe', '93030', '1918', '10043200', '71.400002', '48267.00', '45914.00', 'Magyarország', 'Republic', 'Ferenc Mádl', '3483', 'HU'), +('URY', 'Uruguay', 'South America', 'South America', '175016', '1828', '3337000', '75.199997', '20831.00', '19967.00', 'Uruguay', 'Republic', 'Jorge Batlle Ibáńez', '3492', 'UY'), +('NCL', 'New Caledonia', 'Oceania', 'Melanesia', '18575', NULL, '214000', '72.800003', '3563.00', NULL, 'Nouvelle-Calédonie', 'Nonmetropolitan Territory of France', 'Jacques Chirac', '3493', 'NC'), +('NZL', 'New Zealand', 'Oceania', 'Australia and New Zealand', '270534', '1907', '3862000', '77.800003', '54669.00', '64960.00', 'New Zealand/Aotearoa', 'Constitutional Monarchy', 'Elisabeth II', '3499', 'NZ'), +('UZB', 'Uzbekistan', 'Asia', 'Southern and Central Asia', '447400', '1991', '24318000', '63.700001', '14194.00', '21300.00', 'Uzbekiston', 'Republic', 'Islam Karimov', '3503', 'UZ'), +('BLR', 'Belarus', 'Europe', 'Eastern Europe', '207600', '1991', '10236000', '68', '13714.00', NULL, 'Belarus', 'Republic', 'Aljaksandr Lukašenka', '3520', 'BY'), +('WLF', 'Wallis and Futuna', 'Oceania', 'Polynesia', '200', NULL, '15000', NULL, '0.00', NULL, 'Wallis-et-Futuna', 'Nonmetropolitan Territory of France', 'Jacques Chirac', '3536', 'WF'), +('VUT', 'Vanuatu', 'Oceania', 'Melanesia', '12189', '1980', '190000', '60.599998', '261.00', '246.00', 'Vanuatu', 'Republic', 'John Bani', '3537', 'VU'), +('VAT', 'Holy See (Vatican City State)', 'Europe', 'Southern Europe', '0.40000001', '1929', '1000', NULL, '9.00', NULL, 'Santa Sede/Cittŕ del Vaticano', 'Independent Church State', 'Johannes Paavali II', '3538', 'VA'), +('VEN', 'Venezuela', 'South America', 'South America', '912050', '1811', '24170000', '73.099998', '95023.00', '88434.00', 'Venezuela', 'Federal Republic', 'Hugo Chávez Frías', '3539', 'VE'), +('RUS', 'Russian Federation', 'Europe', 'Eastern Europe', '17075400', '1991', '146934000', '67.199997', '276608.00', '442989.00', 'Rossija', 'Federal Republic', 'Vladimir Putin', '3580', 'RU'), +('VNM', 'Vietnam', 'Asia', 'Southeast Asia', '331689', '1945', '79832000', '69.300003', '21929.00', '22834.00', 'Vięt Nam', 'Socialistic Republic', 'Trân Duc Luong', '3770', 'VN'), +('EST', 'Estonia', 'Europe', 'Baltic Countries', '45227', '1991', '1439200', '69.5', '5328.00', '3371.00', 'Eesti', 'Republic', 'Lennart Meri', '3791', 'EE'), +('USA', 'United States', 'North America', 'North America', '9363520', '1776', '278357000', '77.099998', '8510700.00', '8110900.00', 'United States', 'Federal Republic', 'George W. Bush', '3813', 'US'), +('VIR', 'Virgin Islands, U.S.', 'North America', 'Caribbean', '347', NULL, '93000', '78.099998', '0.00', NULL, 'Virgin Islands of the United States', 'US Territory', 'George W. Bush', '4067', 'VI'), +('ZWE', 'Zimbabwe', 'Africa', 'Eastern Africa', '390757', '1980', '11669000', '37.799999', '5951.00', '8670.00', 'Zimbabwe', 'Republic', 'Robert G. Mugabe', '4068', 'ZW'), +('PSE', 'Palestine', 'Asia', 'Middle East', '6257', NULL, '3101000', '71.400002', '4173.00', NULL, 'Filastin', 'Autonomous Area', 'Yasser (Yasir) Arafat', '4074', 'PS'), +('ATA', 'Antarctica', 'Antarctica', 'Antarctica', '13120000', NULL, '0', NULL, '0.00', NULL, '–', 'Co-administrated', '', NULL, 'AQ'), +('BVT', 'Bouvet Island', 'Antarctica', 'Antarctica', '59', NULL, '0', NULL, '0.00', NULL, 'Bouvetřya', 'Dependent Territory of Norway', 'Harald V', NULL, 'BV'), +('IOT', 'British Indian Ocean Territory', 'Africa', 'Eastern Africa', '78', NULL, '0', NULL, '0.00', NULL, 'British Indian Ocean Territory', 'Dependent Territory of the UK', 'Elisabeth II', NULL, 'IO'), +('SGS', 'South Georgia and the South Sandwich Islands', 'Antarctica', 'Antarctica', '3903', NULL, '0', NULL, '0.00', NULL, 'South Georgia and the South Sandwich Islands', 'Dependent Territory of the UK', 'Elisabeth II', NULL, 'GS'), +('HMD', 'Heard Island and McDonald Islands', 'Antarctica', 'Antarctica', '359', NULL, '0', NULL, '0.00', NULL, 'Heard and McDonald Islands', 'Territory of Australia', 'Elisabeth II', NULL, 'HM'), +('ATF', 'French Southern territories', 'Antarctica', 'Antarctica', '7780', NULL, '0', NULL, '0.00', NULL, 'Terres australes françaises', 'Nonmetropolitan Territory of France', 'Jacques Chirac', NULL, 'TF'), +('UMI', 'United States Minor Outlying Islands', 'Oceania', 'Micronesia/Caribbean', '16', NULL, '0', NULL, '0.00', NULL, 'United States Minor Outlying Islands', 'Dependent Territory of the US', 'George W. Bush', NULL, 'UM'); + +-- +-- Data for Name: countrylanguage; Type: TABLE DATA; Schema: public; Owner: chriskl +-- +INSERT INTO countrylanguage (countrycode, language, isofficial, percentage) VALUES +('AFG', 'Pashto', 1, '52.400002'), +('NLD', 'Dutch', 1, '95.599998'), +('ANT', 'Papiamento', 1, '86.199997'), +('ALB', 'Albaniana', 1, '97.900002'), +('DZA', 'Arabic', 1, '86'), +('ASM', 'Samoan', 1, '90.599998'), +('AND', 'Spanish', 0, '44.599998'), +('AGO', 'Ovimbundu', 0, '37.200001'), +('AIA', 'English', 1, '0'), +('ATG', 'Creole English', 0, '95.699997'), +('ARE', 'Arabic', 1, '42'), +('ARG', 'Spanish', 1, '96.800003'), +('ARM', 'Armenian', 1, '93.400002'), +('ABW', 'Papiamento', 0, '76.699997'), +('AUS', 'English', 1, '81.199997'), +('AZE', 'Azerbaijani', 1, '89'), +('BHS', 'Creole English', 0, '89.699997'), +('BHR', 'Arabic', 1, '67.699997'), +('BGD', 'Bengali', 1, '97.699997'), +('BRB', 'Bajan', 0, '95.099998'), +('BEL', 'Dutch', 1, '59.200001'), +('BLZ', 'English', 1, '50.799999'), +('BEN', 'Fon', 0, '39.799999'), +('BMU', 'English', 1, '100'), +('BTN', 'Dzongkha', 1, '50'), +('BOL', 'Spanish', 1, '87.699997'), +('BIH', 'Serbo-Croatian', 1, '99.199997'), +('BWA', 'Tswana', 0, '75.5'), +('BRA', 'Portuguese', 1, '97.5'), +('GBR', 'English', 1, '97.300003'), +('VGB', 'English', 1, '0'), +('BRN', 'Malay', 1, '45.5'), +('BGR', 'Bulgariana', 1, '83.199997'), +('BFA', 'Mossi', 0, '50.200001'), +('BDI', 'Kirundi', 1, '98.099998'), +('CYM', 'English', 1, '0'), +('CHL', 'Spanish', 1, '89.699997'), +('COK', 'Maori', 1, '0'), +('CRI', 'Spanish', 1, '97.5'), +('DJI', 'Somali', 0, '43.900002'), +('DMA', 'Creole English', 0, '100'), +('DOM', 'Spanish', 1, '98'), +('ECU', 'Spanish', 1, '93'), +('EGY', 'Arabic', 1, '98.800003'), +('SLV', 'Spanish', 1, '100'), +('ERI', 'Tigrinja', 1, '49.099998'), +('ESP', 'Spanish', 1, '74.400002'), +('ZAF', 'Zulu', 1, '22.700001'), +('ETH', 'Oromo', 0, '31'), +('FLK', 'English', 1, '0'), +('FJI', 'Fijian', 1, '50.799999'), +('PHL', 'Pilipino', 1, '29.299999'), +('FRO', 'Faroese', 1, '100'), +('GAB', 'Fang', 0, '35.799999'), +('GMB', 'Malinke', 0, '34.099998'), +('GEO', 'Georgiana', 1, '71.699997'), +('GHA', 'Akan', 0, '52.400002'), +('GIB', 'English', 1, '88.900002'), +('GRD', 'Creole English', 0, '100'), +('GRL', 'Greenlandic', 1, '87.5'), +('GLP', 'Creole French', 0, '95'), +('GUM', 'English', 1, '37.5'), +('GTM', 'Spanish', 1, '64.699997'), +('GIN', 'Ful', 0, '38.599998'), +('GNB', 'Crioulo', 0, '36.400002'), +('GUY', 'Creole English', 0, '96.400002'), +('HTI', 'Haiti Creole', 0, '100'), +('HND', 'Spanish', 1, '97.199997'), +('HKG', 'Canton Chinese', 0, '88.699997'), +('SJM', 'Norwegian', 1, '0'), +('IDN', 'Javanese', 0, '39.400002'), +('IND', 'Hindi', 1, '39.900002'), +('IRQ', 'Arabic', 1, '77.199997'), +('IRN', 'Persian', 1, '45.700001'), +('IRL', 'English', 1, '98.400002'), +('ISL', 'Icelandic', 1, '95.699997'), +('ISR', 'Hebrew', 1, '63.099998'), +('ITA', 'Italian', 1, '94.099998'), +('TMP', 'Sunda', 0, '0'), +('AUT', 'German', 1, '92'), +('JAM', 'Creole English', 0, '94.199997'), +('JPN', 'Japanese', 1, '99.099998'), +('YEM', 'Arabic', 1, '99.599998'), +('JOR', 'Arabic', 1, '97.900002'), +('CXR', 'Chinese', 0, '0'), +('YUG', 'Serbo-Croatian', 1, '75.199997'), +('KHM', 'Khmer', 1, '88.599998'), +('CMR', 'Fang', 0, '19.700001'), +('CAN', 'English', 1, '60.400002'), +('CPV', 'Crioulo', 0, '100'), +('KAZ', 'Kazakh', 1, '46'), +('KEN', 'Kikuyu', 0, '20.9'), +('CAF', 'Gbaya', 0, '23.799999'), +('CHN', 'Chinese', 1, '92'), +('KGZ', 'Kirgiz', 1, '59.700001'), +('KIR', 'Kiribati', 1, '98.900002'), +('COL', 'Spanish', 1, '99'), +('COM', 'Comorian', 1, '75'), +('COG', 'Kongo', 0, '51.5'), +('COD', 'Luba', 0, '18'), +('CCK', 'Malay', 0, '0'), +('PRK', 'Korean', 1, '99.900002'), +('KOR', 'Korean', 1, '99.900002'), +('GRC', 'Greek', 1, '98.5'), +('HRV', 'Serbo-Croatian', 1, '95.900002'), +('CUB', 'Spanish', 1, '100'), +('KWT', 'Arabic', 1, '78.099998'), +('CYP', 'Greek', 1, '74.099998'), +('LAO', 'Lao', 1, '67.199997'), +('LVA', 'Latvian', 1, '55.099998'), +('LSO', 'Sotho', 1, '85'), +('LBN', 'Arabic', 1, '93'), +('LBR', 'Kpelle', 0, '19.5'), +('LBY', 'Arabic', 1, '96'), +('LIE', 'German', 1, '89'), +('LTU', 'Lithuanian', 1, '81.599998'), +('LUX', 'Luxembourgish', 1, '64.400002'), +('ESH', 'Arabic', 1, '100'), +('MAC', 'Canton Chinese', 0, '85.599998'), +('MDG', 'Malagasy', 1, '98.900002'), +('MKD', 'Macedonian', 1, '66.5'), +('MWI', 'Chichewa', 1, '58.299999'), +('MDV', 'Dhivehi', 1, '100'), +('MYS', 'Malay', 1, '58.400002'), +('MLI', 'Bambara', 0, '31.799999'), +('MLT', 'Maltese', 1, '95.800003'), +('MAR', 'Arabic', 1, '65'), +('MHL', 'Marshallese', 1, '96.800003'), +('MTQ', 'Creole French', 0, '96.599998'), +('MRT', 'Hassaniya', 0, '81.699997'), +('MUS', 'Creole French', 0, '70.599998'), +('MYT', 'Mahoré', 0, '41.900002'), +('MEX', 'Spanish', 1, '92.099998'), +('FSM', 'Trukese', 0, '41.599998'), +('MDA', 'Romanian', 1, '61.900002'), +('MCO', 'French', 1, '41.900002'), +('MNG', 'Mongolian', 1, '78.800003'), +('MSR', 'English', 1, '0'), +('MOZ', 'Makua', 0, '27.799999'), +('MMR', 'Burmese', 1, '69'), +('NAM', 'Ovambo', 0, '50.700001'), +('NRU', 'Nauru', 1, '57.5'), +('NPL', 'Nepali', 1, '50.400002'), +('NIC', 'Spanish', 1, '97.599998'), +('NER', 'Hausa', 0, '53.099998'), +('NGA', 'Joruba', 0, '21.4'), +('NIU', 'Niue', 0, '0'), +('NFK', 'English', 1, '0'), +('NOR', 'Norwegian', 1, '96.599998'), +('CIV', 'Akan', 0, '30'), +('OMN', 'Arabic', 1, '76.699997'), +('PAK', 'Punjabi', 0, '48.200001'), +('PLW', 'Palau', 1, '82.199997'), +('PAN', 'Spanish', 1, '76.800003'), +('PNG', 'Papuan Languages', 0, '78.099998'), +('PRY', 'Spanish', 1, '55.099998'), +('PER', 'Spanish', 1, '79.800003'), +('PCN', 'Pitcairnese', 0, '0'), +('MNP', 'Philippene Languages', 0, '34.099998'), +('PRT', 'Portuguese', 1, '99'), +('PRI', 'Spanish', 1, '51.299999'), +('POL', 'Polish', 1, '97.599998'), +('GNQ', 'Fang', 0, '84.800003'), +('QAT', 'Arabic', 1, '40.700001'), +('FRA', 'French', 1, '93.599998'), +('GUF', 'Creole French', 0, '94.300003'), +('PYF', 'Tahitian', 0, '46.400002'), +('REU', 'Creole French', 0, '91.5'), +('ROM', 'Romanian', 1, '90.699997'), +('RWA', 'Rwanda', 1, '100'), +('SWE', 'Swedish', 1, '89.5'), +('SHN', 'English', 1, '0'), +('KNA', 'Creole English', 0, '100'), +('LCA', 'Creole French', 0, '80'), +('VCT', 'Creole English', 0, '99.099998'), +('SPM', 'French', 1, '0'), +('DEU', 'German', 1, '91.300003'), +('SLB', 'Malenasian Languages', 0, '85.599998'), +('ZMB', 'Bemba', 0, '29.700001'), +('WSM', 'Samoan-English', 0, '52'), +('SMR', 'Italian', 1, '100'), +('STP', 'Crioulo', 0, '86.300003'), +('SAU', 'Arabic', 1, '95'), +('SEN', 'Wolof', 1, '48.099998'), +('SYC', 'Seselwa', 0, '91.300003'), +('SLE', 'Mende', 0, '34.799999'), +('SGP', 'Chinese', 1, '77.099998'), +('SVK', 'Slovak', 1, '85.599998'), +('SVN', 'Slovene', 1, '87.900002'), +('SOM', 'Somali', 1, '98.300003'), +('LKA', 'Singali', 1, '60.299999'), +('SDN', 'Arabic', 1, '49.400002'), +('FIN', 'Finnish', 1, '92.699997'), +('SUR', 'Sranantonga', 0, '81'), +('SWZ', 'Swazi', 1, '89.900002'), +('CHE', 'German', 1, '63.599998'), +('SYR', 'Arabic', 1, '90'), +('TJK', 'Tadzhik', 1, '62.200001'), +('TWN', 'Min', 0, '66.699997'), +('TZA', 'Nyamwesi', 0, '21.1'), +('DNK', 'Danish', 1, '93.5'), +('THA', 'Thai', 1, '52.599998'), +('TGO', 'Ewe', 1, '23.200001'), +('TKL', 'Tokelau', 0, '0'), +('TON', 'Tongan', 1, '98.300003'), +('TTO', 'English', 0, '93.5'), +('TCD', 'Sara', 0, '27.700001'), +('CZE', 'Czech', 1, '81.199997'), +('TUN', 'Arabic', 1, '69.900002'), +('TUR', 'Turkish', 1, '87.599998'), +('TKM', 'Turkmenian', 1, '76.699997'), +('TCA', 'English', 1, '0'), +('TUV', 'Tuvalu', 1, '92.5'), +('UGA', 'Ganda', 0, '18.1'), +('UKR', 'Ukrainian', 1, '64.699997'), +('HUN', 'Hungarian', 1, '98.5'), +('URY', 'Spanish', 1, '95.699997'), +('NCL', 'Malenasian Languages', 0, '45.400002'), +('NZL', 'English', 1, '87'), +('UZB', 'Uzbek', 1, '72.599998'), +('BLR', 'Belorussian', 1, '65.599998'), +('WLF', 'Wallis', 0, '0'), +('VUT', 'Bislama', 1, '56.599998'), +('VAT', 'Italian', 1, '0'), +('VEN', 'Spanish', 1, '96.900002'), +('RUS', 'Russian', 1, '86.599998'), +('VNM', 'Vietnamese', 1, '86.800003'), +('EST', 'Estonian', 1, '65.300003'), +('USA', 'English', 1, '86.199997'), +('VIR', 'English', 1, '81.699997'), +('UMI', 'English', 1, '0'), +('ZWE', 'Shona', 0, '72.099998'), +('PSE', 'Arabic', 0, '95.900002'), +('AFG', 'Dari', 1, '32.099998'), +('NLD', 'Fries', 0, '3.7'), +('ANT', 'English', 0, '7.8000002'), +('ALB', 'Greek', 0, '1.8'), +('DZA', 'Berberi', 0, '14'), +('ASM', 'English', 1, '3.0999999'), +('AND', 'Catalan', 1, '32.299999'), +('AGO', 'Mbundu', 0, '21.6'), +('ATG', 'English', 1, '0'), +('ARE', 'Hindi', 0, '0'), +('ARG', 'Italian', 0, '1.7'), +('ARM', 'Azerbaijani', 0, '2.5999999'), +('ABW', 'English', 0, '9.5'), +('AUS', 'Italian', 0, '2.2'), +('AZE', 'Russian', 0, '3'), +('BHS', 'Creole French', 0, '10.3'), +('BHR', 'English', 0, '0'), +('BGD', 'Chakma', 0, '0.40000001'), +('BRB', 'English', 1, '0'), +('BEL', 'French', 1, '32.599998'), +('BLZ', 'Spanish', 0, '31.6'), +('BEN', 'Joruba', 0, '12.2'), +('BTN', 'Nepali', 0, '34.799999'), +('BOL', 'Ketšua', 1, '8.1000004'), +('BWA', 'Shona', 0, '12.3'), +('BRA', 'German', 0, '0.5'), +('GBR', 'Kymri', 0, '0.89999998'), +('BRN', 'Malay-English', 0, '28.799999'), +('BGR', 'Turkish', 0, '9.3999996'), +('BFA', 'Ful', 0, '9.6999998'), +('BDI', 'French', 1, '0'), +('CHL', 'Araucan', 0, '9.6000004'), +('COK', 'English', 0, '0'), +('CRI', 'Creole English', 0, '2'), +('DJI', 'Afar', 0, '34.799999'), +('DMA', 'Creole French', 0, '0'), +('DOM', 'Creole French', 0, '2'), +('ECU', 'Ketšua', 0, '7'), +('EGY', 'Sinaberberi', 0, '0'), +('SLV', 'Nahua', 0, '0'), +('ERI', 'Tigre', 0, '31.700001'), +('ESP', 'Catalan', 0, '16.9'), +('ZAF', 'Xhosa', 1, '17.700001'), +('ETH', 'Amhara', 0, '30'), +('FJI', 'Hindi', 0, '43.700001'), +('PHL', 'Cebuano', 0, '23.299999'), +('FRO', 'Danish', 1, '0'), +('GAB', 'Punu-sira-nzebi', 0, '17.1'), +('GMB', 'Ful', 0, '16.200001'), +('GEO', 'Russian', 0, '8.8000002'), +('GHA', 'Mossi', 0, '15.8'), +('GIB', 'Arabic', 0, '7.4000001'), +('GRL', 'Danish', 1, '12.5'), +('GLP', 'French', 1, '0'), +('GUM', 'Chamorro', 1, '29.6'), +('GTM', 'Quiché', 0, '10.1'), +('GIN', 'Malinke', 0, '23.200001'), +('GNB', 'Ful', 0, '16.6'), +('GUY', 'Caribbean', 0, '2.2'), +('HTI', 'French', 1, '0'), +('HND', 'Garifuna', 0, '1.3'), +('HKG', 'English', 1, '2.2'), +('SJM', 'Russian', 0, '0'), +('IDN', 'Sunda', 0, '15.8'), +('IND', 'Bengali', 0, '8.1999998'), +('IRQ', 'Kurdish', 0, '19'), +('IRN', 'Azerbaijani', 0, '16.799999'), +('IRL', 'Irish', 1, '1.6'), +('ISL', 'English', 0, '0'), +('ISR', 'Arabic', 1, '18'), +('ITA', 'Sardinian', 0, '2.7'), +('TMP', 'Portuguese', 1, '0'), +('AUT', 'Serbo-Croatian', 0, '2.2'), +('JAM', 'Hindi', 0, '1.9'), +('JPN', 'Korean', 0, '0.5'), +('YEM', 'Soqutri', 0, '0'), +('JOR', 'Circassian', 0, '1'), +('CXR', 'English', 1, '0'), +('YUG', 'Albaniana', 0, '16.5'), +('KHM', 'Vietnamese', 0, '5.5'), +('CMR', 'Bamileke-bamum', 0, '18.6'), +('CAN', 'French', 1, '23.4'), +('CPV', 'Portuguese', 1, '0'), +('KAZ', 'Russian', 0, '34.700001'), +('KEN', 'Luhya', 0, '13.8'), +('CAF', 'Banda', 0, '23.5'), +('CHN', 'Zhuang', 0, '1.4'), +('KGZ', 'Russian', 1, '16.200001'), +('KIR', 'Tuvalu', 0, '0.5'), +('COL', 'Chibcha', 0, '0.40000001'), +('COM', 'Comorian-French', 0, '12.9'), +('COG', 'Teke', 0, '17.299999'), +('COD', 'Kongo', 0, '16'), +('CCK', 'English', 1, '0'), +('PRK', 'Chinese', 0, '0.1'), +('KOR', 'Chinese', 0, '0.1'), +('GRC', 'Turkish', 0, '0.89999998'), +('HRV', 'Slovene', 0, '0'), +('KWT', 'English', 0, '0'), +('CYP', 'Turkish', 1, '22.4'), +('LAO', 'Mon-khmer', 0, '16.5'), +('LVA', 'Russian', 0, '32.5'), +('LSO', 'Zulu', 0, '15'), +('LBN', 'Armenian', 0, '5.9000001'), +('LBR', 'Bassa', 0, '13.7'), +('LBY', 'Berberi', 0, '1'), +('LIE', 'Italian', 0, '2.5'), +('LTU', 'Russian', 0, '8.1000004'), +('LUX', 'Portuguese', 0, '13'), +('MAC', 'Portuguese', 1, '2.3'), +('MDG', 'French', 1, '0'), +('MKD', 'Albaniana', 0, '22.9'), +('MWI', 'Lomwe', 0, '18.4'), +('MDV', 'English', 0, '0'), +('MYS', 'Chinese', 0, '9'), +('MLI', 'Ful', 0, '13.9'), +('MLT', 'English', 1, '2.0999999'), +('MAR', 'Berberi', 0, '33'), +('MHL', 'English', 1, '0'), +('MTQ', 'French', 1, '0'), +('MRT', 'Wolof', 0, '6.5999999'), +('MUS', 'Bhojpuri', 0, '21.1'), +('MYT', 'French', 1, '20.299999'), +('MEX', 'Náhuatl', 0, '1.8'), +('FSM', 'Pohnpei', 0, '23.799999'), +('MDA', 'Russian', 0, '23.200001'), +('MCO', 'Monegasque', 0, '16.1'), +('MNG', 'Kazakh', 0, '5.9000001'), +('MOZ', 'Tsonga', 0, '12.4'), +('MMR', 'Shan', 0, '8.5'), +('NAM', 'Nama', 0, '12.4'), +('NRU', 'Kiribati', 0, '17.9'), +('NPL', 'Maithili', 0, '11.9'), +('NIC', 'Miskito', 0, '1.6'), +('NER', 'Songhai-zerma', 0, '21.200001'), +('NGA', 'Hausa', 0, '21.1'), +('NIU', 'English', 1, '0'), +('NOR', 'English', 0, '0.5'), +('CIV', 'Gur', 0, '11.7'), +('OMN', 'Balochi', 0, '0'), +('PAK', 'Pashto', 0, '13.1'), +('PLW', 'Philippene Languages', 0, '9.1999998'), +('PAN', 'Creole English', 0, '14'), +('PNG', 'Malenasian Languages', 0, '20'), +('PRY', 'Guaraní', 1, '40.099998'), +('PER', 'Ketšua', 1, '16.4'), +('MNP', 'Chamorro', 0, '30'), +('PRI', 'English', 0, '47.400002'), +('POL', 'German', 0, '1.3'), +('GNQ', 'Bubi', 0, '8.6999998'), +('QAT', 'Urdu', 0, '0'), +('FRA', 'Arabic', 0, '2.5'), +('GUF', 'Indian Languages', 0, '1.9'), +('PYF', 'French', 1, '40.799999'), +('REU', 'Chinese', 0, '2.8'), +('ROM', 'Hungarian', 0, '7.1999998'), +('RWA', 'French', 1, '0'), +('SWE', 'Finnish', 0, '2.4000001'), +('KNA', 'English', 1, '0'), +('LCA', 'English', 1, '20'), +('VCT', 'English', 1, '0'), +('DEU', 'Turkish', 0, '2.5999999'), +('SLB', 'Papuan Languages', 0, '8.6000004'), +('ZMB', 'Tongan', 0, '11'), +('WSM', 'Samoan', 1, '47.5'), +('STP', 'French', 0, '0.69999999'), +('SEN', 'Ful', 0, '21.700001'), +('SYC', 'English', 1, '3.8'), +('SLE', 'Temne', 0, '31.799999'), +('SGP', 'Malay', 1, '14.1'), +('SVK', 'Hungarian', 0, '10.5'), +('SVN', 'Serbo-Croatian', 0, '7.9000001'), +('SOM', 'Arabic', 1, '0'), +('LKA', 'Tamil', 1, '19.6'), +('SDN', 'Dinka', 0, '11.5'), +('FIN', 'Swedish', 1, '5.6999998'), +('SUR', 'Hindi', 0, '0'), +('SWZ', 'Zulu', 0, '2'), +('CHE', 'French', 1, '19.200001'), +('SYR', 'Kurdish', 0, '9'), +('TJK', 'Uzbek', 0, '23.200001'), +('TWN', 'Mandarin Chinese', 1, '20.1'), +('TZA', 'Swahili', 1, '8.8000002'), +('DNK', 'Turkish', 0, '0.80000001'), +('THA', 'Lao', 0, '26.9'), +('TGO', 'Kabyé', 1, '13.8'), +('TKL', 'English', 1, '0'), +('TON', 'English', 1, '0'), +('TTO', 'Hindi', 0, '3.4000001'), +('TCD', 'Arabic', 1, '12.3'), +('CZE', 'Moravian', 0, '12.9'), +('TUN', 'Arabic-French', 0, '26.299999'), +('TUR', 'Kurdish', 0, '10.6'), +('TKM', 'Uzbek', 0, '9.1999998'), +('TUV', 'Kiribati', 0, '7.5'), +('UGA', 'Nkole', 0, '10.7'), +('UKR', 'Russian', 0, '32.900002'), +('HUN', 'Romani', 0, '0.5'), +('NCL', 'French', 1, '34.299999'), +('NZL', 'Maori', 0, '4.3000002'), +('UZB', 'Russian', 0, '10.9'), +('BLR', 'Russian', 1, '32'), +('WLF', 'Futuna', 0, '0'), +('VUT', 'English', 1, '28.299999'), +('VEN', 'Goajiro', 0, '0.40000001'), +('RUS', 'Tatar', 0, '3.2'), +('VNM', 'Tho', 0, '1.8'), +('EST', 'Russian', 0, '27.799999'), +('USA', 'Spanish', 0, '7.5'), +('VIR', 'Spanish', 0, '13.3'), +('ZWE', 'Ndebele', 0, '16.200001'), +('PSE', 'Hebrew', 0, '4.0999999'), +('AFG', 'Uzbek', 0, '8.8000002'), +('NLD', 'Arabic', 0, '0.89999998'), +('ANT', 'Dutch', 1, '0'), +('ALB', 'Macedonian', 0, '0.1'), +('ASM', 'Tongan', 0, '3.0999999'), +('AND', 'Portuguese', 0, '10.8'), +('AGO', 'Kongo', 0, '13.2'), +('ARG', 'Indian Languages', 0, '0.30000001'), +('ABW', 'Spanish', 0, '7.4000001'), +('AUS', 'Greek', 0, '1.6'), +('AZE', 'Lezgian', 0, '2.3'), +('BGD', 'Marma', 0, '0.2'), +('BEL', 'Italian', 0, '2.4000001'), +('BLZ', 'Maya Languages', 0, '9.6000004'), +('BEN', 'Adja', 0, '11.1'), +('BTN', 'Asami', 0, '15.2'), +('BOL', 'Aimará', 1, '3.2'), +('BWA', 'San', 0, '3.5'), +('BRA', 'Italian', 0, '0.40000001'), +('GBR', 'Gaeli', 0, '0.1'), +('BRN', 'Chinese', 0, '9.3000002'), +('BGR', 'Romani', 0, '3.7'), +('BFA', 'Gurma', 0, '5.6999998'), +('BDI', 'Swahili', 0, '0'), +('CHL', 'Aimará', 0, '0.5'), +('CRI', 'Chibcha', 0, '0.30000001'), +('DJI', 'Arabic', 1, '10.6'), +('ERI', 'Afar', 0, '4.3000002'), +('ESP', 'Galecian', 0, '6.4000001'), +('ZAF', 'Afrikaans', 1, '14.3'), +('ETH', 'Tigrinja', 0, '7.1999998'), +('PHL', 'Ilocano', 0, '9.3000002'), +('GAB', 'Mpongwe', 0, '14.6'), +('GMB', 'Wolof', 0, '12.6'), +('GEO', 'Armenian', 0, '6.8000002'), +('GHA', 'Ewe', 0, '11.9'), +('GUM', 'Philippene Languages', 0, '19.700001'), +('GTM', 'Cakchiquel', 0, '8.8999996'), +('GIN', 'Susu', 0, '11'), +('GNB', 'Balante', 0, '14.6'), +('GUY', 'Arawakan', 0, '1.4'), +('HND', 'Creole English', 0, '0.2'), +('HKG', 'Fukien', 0, '1.9'), +('IDN', 'Malay', 1, '12.1'), +('IND', 'Telugu', 0, '7.8000002'), +('IRQ', 'Azerbaijani', 0, '1.7'), +('IRN', 'Kurdish', 0, '9.1000004'), +('ISR', 'Russian', 0, '8.8999996'), +('ITA', 'Friuli', 0, '1.2'), +('AUT', 'Turkish', 0, '1.5'), +('JPN', 'Chinese', 0, '0.2'), +('JOR', 'Armenian', 0, '1'), +('YUG', 'Hungarian', 0, '3.4000001'), +('KHM', 'Chinese', 0, '3.0999999'), +('CMR', 'Duala', 0, '10.9'), +('CAN', 'Chinese', 0, '2.5'), +('KAZ', 'Ukrainian', 0, '5'), +('KEN', 'Luo', 0, '12.8'), +('CAF', 'Mandjia', 0, '14.8'), +('CHN', 'Mantšu', 0, '0.89999998'), +('KGZ', 'Uzbek', 0, '14.1'), +('COL', 'Creole English', 0, '0.1'), +('COM', 'Comorian-madagassi', 0, '5.5'), +('COG', 'Mboshi', 0, '11.4'), +('COD', 'Mongo', 0, '13.5'), +('LAO', 'Thai', 0, '7.8000002'), +('LVA', 'Belorussian', 0, '4.0999999'), +('LSO', 'English', 1, '0'), +('LBN', 'French', 0, '0'), +('LBR', 'Grebo', 0, '8.8999996'), +('LIE', 'Turkish', 0, '2.5'), +('LTU', 'Polish', 0, '7'), +('LUX', 'Italian', 0, '4.5999999'), +('MAC', 'Mandarin Chinese', 0, '1.2'), +('MKD', 'Turkish', 0, '4'), +('MWI', 'Yao', 0, '13.2'), +('MYS', 'Tamil', 0, '3.9000001'), +('MLI', 'Senufo and Minianka', 0, '12'), +('MRT', 'Tukulor', 0, '5.4000001'), +('MUS', 'French', 0, '3.4000001'), +('MYT', 'Malagasy', 0, '16.1'), +('MEX', 'Yucatec', 0, '1.1'), +('FSM', 'Mortlock', 0, '7.5999999'), +('MDA', 'Ukrainian', 0, '8.6000004'), +('MCO', 'Italian', 0, '16.1'), +('MNG', 'Dorbet', 0, '2.7'), +('MOZ', 'Sena', 0, '9.3999996'), +('MMR', 'Karen', 0, '6.1999998'), +('NAM', 'Kavango', 0, '9.6999998'), +('NRU', 'Chinese', 0, '8.5'), +('NPL', 'Bhojpuri', 0, '7.5'), +('NIC', 'Creole English', 0, '0.5'), +('NER', 'Tamashek', 0, '10.4'), +('NGA', 'Ibo', 0, '18.1'), +('NOR', 'Danish', 0, '0.40000001'), +('CIV', 'Malinke', 0, '11.4'), +('PAK', 'Sindhi', 0, '11.8'), +('PLW', 'English', 1, '3.2'), +('PAN', 'Guaymí', 0, '5.3000002'), +('PRY', 'Portuguese', 0, '3.2'), +('PER', 'Aimará', 1, '2.3'), +('MNP', 'Chinese', 0, '7.0999999'), +('POL', 'Ukrainian', 0, '0.60000002'), +('FRA', 'Portuguese', 0, '1.2'), +('PYF', 'Chinese', 0, '2.9000001'), +('REU', 'Comorian', 0, '2.8'), +('ROM', 'Romani', 1, '0.69999999'), +('SWE', 'Southern Slavic Languages', 0, '1.3'), +('DEU', 'Southern Slavic Languages', 0, '1.4'), +('SLB', 'Polynesian Languages', 0, '3.8'), +('ZMB', 'Nyanja', 0, '7.8000002'), +('WSM', 'English', 1, '0.60000002'), +('SEN', 'Serer', 0, '12.5'), +('SYC', 'French', 1, '1.3'), +('SLE', 'Limba', 0, '8.3000002'), +('SGP', 'Tamil', 1, '7.4000001'), +('SVK', 'Romani', 0, '1.7'), +('SVN', 'Hungarian', 0, '0.5'), +('LKA', 'Mixed Languages', 0, '19.6'), +('SDN', 'Nubian Languages', 0, '8.1000004'), +('FIN', 'Russian', 0, '0.40000001'), +('CHE', 'Italian', 1, '7.6999998'), +('TJK', 'Russian', 0, '9.6999998'), +('TWN', 'Hakka', 0, '11'), +('TZA', 'Hehet', 0, '6.9000001'), +('DNK', 'Arabic', 0, '0.69999999'), +('THA', 'Chinese', 0, '12.1'), +('TGO', 'Watyi', 0, '10.3'), +('TTO', 'Creole English', 0, '2.9000001'), +('TCD', 'Mayo-kebbi', 0, '11.5'), +('CZE', 'Slovak', 0, '3.0999999'), +('TUN', 'Arabic-French-English', 0, '3.2'), +('TUR', 'Arabic', 0, '1.4'), +('TKM', 'Russian', 0, '6.6999998'), +('TUV', 'English', 1, '0'), +('UGA', 'Kiga', 0, '8.3000002'), +('UKR', 'Romanian', 0, '0.69999999'), +('HUN', 'German', 0, '0.40000001'), +('NCL', 'Polynesian Languages', 0, '11.6'), +('UZB', 'Tadzhik', 0, '4.4000001'), +('BLR', 'Ukrainian', 0, '1.3'), +('VUT', 'French', 1, '14.2'), +('VEN', 'Warrau', 0, '0.1'), +('RUS', 'Ukrainian', 0, '1.3'), +('VNM', 'Thai', 0, '1.6'), +('EST', 'Ukrainian', 0, '2.8'), +('USA', 'French', 0, '0.69999999'), +('VIR', 'French', 0, '2.5'), +('ZWE', 'English', 1, '2.2'), +('AFG', 'Turkmenian', 0, '1.9'), +('NLD', 'Turkish', 0, '0.80000001'), +('AND', 'French', 0, '6.1999998'), +('AGO', 'Luimbe-nganguela', 0, '5.4000001'), +('ABW', 'Dutch', 1, '5.3000002'), +('AUS', 'Canton Chinese', 0, '1.1'), +('AZE', 'Armenian', 0, '2'), +('BGD', 'Garo', 0, '0.1'), +('BEL', 'Arabic', 0, '1.6'), +('BLZ', 'Garifuna', 0, '6.8000002'), +('BEN', 'Aizo', 0, '8.6999998'), +('BOL', 'Guaraní', 0, '0.1'), +('BWA', 'Khoekhoe', 0, '2.5'), +('BRA', 'Japanese', 0, '0.40000001'), +('BRN', 'English', 0, '3.0999999'), +('BGR', 'Macedonian', 0, '2.5999999'), +('BFA', 'Busansi', 0, '3.5'), +('CHL', 'Rapa nui', 0, '0.2'), +('CRI', 'Chinese', 0, '0.2'), +('ERI', 'Hadareb', 0, '3.8'), +('ESP', 'Basque', 0, '1.6'), +('ZAF', 'Northsotho', 0, '9.1000004'), +('ETH', 'Gurage', 0, '4.6999998'), +('PHL', 'Hiligaynon', 0, '9.1000004'), +('GAB', 'Mbete', 0, '13.8'), +('GMB', 'Diola', 0, '9.1999998'), +('GEO', 'Azerbaijani', 0, '5.5'), +('GHA', 'Ga-adangme', 0, '7.8000002'), +('GUM', 'Korean', 0, '3.3'), +('GTM', 'Kekchí', 0, '4.9000001'), +('GIN', 'Kissi', 0, '6'), +('GNB', 'Portuguese', 1, '8.1000004'), +('HND', 'Miskito', 0, '0.2'), +('HKG', 'Hakka', 0, '1.6'), +('IDN', 'Madura', 0, '4.3000002'), +('IND', 'Marathi', 0, '7.4000001'), +('IRQ', 'Assyrian', 0, '0.80000001'), +('IRN', 'Gilaki', 0, '5.3000002'), +('ITA', 'French', 0, '0.5'), +('AUT', 'Hungarian', 0, '0.40000001'), +('JPN', 'English', 0, '0.1'), +('YUG', 'Romani', 0, '1.4'), +('KHM', 'Tšam', 0, '2.4000001'), +('CMR', 'Ful', 0, '9.6000004'), +('CAN', 'Italian', 0, '1.7'), +('KAZ', 'German', 0, '3.0999999'), +('KEN', 'Kamba', 0, '11.2'), +('CAF', 'Ngbaka', 0, '7.5'), +('CHN', 'Hui', 0, '0.80000001'), +('KGZ', 'Ukrainian', 0, '1.7'), +('COL', 'Arawakan', 0, '0.1'), +('COM', 'Comorian-Arabic', 0, '1.6'), +('COG', 'Mbete', 0, '4.8000002'), +('COD', 'Rwanda', 0, '10.3'), +('LAO', 'Lao-Soung', 0, '5.1999998'), +('LVA', 'Ukrainian', 0, '2.9000001'), +('LBR', 'Gio', 0, '7.9000001'), +('LTU', 'Belorussian', 0, '1.4'), +('LUX', 'French', 1, '4.1999998'), +('MAC', 'English', 0, '0.5'), +('MKD', 'Romani', 0, '2.3'), +('MWI', 'Ngoni', 0, '6.6999998'), +('MYS', 'Iban', 0, '2.8'), +('MLI', 'Soninke', 0, '8.6999998'), +('MRT', 'Soninke', 0, '2.7'), +('MUS', 'Hindi', 0, '1.2'), +('MEX', 'Zapotec', 0, '0.60000002'), +('FSM', 'Kosrean', 0, '7.3000002'), +('MDA', 'Gagauzi', 0, '3.2'), +('MCO', 'English', 0, '6.5'), +('MNG', 'Bajad', 0, '1.9'), +('MOZ', 'Lomwe', 0, '7.8000002'), +('MMR', 'Rakhine', 0, '4.5'), +('NAM', 'Afrikaans', 0, '9.5'), +('NRU', 'Tuvalu', 0, '8.5'), +('NPL', 'Tharu', 0, '5.4000001'), +('NIC', 'Sumo', 0, '0.2'), +('NER', 'Ful', 0, '9.6999998'), +('NGA', 'Ful', 0, '11.3'), +('NOR', 'Swedish', 0, '0.30000001'), +('CIV', 'Kru', 0, '10.5'), +('PAK', 'Saraiki', 0, '9.8000002'), +('PLW', 'Chinese', 0, '1.6'), +('PAN', 'Cuna', 0, '2'), +('PRY', 'German', 0, '0.89999998'), +('MNP', 'Korean', 0, '6.5'), +('POL', 'Belorussian', 0, '0.5'), +('FRA', 'Italian', 0, '0.40000001'), +('REU', 'Malagasy', 0, '1.4'), +('ROM', 'German', 0, '0.40000001'), +('SWE', 'Arabic', 0, '0.80000001'), +('DEU', 'Italian', 0, '0.69999999'), +('ZMB', 'Lozi', 0, '6.4000001'), +('SEN', 'Diola', 0, '5'), +('SLE', 'Kono-vai', 0, '5.0999999'), +('SVK', 'Czech and Moravian', 0, '1.1'), +('SDN', 'Beja', 0, '6.4000001'), +('FIN', 'Estonian', 0, '0.2'), +('CHE', 'Romansh', 1, '0.60000002'), +('TWN', 'Ami', 0, '0.60000002'), +('TZA', 'Haya', 0, '5.9000001'), +('DNK', 'German', 0, '0.5'), +('THA', 'Malay', 0, '3.5999999'), +('TGO', 'Kotokoli', 0, '5.6999998'), +('TCD', 'Kanem-bornu', 0, '9'), +('CZE', 'Polish', 0, '0.60000002'), +('TKM', 'Kazakh', 0, '2'), +('UGA', 'Soga', 0, '8.1999998'), +('UKR', 'Bulgariana', 0, '0.30000001'), +('HUN', 'Serbo-Croatian', 0, '0.2'), +('UZB', 'Kazakh', 0, '3.8'), +('BLR', 'Polish', 0, '0.60000002'), +('RUS', 'Chuvash', 0, '0.89999998'), +('VNM', 'Muong', 0, '1.5'), +('EST', 'Belorussian', 0, '1.4'), +('USA', 'German', 0, '0.69999999'), +('ZWE', 'Nyanja', 0, '2.2'), +('AFG', 'Balochi', 0, '0.89999998'), +('AGO', 'Nyaneka-nkhumbi', 0, '5.4000001'), +('AUS', 'Arabic', 0, '1'), +('BGD', 'Khasi', 0, '0.1'), +('BEL', 'German', 1, '1'), +('BEN', 'Bariba', 0, '8.6999998'), +('BWA', 'Ndebele', 0, '1.3'), +('BRA', 'Indian Languages', 0, '0.2'), +('BFA', 'Dagara', 0, '3.0999999'), +('ERI', 'Bilin', 0, '3'), +('ZAF', 'English', 1, '8.5'), +('ETH', 'Somali', 0, '4.0999999'), +('PHL', 'Bicol', 0, '5.6999998'), +('GMB', 'Soninke', 0, '7.5999999'), +('GEO', 'Osseetti', 0, '2.4000001'), +('GHA', 'Gurma', 0, '3.3'), +('GUM', 'Japanese', 0, '2'), +('GTM', 'Mam', 0, '2.7'), +('GIN', 'Kpelle', 0, '4.5999999'), +('GNB', 'Malinke', 0, '6.9000001'), +('HKG', 'Chiu chau', 0, '1.4'), +('IDN', 'Minangkabau', 0, '2.4000001'), +('IND', 'Tamil', 0, '6.3000002'), +('IRQ', 'Persian', 0, '0.80000001'), +('IRN', 'Luri', 0, '4.3000002'), +('ITA', 'German', 0, '0.5'), +('AUT', 'Slovene', 0, '0.40000001'), +('JPN', 'Philippene Languages', 0, '0.1'), +('YUG', 'Slovak', 0, '0.69999999'), +('CMR', 'Tikar', 0, '7.4000001'), +('CAN', 'German', 0, '1.6'), +('KAZ', 'Uzbek', 0, '2.3'), +('KEN', 'Kalenjin', 0, '10.8'), +('CAF', 'Sara', 0, '6.4000001'), +('CHN', 'Miao', 0, '0.69999999'), +('KGZ', 'Tatar', 0, '1.3'), +('COL', 'Caribbean', 0, '0.1'), +('COM', 'Comorian-Swahili', 0, '0.5'), +('COG', 'Punu', 0, '2.9000001'), +('COD', 'Zande', 0, '6.0999999'), +('LVA', 'Polish', 0, '2.0999999'), +('LBR', 'Kru', 0, '7.1999998'), +('LTU', 'Ukrainian', 0, '1.1'), +('LUX', 'German', 1, '2.3'), +('MKD', 'Serbo-Croatian', 0, '2'), +('MYS', 'English', 0, '1.6'), +('MLI', 'Tamashek', 0, '7.3000002'), +('MRT', 'Ful', 0, '1.2'), +('MUS', 'Tamil', 0, '0.80000001'), +('MEX', 'Mixtec', 0, '0.60000002'), +('FSM', 'Yap', 0, '5.8000002'), +('MDA', 'Bulgariana', 0, '1.6'), +('MNG', 'Buryat', 0, '1.7'), +('MOZ', 'Shona', 0, '6.5'), +('MMR', 'Mon', 0, '2.4000001'), +('NAM', 'Herero', 0, '8'), +('NRU', 'English', 1, '7.5'), +('NPL', 'Tamang', 0, '4.9000001'), +('NER', 'Kanuri', 0, '4.4000001'), +('NGA', 'Ibibio', 0, '5.5999999'), +('NOR', 'Saame', 0, '0'), +('CIV', '[South]Mande', 0, '7.6999998'), +('PAK', 'Urdu', 1, '7.5999999'), +('PAN', 'Embera', 0, '0.60000002'), +('MNP', 'English', 1, '4.8000002'), +('FRA', 'Spanish', 0, '0.40000001'), +('REU', 'Tamil', 0, '0'), +('ROM', 'Ukrainian', 0, '0.30000001'), +('SWE', 'Spanish', 0, '0.60000002'), +('DEU', 'Greek', 0, '0.40000001'), +('ZMB', 'Chewa', 0, '5.6999998'), +('SEN', 'Malinke', 0, '3.8'), +('SLE', 'Bullom-sherbro', 0, '3.8'), +('SVK', 'Ukrainian and Russian', 0, '0.60000002'), +('SDN', 'Nuer', 0, '4.9000001'), +('FIN', 'Saame', 0, '0'), +('TWN', 'Atayal', 0, '0.40000001'), +('TZA', 'Makonde', 0, '5.9000001'), +('DNK', 'English', 0, '0.30000001'), +('THA', 'Khmer', 0, '1.3'), +('TGO', 'Ane', 0, '5.6999998'), +('TCD', 'Ouaddai', 0, '8.6999998'), +('CZE', 'German', 0, '0.5'), +('UGA', 'Teso', 0, '6'), +('UKR', 'Hungarian', 0, '0.30000001'), +('HUN', 'Romanian', 0, '0.1'), +('UZB', 'Karakalpak', 0, '2'), +('RUS', 'Bashkir', 0, '0.69999999'), +('VNM', 'Chinese', 0, '1.4'), +('EST', 'Finnish', 0, '0.69999999'), +('USA', 'Italian', 0, '0.60000002'), +('AGO', 'Chokwe', 0, '4.1999998'), +('AUS', 'Vietnamese', 0, '0.80000001'), +('BGD', 'Santhali', 0, '0.1'), +('BEL', 'Turkish', 0, '0.89999998'), +('BEN', 'Somba', 0, '6.6999998'), +('BFA', 'Dyula', 0, '2.5999999'), +('ERI', 'Saho', 0, '3'), +('ZAF', 'Tswana', 0, '8.1000004'), +('ETH', 'Sidamo', 0, '3.2'), +('PHL', 'Waray-waray', 0, '3.8'), +('GEO', 'Abhyasi', 0, '1.7'), +('GHA', 'Joruba', 0, '1.3'), +('GIN', 'Yalunka', 0, '2.9000001'), +('GNB', 'Mandyako', 0, '4.9000001'), +('IDN', 'Batakki', 0, '2.2'), +('IND', 'Urdu', 0, '5.0999999'), +('IRN', 'Mazandarani', 0, '3.5999999'), +('ITA', 'Albaniana', 0, '0.2'), +('AUT', 'Polish', 0, '0.2'), +('JPN', 'Ainu', 0, '0'), +('YUG', 'Macedonian', 0, '0.5'), +('CMR', 'Mandara', 0, '5.6999998'), +('CAN', 'Polish', 0, '0.69999999'), +('KAZ', 'Tatar', 0, '2'), +('KEN', 'Gusii', 0, '6.0999999'), +('CAF', 'Mbum', 0, '6.4000001'), +('CHN', 'Uighur', 0, '0.60000002'), +('KGZ', 'Kazakh', 0, '0.80000001'), +('COG', 'Sango', 0, '2.5999999'), +('COD', 'Ngala and Bangi', 0, '5.8000002'), +('LVA', 'Lithuanian', 0, '1.2'), +('LBR', 'Mano', 0, '7.1999998'), +('MYS', 'Dusun', 0, '1.1'), +('MLI', 'Songhai', 0, '6.9000001'), +('MRT', 'Zenaga', 0, '1.2'), +('MUS', 'Marathi', 0, '0.69999999'), +('MEX', 'Otomí', 0, '0.40000001'), +('FSM', 'Wolea', 0, '3.7'), +('MNG', 'Dariganga', 0, '1.4'), +('MOZ', 'Tswa', 0, '6'), +('MMR', 'Chin', 0, '2.2'), +('NAM', 'Caprivi', 0, '4.6999998'), +('NPL', 'Newari', 0, '3.7'), +('NGA', 'Kanuri', 0, '4.0999999'), +('PAK', 'Balochi', 0, '3'), +('PAN', 'Arabic', 0, '0.60000002'), +('MNP', 'Carolinian', 0, '4.8000002'), +('FRA', 'Turkish', 0, '0.40000001'), +('ROM', 'Serbo-Croatian', 0, '0.1'), +('SWE', 'Norwegian', 0, '0.5'), +('DEU', 'Polish', 0, '0.30000001'), +('ZMB', 'Nsenga', 0, '4.3000002'), +('SEN', 'Soninke', 0, '1.3'), +('SLE', 'Ful', 0, '3.8'), +('SDN', 'Zande', 0, '2.7'), +('TWN', 'Paiwan', 0, '0.30000001'), +('TZA', 'Nyakusa', 0, '5.4000001'), +('DNK', 'Swedish', 0, '0.30000001'), +('THA', 'Kuy', 0, '1.1'), +('TGO', 'Moba', 0, '5.4000001'), +('TCD', 'Hadjarai', 0, '6.6999998'), +('CZE', 'Silesiana', 0, '0.40000001'), +('UGA', 'Lango', 0, '5.9000001'), +('UKR', 'Belorussian', 0, '0.30000001'), +('HUN', 'Slovak', 0, '0.1'), +('UZB', 'Tatar', 0, '1.8'), +('RUS', 'Chechen', 0, '0.60000002'), +('VNM', 'Khmer', 0, '1.4'), +('USA', 'Chinese', 0, '0.60000002'), +('AGO', 'Luvale', 0, '3.5999999'), +('AUS', 'Serbo-Croatian', 0, '0.60000002'), +('BGD', 'Tripuri', 0, '0.1'), +('BEN', 'Ful', 0, '5.5999999'), +('ZAF', 'Southsotho', 0, '7.5999999'), +('ETH', 'Walaita', 0, '2.8'), +('PHL', 'Pampango', 0, '3'), +('GIN', 'Loma', 0, '2.3'), +('IDN', 'Bugi', 0, '2.2'), +('IND', 'Gujarati', 0, '4.8000002'), +('IRN', 'Balochi', 0, '2.3'), +('ITA', 'Slovene', 0, '0.2'), +('AUT', 'Czech', 0, '0.2'), +('CMR', 'Maka', 0, '4.9000001'), +('CAN', 'Spanish', 0, '0.69999999'), +('KEN', 'Meru', 0, '5.5'), +('CHN', 'Yi', 0, '0.60000002'), +('KGZ', 'Tadzhik', 0, '0.80000001'), +('COD', 'Rundi', 0, '3.8'), +('LBR', 'Loma', 0, '5.8000002'), +('MOZ', 'Chuabo', 0, '5.6999998'), +('MMR', 'Kachin', 0, '1.4'), +('NAM', 'San', 0, '1.9'), +('NPL', 'Hindi', 0, '3'), +('NGA', 'Edo', 0, '3.3'), +('PAK', 'Hindko', 0, '2.4000001'), +('SLE', 'Kuranko', 0, '3.4000001'), +('SDN', 'Bari', 0, '2.5'), +('TZA', 'Chaga and Pare', 0, '4.9000001'), +('DNK', 'Norwegian', 0, '0.30000001'), +('TGO', 'Naudemba', 0, '4.0999999'), +('TCD', 'Tandjile', 0, '6.5'), +('CZE', 'Romani', 0, '0.30000001'), +('UGA', 'Lugbara', 0, '4.6999998'), +('UKR', 'Polish', 0, '0.1'), +('RUS', 'Mordva', 0, '0.5'), +('VNM', 'Nung', 0, '1.1'), +('USA', 'Tagalog', 0, '0.40000001'), +('AGO', 'Ambo', 0, '2.4000001'), +('AUS', 'German', 0, '0.60000002'), +('ZAF', 'Tsonga', 0, '4.3000002'), +('PHL', 'Pangasinan', 0, '1.8'), +('IDN', 'Banja', 0, '1.8'), +('IND', 'Kannada', 0, '3.9000001'), +('IRN', 'Arabic', 0, '2.2'), +('ITA', 'Romani', 0, '0.2'), +('AUT', 'Romanian', 0, '0.2'), +('CMR', 'Masana', 0, '3.9000001'), +('CAN', 'Portuguese', 0, '0.69999999'), +('KEN', 'Nyika', 0, '4.8000002'), +('CHN', 'Tujia', 0, '0.5'), +('COD', 'Teke', 0, '2.7'), +('LBR', 'Malinke', 0, '5.0999999'), +('MOZ', 'Ronga', 0, '3.7'), +('MMR', 'Kayah', 0, '0.40000001'), +('NAM', 'German', 0, '0.89999998'), +('NGA', 'Tiv', 0, '2.3'), +('PAK', 'Brahui', 0, '1.2'), +('SLE', 'Yalunka', 0, '3.4000001'), +('SDN', 'Fur', 0, '2.0999999'), +('TZA', 'Luguru', 0, '4.9000001'), +('TGO', 'Gurma', 0, '3.4000001'), +('TCD', 'Gorane', 0, '6.1999998'), +('CZE', 'Hungarian', 0, '0.2'), +('UGA', 'Gisu', 0, '4.5'), +('RUS', 'Kazakh', 0, '0.40000001'), +('VNM', 'Miao', 0, '0.89999998'), +('USA', 'Polish', 0, '0.30000001'), +('AGO', 'Luchazi', 0, '2.4000001'), +('ZAF', 'Swazi', 0, '2.5'), +('PHL', 'Maguindanao', 0, '1.4'), +('IDN', 'Bali', 0, '1.7'), +('IND', 'Malajalam', 0, '3.5999999'), +('IRN', 'Bakhtyari', 0, '1.7'), +('CAN', 'Punjabi', 0, '0.69999999'), +('KEN', 'Masai', 0, '1.6'), +('CHN', 'Mongolian', 0, '0.40000001'), +('COD', 'Boa', 0, '2.3'), +('MOZ', 'Marendje', 0, '3.5'), +('NGA', 'Ijo', 0, '1.8'), +('SDN', 'Chilluk', 0, '1.7'), +('TZA', 'Shambala', 0, '4.3000002'), +('UGA', 'Acholi', 0, '4.4000001'), +('RUS', 'Avarian', 0, '0.40000001'), +('VNM', 'Man', 0, '0.69999999'), +('USA', 'Korean', 0, '0.30000001'), +('ZAF', 'Venda', 0, '2.2'), +('PHL', 'Maranao', 0, '1.3'), +('IND', 'Orija', 0, '3.3'), +('IRN', 'Turkmenian', 0, '1.6'), +('CAN', 'Ukrainian', 0, '0.60000002'), +('KEN', 'Turkana', 0, '1.4'), +('CHN', 'Tibetan', 0, '0.40000001'), +('COD', 'Chokwe', 0, '1.8'), +('MOZ', 'Nyanja', 0, '3.3'), +('NGA', 'Bura', 0, '1.6'), +('SDN', 'Lotuko', 0, '1.5'), +('TZA', 'Gogo', 0, '3.9000001'), +('UGA', 'Rwanda', 0, '3.2'), +('RUS', 'Mari', 0, '0.40000001'), +('USA', 'Vietnamese', 0, '0.2'), +('ZAF', 'Ndebele', 0, '1.5'), +('IND', 'Punjabi', 0, '2.8'), +('CAN', 'Dutch', 0, '0.5'), +('CHN', 'Puyi', 0, '0.2'), +('TZA', 'Ha', 0, '3.5'), +('RUS', 'Udmur', 0, '0.30000001'), +('USA', 'Japanese', 0, '0.2'), +('IND', 'Asami', 0, '1.5'), +('CAN', 'Eskimo Languages', 0, '0.1'), +('CHN', 'Dong', 0, '0.2'), +('RUS', 'Belorussian', 0, '0.30000001'), +('USA', 'Portuguese', 0, '0.2'); From 934408452e25437782250c3570f8e8dc537520ae Mon Sep 17 00:00:00 2001 From: phdoerfler Date: Sun, 12 Jul 2026 18:20:26 +0200 Subject: [PATCH 04/10] Raise munit timeout for database-backed test suites munit-cats-effect's 30s default is not enough headroom for the database-backed suites on a constrained machine: sbt runs each backend's tests in its own forked JVM, several of which contend for one docker daemon, and under that load individual tests have been observed to exceed 30s and fail with spurious TimeoutExceptions unrelated to what they test. Introduce a shared SqlDatabaseSuite base trait in sql-core's test scope, extended by DoobieDatabaseSuite and SqlPgDatabaseSuite (a single base rather than per-trait overrides, since DoobiePgDatabaseSuite mixes in both and separate overrides of munitIOTimeout would conflict), raising the timeout to 2 minutes for every backend suite. --- .../src/test/scala/DoobieDatabaseSuite.scala | 3 +- .../src/test/scala/SqlDatabaseSuite.scala | 30 +++++++++++++++++++ .../src/test/scala/SqlPgDatabaseSuite.scala | 4 +-- 3 files changed, 33 insertions(+), 4 deletions(-) create mode 100644 modules/sql-core/src/test/scala/SqlDatabaseSuite.scala diff --git a/modules/doobie-core/src/test/scala/DoobieDatabaseSuite.scala b/modules/doobie-core/src/test/scala/DoobieDatabaseSuite.scala index 44bde653..a92d8c5e 100644 --- a/modules/doobie-core/src/test/scala/DoobieDatabaseSuite.scala +++ b/modules/doobie-core/src/test/scala/DoobieDatabaseSuite.scala @@ -18,13 +18,12 @@ package grackle.doobie.test import java.time.Duration import io.circe.{Decoder => CDecoder, Encoder => CEncoder} -import munit.CatsEffectSuite import org.typelevel.doobie.Meta import grackle.doobie.DoobieMappingLike import grackle.sql.test._ -trait DoobieDatabaseSuite extends CatsEffectSuite { +trait DoobieDatabaseSuite extends SqlDatabaseSuite { trait DoobieTestMapping[F[_]] extends DoobieMappingLike[F] with SqlTestMapping[F] { type TestCodec[T] = (Meta[T], Boolean) diff --git a/modules/sql-core/src/test/scala/SqlDatabaseSuite.scala b/modules/sql-core/src/test/scala/SqlDatabaseSuite.scala new file mode 100644 index 00000000..6dcecbd3 --- /dev/null +++ b/modules/sql-core/src/test/scala/SqlDatabaseSuite.scala @@ -0,0 +1,30 @@ +// Copyright (c) 2016-2025 Association of Universities for Research in Astronomy, Inc. (AURA) +// Copyright (c) 2016-2025 Grackle Contributors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package grackle.sql.test + +import scala.concurrent.duration._ + +import munit.CatsEffectSuite + +/** + * Common base for the per-backend database suite traits, raising munit-cats-effect's 30s + * default timeout: database-backed tests can exceed it for reasons that have nothing to do with + * the test itself, e.g. several forked backend test JVMs contending for one docker daemon on a + * constrained machine, showing up as spurious timeouts rather than failures. + */ +trait SqlDatabaseSuite extends CatsEffectSuite { + override def munitIOTimeout: Duration = 2.minutes +} diff --git a/modules/sql-pg/js-jvm/src/test/scala/SqlPgDatabaseSuite.scala b/modules/sql-pg/js-jvm/src/test/scala/SqlPgDatabaseSuite.scala index a1c4965d..0650becc 100644 --- a/modules/sql-pg/js-jvm/src/test/scala/SqlPgDatabaseSuite.scala +++ b/modules/sql-pg/js-jvm/src/test/scala/SqlPgDatabaseSuite.scala @@ -15,9 +15,9 @@ package grackle.sqlpg.test -import munit.CatsEffectSuite +import grackle.sql.test.SqlDatabaseSuite -trait SqlPgDatabaseSuite extends CatsEffectSuite { +trait SqlPgDatabaseSuite extends SqlDatabaseSuite { case class PostgresConnectionInfo(host: String, port: Int) { val driverClassName = "org.postgresql.Driver" From 6e1d0e8478a7cf347d183711620a57d0809637bf Mon Sep 17 00:00:00 2001 From: phdoerfler Date: Sun, 12 Jul 2026 20:02:13 +0200 Subject: [PATCH 05/10] Normalize offset/limit at render time for every select defaultOffsetForSubquery supplied dialect-required offset/limit defaults only for selects rendered as subqueries, leaving the true query root unnormalized. That gap was invisible for Postgres and Oracle (identity implementations) and harmless for MSSQL (ORDER BY without OFFSET is legal at the root, unlike inside a derived table), but fatal for SQLite's comma-form LIMIT clause: a flat root query with an offset and no limit - the one shape whose offset survives to the top level unwrapped - rendered a dangling "LIMIT n," and failed at runtime with an incomplete-input error. Rename the hook to normalizeOffsetLimit and apply it once in SqlSelect.toFragment, so every rendered select is normalized wherever it appears; SubqueryRef no longer applies it separately. The only rendering change for existing dialects is that MSSQL root-level ordered queries now carry a redundant-but-legal "OFFSET 0 ROWS". Adds a shared regression test covering the flat root-offset shape, run by all backends. --- .../src/main/scala/DoobieMSSqlMapping.scala | 9 ++++-- .../src/main/scala/DoobieOracleMapping.scala | 2 +- .../src/main/scala/DoobieSqliteMapping.scala | 25 +++++++--------- .../sql-core/src/main/scala/SqlMapping.scala | 23 ++++++++++++--- .../SqlFilterOrderOffsetLimitSuite.scala | 29 +++++++++++++++++++ .../shared/src/main/scala/SqlPgMapping.scala | 2 +- 6 files changed, 67 insertions(+), 23 deletions(-) diff --git a/modules/doobie-mssql/src/main/scala/DoobieMSSqlMapping.scala b/modules/doobie-mssql/src/main/scala/DoobieMSSqlMapping.scala index 080e3e34..475585ba 100644 --- a/modules/doobie-mssql/src/main/scala/DoobieMSSqlMapping.scala +++ b/modules/doobie-mssql/src/main/scala/DoobieMSSqlMapping.scala @@ -95,10 +95,13 @@ trait DoobieMSSqlMappingLike[F[_]] extends DoobieMappingLike[F] with SqlMappingL def mkLateral(inner: Boolean): Laterality = Laterality.Apply(inner) - def defaultOffsetForSubquery(subquery: SqlQuery): SqlQuery = - subquery match { + // MSSQL's grammar requires an ORDER BY inside a derived table to be paired with an + // OFFSET/FETCH clause; at the query root the pairing is optional and OFFSET 0 ROWS is a + // harmless no-op, so the default can be supplied unconditionally. + def normalizeOffsetLimit(query: SqlQuery): SqlQuery = + query match { case s: SqlSelect if s.orders.nonEmpty && s.offset.isEmpty => s.copy(offset = 0.some) - case _ => subquery + case _ => query } def defaultOffsetForLimit(limit: Option[Int]): Option[Int] = diff --git a/modules/doobie-oracle/src/main/scala/DoobieOracleMapping.scala b/modules/doobie-oracle/src/main/scala/DoobieOracleMapping.scala index 60ab97fc..3bf9b530 100644 --- a/modules/doobie-oracle/src/main/scala/DoobieOracleMapping.scala +++ b/modules/doobie-oracle/src/main/scala/DoobieOracleMapping.scala @@ -91,7 +91,7 @@ trait DoobieOracleMappingLike[F[_]] extends DoobieMappingLike[F] with SqlMapping def encapsulateUnionBranch(s: SqlSelect): SqlSelect = s def unionBranchToFragment(branch: Fragment): Fragment = Fragments.parentheses(branch) def mkLateral(inner: Boolean): Laterality = Laterality.Lateral - def defaultOffsetForSubquery(subquery: SqlQuery): SqlQuery = subquery + def normalizeOffsetLimit(query: SqlQuery): SqlQuery = query def defaultOffsetForLimit(limit: Option[Int]): Option[Int] = None def orderToFragment(col: Fragment, ascending: Boolean, nullsLast: Boolean): Fragment = { diff --git a/modules/doobie-sqlite/src/main/scala/DoobieSqliteMapping.scala b/modules/doobie-sqlite/src/main/scala/DoobieSqliteMapping.scala index 1686572a..e1dfea93 100644 --- a/modules/doobie-sqlite/src/main/scala/DoobieSqliteMapping.scala +++ b/modules/doobie-sqlite/src/main/scala/DoobieSqliteMapping.scala @@ -68,12 +68,10 @@ trait DoobieSqliteMappingLike[F[_]] extends DoobieMappingLike[F] with SqlMapping // rendering order used by the shared query builder (which suits Postgres, where either order is // legal, and MSSQL/Oracle's OFFSET-anchored `OFFSET .. FETCH ..`). We route around this by using // SQLite's legacy MySQL-style comma form `LIMIT , `: offsetToFragment opens the - // clause and limitToFragment supplies the trailing operand. defaultOffsetForLimit guarantees an - // offset (defaulting to 0) is always rendered whenever a limit is present, so the two halves are - // never split apart. A limit with no matching offset, or vice versa, renders as a normal, - // self-contained `LIMIT n` - only the "explicit offset with no limit" case (see - // defaultOffsetForSubquery below for the nested-subquery fix) can't be expressed this way, since - // there's no hook to conjure a limit value out of nothing at the true query root. + // clause and limitToFragment supplies the trailing operand. The two companion hooks below + // guarantee the pair is always complete: defaultOffsetForLimit supplies offset 0 whenever a + // limit is present, and normalizeOffsetLimit supplies `LIMIT -1` (SQLite's documented "no upper + // bound" idiom) whenever an explicit offset has no limit to pair with. def offsetToFragment(offset: Fragment): Fragment = Fragments.const(" LIMIT ") |+| offset |+| Fragments.const(", ") @@ -139,15 +137,14 @@ trait DoobieSqliteMappingLike[F[_]] extends DoobieMappingLike[F] with SqlMapping def mkLateral(inner: Boolean): Laterality = Laterality.NotLateral - // Mirror image of defaultOffsetForLimit, but at the query-tree level: when this SqlSelect is - // used as a subquery (so it's rendered via defaultOffsetForSubquery rather than being the true - // query root) and it has an explicit offset but no limit, inject SQLite's documented idiom for - // "no upper bound", `LIMIT -1`, so the comma-form OFFSET/LIMIT pairing in offsetToFragment always - // has a second operand to pair with. - def defaultOffsetForSubquery(subquery: SqlQuery): SqlQuery = - subquery match { + // Mirror image of defaultOffsetForLimit, but at the query-tree level: a select with an + // explicit offset but no limit gets SQLite's documented idiom for "no upper bound", + // `LIMIT -1`, so the comma-form OFFSET/LIMIT pairing in offsetToFragment always has a second + // operand to pair with. + def normalizeOffsetLimit(query: SqlQuery): SqlQuery = + query match { case s: SqlSelect if s.offset.nonEmpty && s.limit.isEmpty => s.copy(limit = (-1).some) - case _ => subquery + case _ => query } // See offsetToFragment: forcing a default offset of 0 whenever a limit is present guarantees diff --git a/modules/sql-core/src/main/scala/SqlMapping.scala b/modules/sql-core/src/main/scala/SqlMapping.scala index 4f63374e..da3964f6 100644 --- a/modules/sql-core/src/main/scala/SqlMapping.scala +++ b/modules/sql-core/src/main/scala/SqlMapping.scala @@ -101,7 +101,15 @@ trait SqlMappingLike[F[_]] extends CirceMappingLike[F] with SqlModule[F] { self */ def supportsLateralJoin: Boolean = mkLateral(false) != Laterality.NotLateral - def defaultOffsetForSubquery(subquery: SqlQuery): SqlQuery + /** + * Supplies any offset/limit defaults the dialect's rendering requires, applied to every + * `SqlSelect` just before it is rendered (root query and subqueries alike). MSSQL uses this + * to pair an `ORDER BY` with the `OFFSET` its grammar demands; SQLite to pair an explicit + * offset with the `LIMIT` its comma-form clause is anchored on. Must return its argument + * unchanged when no defaults are needed, and be idempotent - the query it returns is rendered + * directly, without a second normalization pass. + */ + def normalizeOffsetLimit(query: SqlQuery): SqlQuery def defaultOffsetForLimit(limit: Option[Int]): Option[Int] def orderToFragment(col: Fragment, ascending: Boolean, nullsLast: Boolean): Fragment def nullsHigh: Boolean @@ -1480,7 +1488,7 @@ trait SqlMappingLike[F[_]] extends CirceMappingLike[F] with SqlModule[F] { self def toDefFragment: Aliased[Fragment] = for { alias <- Aliased.tableDef(this) - sub <- defaultOffsetForSubquery(subquery).toFragment + sub <- subquery.toFragment } yield laterality.toFragment |+| Fragments.parentheses(sub) |+| aliasDefToFragment( alias) @@ -3231,9 +3239,16 @@ trait SqlMappingLike[F[_]] extends CirceMappingLike[F] with SqlModule[F] { self } /** - * Render this `SqlSelect` as a `Fragment` + * Render this `SqlSelect` as a `Fragment`, first giving the dialect a chance to supply + * any offset/limit defaults its rendering requires (see `normalizeOffsetLimit`). */ - def toFragment: Aliased[Fragment] = { + def toFragment: Aliased[Fragment] = + normalizeOffsetLimit(this) match { + case s: SqlSelect if !(s eq this) => s.toFragment0 + case _ => toFragment0 + } + + private def toFragment0: Aliased[Fragment] = { for { _ <- Aliased.pushOwner(this) withs0 <- diff --git a/modules/sql-core/src/test/scala/SqlFilterOrderOffsetLimitSuite.scala b/modules/sql-core/src/test/scala/SqlFilterOrderOffsetLimitSuite.scala index ca5d79bf..89483fda 100644 --- a/modules/sql-core/src/test/scala/SqlFilterOrderOffsetLimitSuite.scala +++ b/modules/sql-core/src/test/scala/SqlFilterOrderOffsetLimitSuite.scala @@ -1039,6 +1039,35 @@ trait SqlFilterOrderOffsetLimitSuite extends CatsEffectSuite { assertWeaklyEqualIO(res, expected) } + // Unlike "root offset" above, no child lists are selected, so the offset isn't pushed into a + // planner-wrapped subquery but stays on the top-level select - the only query shape that + // reaches rendering with an offset and no limit, exercising normalizeOffsetLimit at the root. + test("root offset with no nested lists") { + val query = """ + query { + root(offset: 1) { + id + } + } + """ + + val expected = json""" + { + "data" : { + "root" : [ + { + "id" : "r1" + } + ] + } + } + """ + + val res = mapping.compileAndRun(query) + + assertWeaklyEqualIO(res, expected) + } + test("order on one side") { val query = """ query { diff --git a/modules/sql-pg/shared/src/main/scala/SqlPgMapping.scala b/modules/sql-pg/shared/src/main/scala/SqlPgMapping.scala index eaac6143..6d22ff35 100644 --- a/modules/sql-pg/shared/src/main/scala/SqlPgMapping.scala +++ b/modules/sql-pg/shared/src/main/scala/SqlPgMapping.scala @@ -68,7 +68,7 @@ trait SqlPgMappingLike[F[_]] extends SqlMappingLike[F] { def encapsulateUnionBranch(s: SqlSelect): SqlSelect = s def unionBranchToFragment(branch: Fragment): Fragment = Fragments.parentheses(branch) def mkLateral(inner: Boolean): Laterality = Laterality.Lateral - def defaultOffsetForSubquery(subquery: SqlQuery): SqlQuery = subquery + def normalizeOffsetLimit(query: SqlQuery): SqlQuery = query def defaultOffsetForLimit(limit: Option[Int]): Option[Int] = None def orderToFragment(col: Fragment, ascending: Boolean, nullsLast: Boolean): Fragment = { From 74fb76af063903cf739f75b26603225237d9a2d1 Mon Sep 17 00:00:00 2001 From: phdoerfler Date: Mon, 13 Jul 2026 11:25:49 +0200 Subject: [PATCH 06/10] Fix NULL placement in SQLite ORDER BY rendering SQLite sorts NULLs low by default (first in ASC, last in DESC), but orderToFragment carried the Postgres conditional, which only emits an explicit NULLS FIRST/LAST clause on the cases that deviate from a nulls-high default. On SQLite that renders the explicit clause exactly where the engine default already matches and stays silent on the two cases that need correcting, so orderings requesting the non-default placement (ascending nulls-last, descending nulls-first) put NULLs at the wrong end. Emit the clause on the mirror-image cases instead - the same polarity correction the MSSQL dialect makes, expressed with SQLite's native syntax. No existing fixture could observe this: grackle core re-sorts fetched rows in memory (stripCompiled preserves OrderBy), so the SQL-side placement only matters when it decides which rows survive a LIMIT cut, and no shared fixture orders a NULL-containing nullable column. The new NullOrderingSuite pins all four ascending/nullsLast combinations through a limit for exactly that reason. --- .../src/main/scala/DoobieSqliteMapping.scala | 11 +- .../scala/DoobieSqliteNullOrderingSuite.scala | 146 ++++++++++++++++++ testdata/sqlite/null-ordering.sql | 10 ++ 3 files changed, 163 insertions(+), 4 deletions(-) create mode 100644 modules/doobie-sqlite/src/test/scala/DoobieSqliteNullOrderingSuite.scala create mode 100644 testdata/sqlite/null-ordering.sql diff --git a/modules/doobie-sqlite/src/main/scala/DoobieSqliteMapping.scala b/modules/doobie-sqlite/src/main/scala/DoobieSqliteMapping.scala index e1dfea93..92206e2c 100644 --- a/modules/doobie-sqlite/src/main/scala/DoobieSqliteMapping.scala +++ b/modules/doobie-sqlite/src/main/scala/DoobieSqliteMapping.scala @@ -152,14 +152,17 @@ trait DoobieSqliteMappingLike[F[_]] extends DoobieMappingLike[F] with SqlMapping def defaultOffsetForLimit(limit: Option[Int]): Option[Int] = limit.as(0) - // Modern SQLite (>= 3.30) supports NULLS FIRST/LAST natively, same as Postgres/Oracle. + // Modern SQLite (>= 3.30) supports NULLS FIRST/LAST natively, but unlike Postgres/Oracle its + // default places NULLs low (first in ASC, last in DESC), so the explicit clause is needed on + // the mirror-image cases relative to the pg dialect - the same polarity correction the MSSQL + // dialect makes. Pinned by NullOrderingSuite. def orderToFragment(col: Fragment, ascending: Boolean, nullsLast: Boolean): Fragment = { val dir = if (ascending) Fragments.empty else Fragments.const(" DESC") val nulls = - if (!nullsLast && ascending) - Fragments.const(" NULLS FIRST ") - else if (nullsLast && !ascending) + if (nullsLast && ascending) Fragments.const(" NULLS LAST ") + else if (!nullsLast && !ascending) + Fragments.const(" NULLS FIRST ") else Fragments.empty diff --git a/modules/doobie-sqlite/src/test/scala/DoobieSqliteNullOrderingSuite.scala b/modules/doobie-sqlite/src/test/scala/DoobieSqliteNullOrderingSuite.scala new file mode 100644 index 00000000..c1c4c347 --- /dev/null +++ b/modules/doobie-sqlite/src/test/scala/DoobieSqliteNullOrderingSuite.scala @@ -0,0 +1,146 @@ +// Copyright (c) 2016-2025 Association of Universities for Research in Astronomy, Inc. (AURA) +// Copyright (c) 2016-2025 Grackle Contributors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package grackle.doobie.sqlite.test + +// Pins explicit NULL placement in ORDER BY across all four (ascending x nullsLast) cases. +// +// Two things shape this suite, both easy to trip over: +// - No shared sql-core fixture orders a nullable column whose data actually contains NULLs, so +// the shared suites cannot observe where a dialect puts them; hence a local fixture +// (testdata/sqlite/null-ordering.sql) with NULLs in the ordered column. +// - stripCompiled in SqlMappingLike strips Offset/Limit (SQL is authoritative for them) but +// deliberately preserves OrderBy, so grackle core re-sorts the fetched rows in memory with +// engine-independent NULL semantics. A dialect that renders NULL placement wrongly therefore +// still produces correct results for any query that fetches all rows - the SQL-side placement +// is only observable when it decides which rows survive a LIMIT cut. Every test here uses +// limit for exactly that reason, and asserts on the surviving ids, in order. +// +// SQLite sorts NULLs low by default (first in ASC, last in DESC), so the two cases requesting +// the opposite placement only work if the dialect emits an explicit NULLS FIRST/LAST. + +import cats.effect.IO + +import grackle.Query.{Binding, Limit, OrderBy, OrderSelection, OrderSelections} +import grackle.QueryCompiler.{Elab, SelectElaborator} +import grackle.Value.{BooleanValue, IntValue} +import grackle.sql.test._ +import grackle.syntax._ + +trait NullOrderingMapping[F[_]] extends SqlTestMapping[F] { + + object nullOrdering extends TableDef("null_ordering") { + val id = col("id", int4) + val v = col("v", nullable(int4)) + } + + val schema = + schema""" + type Query { + items(ascending: Boolean!, nullsLast: Boolean!, limit: Int!): [Item!]! + } + type Item { + id: Int! + v: Int + } + """ + + val QueryType = schema.ref("Query") + val ItemType = schema.ref("Item") + + val typeMappings = + List( + ObjectMapping( + tpe = QueryType, + fieldMappings = List( + SqlObject("items") + ) + ), + ObjectMapping( + tpe = ItemType, + fieldMappings = List( + SqlField("id", nullOrdering.id, key = true), + SqlField("v", nullOrdering.v) + ) + ) + ) + + override val selectElaborator = SelectElaborator { + case ( + QueryType, + "items", + List( + Binding("ascending", BooleanValue(asc)), + Binding("nullsLast", BooleanValue(nl)), + Binding("limit", IntValue(lim)))) => + Elab.transformChild(child => + Limit( + lim, + OrderBy( + OrderSelections( + List( + OrderSelection[Option[Int]](ItemType / "v", ascending = asc, nullsLast = nl), + // Secondary key so the order within the NULL block is deterministic. + OrderSelection[Int](ItemType / "id") + )), + child + ) + ).success) + } +} + +final class NullOrderingSuite extends DoobieSqliteDatabaseSuite { + lazy val mapping = new DoobieSqliteTestMapping(transactor) with NullOrderingMapping[IO] + + // Fixture rows (id, v): (1, 10), (2, NULL), (3, 5), (4, NULL). + def surviving(ascending: Boolean, nullsLast: Boolean): IO[List[Int]] = { + val query = + s""" + query { + items(ascending: $ascending, nullsLast: $nullsLast, limit: 2) { + id + v + } + } + """ + mapping.compileAndRun(query).map { json => + json + .hcursor + .downField("data") + .downField("items") + .focus + .flatMap(_.asArray) + .getOrElse(fail(s"unexpected response: $json")) + .toList + .map(_.hcursor.get[Int]("id").getOrElse(fail(s"unexpected response: $json"))) + } + } + + test("ascending, nulls last (non-default for SQLite)") { + assertIO(surviving(ascending = true, nullsLast = true), List(3, 1)) + } + + test("descending, nulls first (non-default for SQLite)") { + assertIO(surviving(ascending = false, nullsLast = false), List(2, 4)) + } + + test("ascending, nulls first (SQLite's default placement)") { + assertIO(surviving(ascending = true, nullsLast = false), List(2, 4)) + } + + test("descending, nulls last (SQLite's default placement)") { + assertIO(surviving(ascending = false, nullsLast = true), List(1, 3)) + } +} diff --git a/testdata/sqlite/null-ordering.sql b/testdata/sqlite/null-ordering.sql new file mode 100644 index 00000000..2bc83949 --- /dev/null +++ b/testdata/sqlite/null-ordering.sql @@ -0,0 +1,10 @@ +CREATE TABLE null_ordering ( + id INTEGER PRIMARY KEY, + v INTEGER +); + +INSERT INTO null_ordering (id, v) VALUES +(1, 10), +(2, NULL), +(3, 5), +(4, NULL); From 11f41694bde567e313380a6e5dbeab81cb4f27ef Mon Sep 17 00:00:00 2001 From: phdoerfler Date: Fri, 17 Jul 2026 22:41:38 +0200 Subject: [PATCH 07/10] Remove now-redundant local NullOrderingSuite Superseded by the shared SqlNullOrderingMapping/SqlNullOrderingSuite in sql-core, landing via typelevel/grackle#870. This branch will pick that up once it rebases past #870's merge. --- .../scala/DoobieSqliteNullOrderingSuite.scala | 146 ------------------ testdata/sqlite/null-ordering.sql | 10 -- 2 files changed, 156 deletions(-) delete mode 100644 modules/doobie-sqlite/src/test/scala/DoobieSqliteNullOrderingSuite.scala delete mode 100644 testdata/sqlite/null-ordering.sql diff --git a/modules/doobie-sqlite/src/test/scala/DoobieSqliteNullOrderingSuite.scala b/modules/doobie-sqlite/src/test/scala/DoobieSqliteNullOrderingSuite.scala deleted file mode 100644 index c1c4c347..00000000 --- a/modules/doobie-sqlite/src/test/scala/DoobieSqliteNullOrderingSuite.scala +++ /dev/null @@ -1,146 +0,0 @@ -// Copyright (c) 2016-2025 Association of Universities for Research in Astronomy, Inc. (AURA) -// Copyright (c) 2016-2025 Grackle Contributors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package grackle.doobie.sqlite.test - -// Pins explicit NULL placement in ORDER BY across all four (ascending x nullsLast) cases. -// -// Two things shape this suite, both easy to trip over: -// - No shared sql-core fixture orders a nullable column whose data actually contains NULLs, so -// the shared suites cannot observe where a dialect puts them; hence a local fixture -// (testdata/sqlite/null-ordering.sql) with NULLs in the ordered column. -// - stripCompiled in SqlMappingLike strips Offset/Limit (SQL is authoritative for them) but -// deliberately preserves OrderBy, so grackle core re-sorts the fetched rows in memory with -// engine-independent NULL semantics. A dialect that renders NULL placement wrongly therefore -// still produces correct results for any query that fetches all rows - the SQL-side placement -// is only observable when it decides which rows survive a LIMIT cut. Every test here uses -// limit for exactly that reason, and asserts on the surviving ids, in order. -// -// SQLite sorts NULLs low by default (first in ASC, last in DESC), so the two cases requesting -// the opposite placement only work if the dialect emits an explicit NULLS FIRST/LAST. - -import cats.effect.IO - -import grackle.Query.{Binding, Limit, OrderBy, OrderSelection, OrderSelections} -import grackle.QueryCompiler.{Elab, SelectElaborator} -import grackle.Value.{BooleanValue, IntValue} -import grackle.sql.test._ -import grackle.syntax._ - -trait NullOrderingMapping[F[_]] extends SqlTestMapping[F] { - - object nullOrdering extends TableDef("null_ordering") { - val id = col("id", int4) - val v = col("v", nullable(int4)) - } - - val schema = - schema""" - type Query { - items(ascending: Boolean!, nullsLast: Boolean!, limit: Int!): [Item!]! - } - type Item { - id: Int! - v: Int - } - """ - - val QueryType = schema.ref("Query") - val ItemType = schema.ref("Item") - - val typeMappings = - List( - ObjectMapping( - tpe = QueryType, - fieldMappings = List( - SqlObject("items") - ) - ), - ObjectMapping( - tpe = ItemType, - fieldMappings = List( - SqlField("id", nullOrdering.id, key = true), - SqlField("v", nullOrdering.v) - ) - ) - ) - - override val selectElaborator = SelectElaborator { - case ( - QueryType, - "items", - List( - Binding("ascending", BooleanValue(asc)), - Binding("nullsLast", BooleanValue(nl)), - Binding("limit", IntValue(lim)))) => - Elab.transformChild(child => - Limit( - lim, - OrderBy( - OrderSelections( - List( - OrderSelection[Option[Int]](ItemType / "v", ascending = asc, nullsLast = nl), - // Secondary key so the order within the NULL block is deterministic. - OrderSelection[Int](ItemType / "id") - )), - child - ) - ).success) - } -} - -final class NullOrderingSuite extends DoobieSqliteDatabaseSuite { - lazy val mapping = new DoobieSqliteTestMapping(transactor) with NullOrderingMapping[IO] - - // Fixture rows (id, v): (1, 10), (2, NULL), (3, 5), (4, NULL). - def surviving(ascending: Boolean, nullsLast: Boolean): IO[List[Int]] = { - val query = - s""" - query { - items(ascending: $ascending, nullsLast: $nullsLast, limit: 2) { - id - v - } - } - """ - mapping.compileAndRun(query).map { json => - json - .hcursor - .downField("data") - .downField("items") - .focus - .flatMap(_.asArray) - .getOrElse(fail(s"unexpected response: $json")) - .toList - .map(_.hcursor.get[Int]("id").getOrElse(fail(s"unexpected response: $json"))) - } - } - - test("ascending, nulls last (non-default for SQLite)") { - assertIO(surviving(ascending = true, nullsLast = true), List(3, 1)) - } - - test("descending, nulls first (non-default for SQLite)") { - assertIO(surviving(ascending = false, nullsLast = false), List(2, 4)) - } - - test("ascending, nulls first (SQLite's default placement)") { - assertIO(surviving(ascending = true, nullsLast = false), List(2, 4)) - } - - test("descending, nulls last (SQLite's default placement)") { - assertIO(surviving(ascending = false, nullsLast = true), List(1, 3)) - } -} diff --git a/testdata/sqlite/null-ordering.sql b/testdata/sqlite/null-ordering.sql deleted file mode 100644 index 2bc83949..00000000 --- a/testdata/sqlite/null-ordering.sql +++ /dev/null @@ -1,10 +0,0 @@ -CREATE TABLE null_ordering ( - id INTEGER PRIMARY KEY, - v INTEGER -); - -INSERT INTO null_ordering (id, v) VALUES -(1, 10), -(2, NULL), -(3, 5), -(4, NULL); From 8451cbb41ce436fc01c070650c957c5c229727c7 Mon Sep 17 00:00:00 2001 From: phdoerfler Date: Mon, 13 Jul 2026 02:05:26 +0200 Subject: [PATCH 08/10] Add H2 backend (grackle-doobie-h2) --- .github/workflows/ci.yml | 4 +- build.sbt | 24 + .../src/main/scala/DoobieH2Mapping.scala | 123 + .../test/scala/DoobieH2DatabaseSuite.scala | 170 + .../src/test/scala/DoobieH2Suites.scala | 267 + testdata/h2/array-join.sql | 39 + testdata/h2/coalesce.sql | 42 + testdata/h2/composite-keys.sql | 24 + testdata/h2/cursor-json.sql | 8 + testdata/h2/embedding.sql | 39 + testdata/h2/embedding2.sql | 18 + testdata/h2/filter-join-alias.sql | 15 + testdata/h2/filter-order-offset-limit-2.sql | 48 + testdata/h2/filter-order-offset-limit.sql | 39 + testdata/h2/graph.sql | 21 + testdata/h2/interfaces.sql | 37 + testdata/h2/jsonb.sql | 9 + testdata/h2/like.sql | 9 + testdata/h2/movies.sql | 44 + testdata/h2/mutation.sql | 3 + testdata/h2/projection.sql | 34 + testdata/h2/recursive-interfaces.sql | 17 + testdata/h2/sibling-lists.sql | 37 + testdata/h2/tree.sql | 14 + testdata/h2/unions.sql | 10 + testdata/h2/world.sql | 5357 +++++++++++++++++ 26 files changed, 6450 insertions(+), 2 deletions(-) create mode 100644 modules/doobie-h2/src/main/scala/DoobieH2Mapping.scala create mode 100644 modules/doobie-h2/src/test/scala/DoobieH2DatabaseSuite.scala create mode 100644 modules/doobie-h2/src/test/scala/DoobieH2Suites.scala create mode 100644 testdata/h2/array-join.sql create mode 100644 testdata/h2/coalesce.sql create mode 100644 testdata/h2/composite-keys.sql create mode 100644 testdata/h2/cursor-json.sql create mode 100644 testdata/h2/embedding.sql create mode 100644 testdata/h2/embedding2.sql create mode 100644 testdata/h2/filter-join-alias.sql create mode 100644 testdata/h2/filter-order-offset-limit-2.sql create mode 100644 testdata/h2/filter-order-offset-limit.sql create mode 100644 testdata/h2/graph.sql create mode 100644 testdata/h2/interfaces.sql create mode 100644 testdata/h2/jsonb.sql create mode 100644 testdata/h2/like.sql create mode 100644 testdata/h2/movies.sql create mode 100644 testdata/h2/mutation.sql create mode 100644 testdata/h2/projection.sql create mode 100644 testdata/h2/recursive-interfaces.sql create mode 100644 testdata/h2/sibling-lists.sql create mode 100644 testdata/h2/tree.sql create mode 100644 testdata/h2/unions.sql create mode 100644 testdata/h2/world.sql diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index de3d492a..824c81bb 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -103,11 +103,11 @@ jobs: - name: Make target directories if: github.event_name != 'pull_request' && (startsWith(github.ref, 'refs/tags/v') || github.ref == 'refs/heads/main') - run: mkdir -p modules/skunk/js/target modules/sql-core/.js/target modules/circe/.jvm/target modules/generic/.jvm/target modules/doobie-pg/target unidocs/target modules/core/.native/target modules/skunk/jvm/target modules/core/.js/target modules/doobie-core/target modules/circe/.js/target modules/skunk/native/target modules/generic/.js/target modules/doobie-oracle/target modules/sql-core/.jvm/target modules/core/.jvm/target modules/sql-pg/native/target modules/doobie-mssql/target modules/sql-pg/js/target modules/doobie-sqlite/target modules/circe/.native/target modules/generic/.native/target modules/sql-pg/jvm/target modules/sql-core/.native/target project/target + run: mkdir -p modules/skunk/js/target modules/sql-core/.js/target modules/circe/.jvm/target modules/generic/.jvm/target modules/doobie-pg/target unidocs/target modules/core/.native/target modules/skunk/jvm/target modules/core/.js/target modules/doobie-core/target modules/circe/.js/target modules/doobie-h2/target modules/skunk/native/target modules/generic/.js/target modules/doobie-oracle/target modules/sql-core/.jvm/target modules/core/.jvm/target modules/sql-pg/native/target modules/doobie-mssql/target modules/sql-pg/js/target modules/doobie-sqlite/target modules/circe/.native/target modules/generic/.native/target modules/sql-pg/jvm/target modules/sql-core/.native/target project/target - name: Compress target directories if: github.event_name != 'pull_request' && (startsWith(github.ref, 'refs/tags/v') || github.ref == 'refs/heads/main') - run: tar cf targets.tar modules/skunk/js/target modules/sql-core/.js/target modules/circe/.jvm/target modules/generic/.jvm/target modules/doobie-pg/target unidocs/target modules/core/.native/target modules/skunk/jvm/target modules/core/.js/target modules/doobie-core/target modules/circe/.js/target modules/skunk/native/target modules/generic/.js/target modules/doobie-oracle/target modules/sql-core/.jvm/target modules/core/.jvm/target modules/sql-pg/native/target modules/doobie-mssql/target modules/sql-pg/js/target modules/doobie-sqlite/target modules/circe/.native/target modules/generic/.native/target modules/sql-pg/jvm/target modules/sql-core/.native/target project/target + run: tar cf targets.tar modules/skunk/js/target modules/sql-core/.js/target modules/circe/.jvm/target modules/generic/.jvm/target modules/doobie-pg/target unidocs/target modules/core/.native/target modules/skunk/jvm/target modules/core/.js/target modules/doobie-core/target modules/circe/.js/target modules/doobie-h2/target modules/skunk/native/target modules/generic/.js/target modules/doobie-oracle/target modules/sql-core/.jvm/target modules/core/.jvm/target modules/sql-pg/native/target modules/doobie-mssql/target modules/sql-pg/js/target modules/doobie-sqlite/target modules/circe/.native/target modules/generic/.native/target modules/sql-pg/jvm/target modules/sql-core/.native/target project/target - name: Upload target directories if: github.event_name != 'pull_request' && (startsWith(github.ref, 'refs/tags/v') || github.ref == 'refs/heads/main') diff --git a/build.sbt b/build.sbt index 583e1f0c..3679501b 100644 --- a/build.sbt +++ b/build.sbt @@ -25,6 +25,7 @@ val oracleDriverVersion = "23.26.2.0.0" val postgresVersion = "42.7.13" val skunkVersion = "1.0.0" val sqliteDriverVersion = "3.53.2.0" +val h2DriverVersion = "2.4.240" val shapeless2Version = "2.3.13" val shapeless3Version = "3.6.0" val sourcePosVersion = "1.2.0" @@ -189,6 +190,7 @@ lazy val modules: List[CompositeProject] = List( doobieoracle, doobiemssql, doobiesqlite, + doobieh2, skunk, generic, docs, @@ -383,6 +385,27 @@ lazy val doobiesqlite = project ) ) +lazy val doobieh2 = project + .in(file("modules/doobie-h2")) + .enablePlugins(AutomateHeaderPlugin) + .disablePlugins(RevolverPlugin) + .dependsOn(doobiecore % "test->test;compile->compile") + .settings(commonSettings) + .settings(utcTestSettings) + .settings( + name := "grackle-doobie-h2", + Test / fork := true, + Test / parallelExecution := false, + // H2 has no docker service: the test harness seeds a fresh in-memory database per suite + // from testdata/h2/*.sql. Pass the directory as a system property (fork'd tests don't share + // the build's working directory). + Test / javaOptions += s"-Dgrackle.h2.testdata=${(ThisBuild / baseDirectory).value / "testdata" / "h2"}", + libraryDependencies ++= Seq( + "org.typelevel" %% "doobie-h2" % doobieVersion, + "com.h2database" % "h2" % h2DriverVersion + ) + ) + lazy val skunk = crossProject(JVMPlatform, JSPlatform, NativePlatform) .crossType(CrossType.Full) .in(file("modules/skunk")) @@ -533,6 +556,7 @@ lazy val unidocs = project doobieoracle, doobiemssql, doobiesqlite, + doobieh2, skunk.jvm, generic.jvm ) diff --git a/modules/doobie-h2/src/main/scala/DoobieH2Mapping.scala b/modules/doobie-h2/src/main/scala/DoobieH2Mapping.scala new file mode 100644 index 00000000..7165bd32 --- /dev/null +++ b/modules/doobie-h2/src/main/scala/DoobieH2Mapping.scala @@ -0,0 +1,123 @@ +// Copyright (c) 2016-2025 Association of Universities for Research in Astronomy, Inc. (AURA) +// Copyright (c) 2016-2025 Grackle Contributors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package grackle.doobie.h2 + +import cats.effect.Sync +import cats.syntax.all._ +import org.typelevel.doobie.Transactor + +import grackle.Mapping +import grackle.Query.OrderSelection +import grackle.doobie._ +import grackle.sql._ + +abstract class DoobieH2Mapping[F[_]]( + val transactor: Transactor[F], + val monitor: DoobieMonitor[F] +)( + implicit val M: Sync[F] +) extends Mapping[F] + with DoobieH2MappingLike[F] + +/** + * H2 (REGULAR mode) is close to Postgres for the constructs the shared query builder needs - + * ILIKE, DISTINCT ON, NULLS FIRST/LAST and parenthesized union branches are all native - with + * three exceptions: offset/limit render as standard OFFSET .. ROWS / FETCH NEXT .. ROWS ONLY + * (as Oracle); there is no LATERAL join, which `mkLateral` answers with `NotLateral` exactly as + * the SQLite backend does (see `supportsLateralJoin`'s doc comment for the consequences); and + * although modern H2 supports `NULLS FIRST`/`NULLS LAST` natively, unlike Postgres/Oracle H2's + * default places NULLs low (first in ASC, last in DESC), so `orderToFragment` emits the + * explicit clause on the mirror-image cases relative to the pg dialect - the same polarity + * correction the MSSQL dialect makes. + */ +trait DoobieH2MappingLike[F[_]] extends DoobieMappingLike[F] with SqlMappingLike[F] { + import SqlQuery.SqlSelect + import TableExpr.Laterality + + // H2 has no per-expression COLLATE, and its default ordering is already code-point order - + // the very thing the other dialects' COLLATE "C"/BINARY opt into - so nothing needs to be + // emitted on the rare collated-rendering paths either. + def collateToFragment: Fragment = Fragments.empty + + def aliasDefToFragment(alias: String): Fragment = + Fragments.const(s" AS $alias") + + // Standard SQL OFFSET/FETCH, as Oracle renders it. In H2 each clause is independently legal, + // in the offset-then-limit order the shared builder renders, with or without ORDER BY - so no + // offset/limit normalization is needed (normalizeOffsetLimit below is the identity). + def offsetToFragment(offset: Fragment): Fragment = + Fragments.const(" OFFSET ") |+| offset |+| Fragments.const(" ROWS") + + def limitToFragment(limit: Fragment): Fragment = + Fragments.const(" FETCH NEXT ") |+| limit |+| Fragments.const(" ROWS ONLY") + + // H2 supports ILIKE natively in REGULAR mode, same as Postgres. + def likeToFragment(expr: Fragment, pattern: String, caseInsensitive: Boolean): Fragment = { + val op = if (caseInsensitive) "ILIKE" else "LIKE" + expr |+| Fragments.const(s" $op ") |+| Fragments.bind(stringEncoder, pattern) + } + + // H2's CAST accepts any type name its driver reports. + def ascribedNullToFragment(codec: Codec): Fragment = + Fragments.sqlTypeName(codec) match { + case Some(name) => Fragments.const(s"CAST(NULL AS $name)") + case None => Fragments.const("NULL") + } + + def collateSelected: Boolean = false + + // H2 supports DISTINCT ON with Postgres semantics (first row per group under ORDER BY). + def distinctOnToFragment(dcols: List[Fragment]): Fragment = + Fragments.const("DISTINCT ON ") |+| Fragments.parentheses( + dcols.intercalate(Fragments.const(", "))) + + def distinctOrderColumn( + owner: ColumnOwner, + col: SqlColumn, + predCols: List[SqlColumn], + orders: List[OrderSelection[_]]): SqlColumn = col + + // A parenthesized compound-select branch may carry its own ORDER BY/OFFSET/FETCH inline (an + // unparenthesized one may not - the parentheses supplied by unionBranchToFragment are + // load-bearing), so no derived-table wrapping is needed. + def encapsulateUnionBranch(s: SqlSelect): SqlSelect = s + def unionBranchToFragment(branch: Fragment): Fragment = Fragments.parentheses(branch) + + // H2 has no LATERAL (or APPLY) mechanism, so NotLateral (plain subquery, no keyword) is the + // only possible rendering; SqlMappingLike derives supportsLateralJoin = false from it - see + // that member's doc comment. + def mkLateral(inner: Boolean): Laterality = Laterality.NotLateral + + def normalizeOffsetLimit(query: SqlQuery): SqlQuery = query + def defaultOffsetForLimit(limit: Option[Int]): Option[Int] = None + + def orderToFragment(col: Fragment, ascending: Boolean, nullsLast: Boolean): Fragment = { + val dir = if (ascending) Fragments.empty else Fragments.const(" DESC") + val nulls = + if (nullsLast && ascending) + Fragments.const(" NULLS LAST ") + else if (!nullsLast && !ascending) + Fragments.const(" NULLS FIRST ") + else + Fragments.empty + + col |+| dir |+| nulls + } + + // H2 sorts NULL below any non-NULL value by default (NULLs first in ASC), the same convention + // as MSSQL and SQLite. + def nullsHigh: Boolean = false +} diff --git a/modules/doobie-h2/src/test/scala/DoobieH2DatabaseSuite.scala b/modules/doobie-h2/src/test/scala/DoobieH2DatabaseSuite.scala new file mode 100644 index 00000000..e16deae1 --- /dev/null +++ b/modules/doobie-h2/src/test/scala/DoobieH2DatabaseSuite.scala @@ -0,0 +1,170 @@ +// Copyright (c) 2016-2025 Association of Universities for Research in Astronomy, Inc. (AURA) +// Copyright (c) 2016-2025 Grackle Contributors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package grackle.doobie.h2.test + +import java.io.File +import java.nio.file.Files +import java.sql.DriverManager +import java.time.{LocalDate, LocalTime, OffsetDateTime, ZoneOffset} +import java.util.UUID + +import scala.util.Using + +import cats.data.NonEmptyList +import cats.effect.{IO, Resource, Sync} +import cats.syntax.all._ +import io.circe.{Decoder => CDecoder, Encoder => CEncoder, Json} +import io.circe.parser.parse +import munit.catseffect._ +import org.typelevel.doobie.{Get, Meta, Put, Transactor} +import org.typelevel.doobie.enumerated.JdbcType +// H2's own implicits provide Meta instances for java.time types (JavaLocalTimeMeta etc., from +// H2JavaTimeMetaInstances); importing org.typelevel.doobie.implicits.javatimedrivernative._ +// alongside this binds the same simple names via a second wildcard import, which makes them +// ambiguous by name and drops them from implicit scope entirely (a silent "not found" rather +// than an "ambiguous implicit" error) - so only the h2-specific import is kept. +import org.typelevel.doobie.h2.implicits._ + +import grackle.doobie.DoobieMonitor +import grackle.doobie.h2.DoobieH2Mapping +import grackle.doobie.test.DoobieDatabaseSuite +import grackle.sql.test._ + +trait DoobieH2DatabaseSuite extends DoobieDatabaseSuite { + abstract class DoobieH2TestMapping[F[_]: Sync]( + transactor: Transactor[F], + monitor: DoobieMonitor[F] = DoobieMonitor.noopMonitor[IO]) + extends DoobieH2Mapping[F](transactor, monitor) + with DoobieTestMapping[F] + with SqlTestMapping[F] { + def mkTestCodec[T](meta: Meta[T]): TestCodec[T] = (meta, false) + + val uuid: TestCodec[UUID] = mkTestCodec(Meta[UUID]) + val localTime: TestCodec[LocalTime] = mkTestCodec(Meta[LocalTime]) + val localDate: TestCodec[LocalDate] = mkTestCodec(Meta[LocalDate]) + + // H2 preserves whatever offset the stored literal carried (unlike Postgres, whose driver + // hands back UTC-normalized values); the shared expected-JSON fixtures are written in + // Postgres's UTC ("Z") form, so normalize on decode. + val offsetDateTime: TestCodec[OffsetDateTime] = + mkTestCodec( + Meta[OffsetDateTime].timap(_.withOffsetSameInstant(ZoneOffset.UTC))(odt => odt)) + + val nvarchar: TestCodec[String] = mkTestCodec(Meta[String]) + + // H2's JSON type has no useful JDBC mapping - store JSON text in VARCHAR, as MSSQL does. + val jsonb: TestCodec[Json] = + mkTestCodec(Meta[String].tiemap(s => parse(s).leftMap(_.getMessage))(_.noSpaces)) + + // Native VARCHAR ARRAY columns, read via rs.getArray(n).getArray() and written via + // connection.createArrayOf + ps.setArray (Put.Advanced.array - the write half of the same + // constructor DoobieTestMapping's inherited default list codec uses for Postgres's + // "_VARCHAR"), both confirmed working against H2 2.4.240 by a standalone JDBC probe. + // + // The read half is hand-rolled rather than reused from Get.Advanced.array/Meta.Advanced.array: + // that helper does `rs.getArray(n).getArray().asInstanceOf[Array[A]]`, a whole-array cast that + // relies on the driver handing back an array reified as the element type (works for Postgres). + // H2 hands back a reified Object[] regardless of the declared element type - a whole-array + // cast to Array[String] then fails with ClassCastException, confirmed by triggering it here + // before switching to the element-wise cast below (`Object[]` -> map each element to String + // individually, which is safe since every element *is* a String instance at runtime, only the + // array's own reified component type is Object). + // + // NOT doobie-h2's own Meta[Array[String]] (org.typelevel.doobie.h2.implicits. + // unliftedStringArrayType) either: verified via the same JDBC probe that it is broken from the + // read side too. It's built on Meta.Advanced.other[Array[Object]], which reads via + // rs.getObject(n, classOf[Array[Object]]) - H2 rejects that conversion outright + // ("Data conversion error converting CHARACTER VARYING to JAVA_OBJECT"), even for a value it + // just wrote itself. + // + // The vendor type name matters beyond Get/Put too: DoobieMapping's sqlTypeName renders it + // verbatim into `CAST(NULL AS )` for ascribed nulls, and H2 only accepts the full + // "VARCHAR ARRAY" spelling there - bare "ARRAY" (H2's own Meta's vendor name) is a syntax + // error ("expected 'data type'"), while "_VARCHAR" (the Postgres-flavoured default) is + // meaningless to H2. + private val arrayStringMeta: Meta[Array[String]] = { + val vendorTypeNames = NonEmptyList.of("VARCHAR ARRAY") + val get: Get[Array[String]] = Get + .Advanced + .one[Array[String]]( + JdbcType.Array, + vendorTypeNames, + (rs, n) => { + val a = rs.getArray(n) + if (a == null) null + // A null array *element* passes through this cast silently as `null` rather than + // being rejected - fine today since no fixture uses a nullable-element list column, + // but worth revisiting if one is ever added. + else a.getArray.asInstanceOf[Array[AnyRef]].map(_.asInstanceOf[String]) + } + ) + val put: Put[Array[String]] = Put.Advanced.array[String](vendorTypeNames, "VARCHAR") + new Meta(get, put) + } + + override def list[T: CDecoder: CEncoder](c: TestCodec[T]): TestCodec[List[T]] = { + val cm = c._1 + val decode = cm.get.get.k.asInstanceOf[String => T] + val encode = cm.put.put.k.asInstanceOf[T => String] + mkTestCodec(arrayStringMeta.imap(_.toList.map(decode))(_.map(encode).toArray)) + } + } + + // Where the seed scripts live - see the `Test / javaOptions` setting for grackle-doobie-h2 + // in build.sbt, which points this at testdata/h2/ regardless of the fork's working directory. + def testdataDir: File = + new File( + sys + .props + .getOrElse( + "grackle.h2.testdata", + throw new IllegalStateException( + "grackle.h2.testdata system property not set; see build.sbt's doobieh2 project"))) + + // A fresh named in-memory H2 database, seeded from every script in testdataDir. DB_CLOSE_DELAY + // keeps it alive between connections (each doobie transaction opens a new one); the explicit + // SHUTDOWN on release drops it so it doesn't outlive its suite. + def transactorResource: Resource[IO, Transactor[IO]] = { + val url = s"jdbc:h2:mem:grackle-${UUID.randomUUID()};DB_CLOSE_DELAY=-1" + + def seedScript: IO[String] = + IO.blocking { + Option(testdataDir.listFiles((_, name) => name.endsWith(".sql"))) + .fold(List.empty[File])(_.toList) + .sortBy(_.getName) + .map(f => new String(Files.readAllBytes(f.toPath), "UTF-8")) + .mkString("\n") + } + + def exec(sql: String): IO[Unit] = + IO.blocking { + Using.resource(DriverManager.getConnection(url, "sa", "")) { conn => + Using.resource(conn.createStatement())(_.execute(sql)) + } + }.void + + val mkTransactor = + Transactor.fromDriverManager[IO]("org.h2.Driver", url, "sa", "", None) + + Resource.make(seedScript.flatMap(exec).as(mkTransactor))(_ => exec("SHUTDOWN")) + } + + val transactorFixture: IOFixture[Transactor[IO]] = + ResourceSuiteLocalFixture("doobieh2", transactorResource) + override def munitFixtures: Seq[IOFixture[_]] = Seq(transactorFixture) + + def transactor: Transactor[IO] = transactorFixture() +} diff --git a/modules/doobie-h2/src/test/scala/DoobieH2Suites.scala b/modules/doobie-h2/src/test/scala/DoobieH2Suites.scala new file mode 100644 index 00000000..55cd6cb9 --- /dev/null +++ b/modules/doobie-h2/src/test/scala/DoobieH2Suites.scala @@ -0,0 +1,267 @@ +// Copyright (c) 2016-2025 Association of Universities for Research in Astronomy, Inc. (AURA) +// Copyright (c) 2016-2025 Grackle Contributors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package grackle.doobie.h2.test + +// Every shared sql-core suite is wired up here, matching the doobie-pg/doobie-oracle/ +// doobie-mssql/doobie-sqlite suites this is modelled on. + +import cats.effect.{IO, Resource} +import munit.catseffect.IOFixture +import org.typelevel.doobie.{Meta, Transactor} +import org.typelevel.doobie.implicits._ + +import grackle.Mapping +import grackle.doobie.DoobieMonitor +import grackle.sql.SqlStatsMonitor +import grackle.sql.test._ + +final class ArrayJoinSuite extends DoobieH2DatabaseSuite with SqlArrayJoinSuite { + lazy val mapping = new DoobieH2TestMapping(transactor) with SqlArrayJoinMapping[IO] +} + +final class CoalesceSuite extends DoobieH2DatabaseSuite with SqlCoalesceSuite { + type Fragment = org.typelevel.doobie.Fragment + def mapping: IO[(Mapping[IO], SqlStatsMonitor[IO, Fragment])] = + DoobieMonitor + .statsMonitor[IO] + .map(mon => (new DoobieH2TestMapping(transactor, mon) with SqlCoalesceMapping[IO], mon)) +} + +final class ComposedWorldSuite extends DoobieH2DatabaseSuite with SqlComposedWorldSuite { + def mapping: IO[(CurrencyMapping[IO], Mapping[IO])] = + for { + currencyMapping <- CurrencyMapping[IO] + } yield ( + currencyMapping, + new SqlComposedMapping( + new DoobieH2TestMapping(transactor) with SqlWorldMapping[IO], + currencyMapping)) +} + +final class CompositeKeySuite extends DoobieH2DatabaseSuite with SqlCompositeKeySuite { + lazy val mapping = new DoobieH2TestMapping(transactor) with SqlCompositeKeyMapping[IO] +} + +final class CursorJsonSuite extends DoobieH2DatabaseSuite with SqlCursorJsonSuite { + lazy val mapping = new DoobieH2TestMapping(transactor) with SqlCursorJsonMapping[IO] +} + +final class EmbeddingSuite extends DoobieH2DatabaseSuite with SqlEmbeddingSuite { + lazy val mapping = new DoobieH2TestMapping(transactor) with SqlEmbeddingMapping[IO] +} + +final class Embedding2Suite extends DoobieH2DatabaseSuite with SqlEmbedding2Suite { + lazy val mapping = new DoobieH2TestMapping(transactor) with SqlEmbedding2Mapping[IO] +} + +final class Embedding3Suite extends DoobieH2DatabaseSuite with SqlEmbedding3Suite { + lazy val mapping = new DoobieH2TestMapping(transactor) with SqlEmbedding3Mapping[IO] +} + +final class FilterJoinAliasSuite extends DoobieH2DatabaseSuite with SqlFilterJoinAliasSuite { + lazy val mapping = new DoobieH2TestMapping(transactor) with SqlFilterJoinAliasMapping[IO] +} + +final class FilterOrderOffsetLimitSuite + extends DoobieH2DatabaseSuite + with SqlFilterOrderOffsetLimitSuite { + lazy val mapping = new DoobieH2TestMapping(transactor) + with SqlFilterOrderOffsetLimitMapping[IO] +} + +final class FilterOrderOffsetLimit2Suite + extends DoobieH2DatabaseSuite + with SqlFilterOrderOffsetLimit2Suite { + lazy val mapping = new DoobieH2TestMapping(transactor) + with SqlFilterOrderOffsetLimit2Mapping[IO] +} + +final class GraphSuite extends DoobieH2DatabaseSuite with SqlGraphSuite { + lazy val mapping = new DoobieH2TestMapping(transactor) with SqlGraphMapping[IO] +} + +final class InterfacesSuite extends DoobieH2DatabaseSuite with SqlInterfacesSuite { + lazy val mapping = + new DoobieH2TestMapping(transactor) with SqlInterfacesMapping[IO] { + def entityType: TestCodec[EntityType] = + (Meta[Int].timap(EntityType.fromInt)(EntityType.toInt), false) + } +} + +final class InterfacesSuite2 extends DoobieH2DatabaseSuite with SqlInterfacesSuite2 { + lazy val mapping = + new DoobieH2TestMapping(transactor) with SqlInterfacesMapping2[IO] { + def entityType: TestCodec[EntityType] = + (Meta[Int].timap(EntityType.fromInt)(EntityType.toInt), false) + } +} + +final class JsonbSuite extends DoobieH2DatabaseSuite with SqlJsonbSuite { + lazy val mapping = new DoobieH2TestMapping(transactor) with SqlJsonbMapping[IO] +} + +final class LikeSuite extends DoobieH2DatabaseSuite with SqlLikeSuite { + lazy val mapping = new DoobieH2TestMapping(transactor) with SqlLikeMapping[IO] +} + +final class MappingValidatorValidSuite + extends DoobieH2DatabaseSuite + with SqlMappingValidatorValidSuite { + // no DB instance needed for this suite + lazy val mapping = new DoobieH2TestMapping(null) with SqlMappingValidatorValidMapping[IO] { + def genre: TestCodec[Genre] = (Meta[Int].imap(Genre.fromInt)(Genre.toInt), false) + def feature: TestCodec[Feature] = (Meta[String].imap(Feature.fromString)(_.toString), false) + } + override def munitFixtures: Seq[IOFixture[_]] = Nil +} + +final class MappingValidatorInvalidSuite + extends DoobieH2DatabaseSuite + with SqlMappingValidatorInvalidSuite { + // no DB instance needed for this suite + lazy val mapping = new DoobieH2TestMapping(null) with SqlMappingValidatorInvalidMapping[IO] + override def munitFixtures: Seq[IOFixture[_]] = Nil +} + +final class MixedSuite extends DoobieH2DatabaseSuite with SqlMixedSuite { + lazy val mapping = new DoobieH2TestMapping(transactor) with SqlMixedMapping[IO] +} + +final class MovieSuite extends DoobieH2DatabaseSuite with SqlMovieSuite { + lazy val mapping = + new DoobieH2TestMapping(transactor) with SqlMovieMapping[IO] { + def genre: TestCodec[Genre] = (Meta[Int].imap(Genre.fromInt)(Genre.toInt), false) + def feature: TestCodec[Feature] = + (Meta[String].imap(Feature.fromString)(_.toString), false) + def tagList: TestCodec[List[String]] = (Meta[Int].imap(Tags.fromInt)(Tags.toInt), false) + } +} + +final class MutationSuite extends DoobieH2DatabaseSuite with SqlMutationSuite { + // A resource that copies and drops the table used in the tests. + def withDuplicatedTables(transactor: Transactor[IO]): Resource[IO, Transactor[IO]] = { + val alloc = sql"CREATE TABLE city_copy AS SELECT * FROM city" + .update + .run + .transact(transactor) + .as(transactor) + val free = sql"DROP TABLE city_copy".update.run.transact(transactor).void + Resource.make(alloc)(_ => free) + } + + override def transactorResource: Resource[IO, Transactor[IO]] = + super.transactorResource.flatMap(withDuplicatedTables) + + lazy val mapping = + new DoobieH2TestMapping(transactor) with SqlMutationMapping[IO] { + def updatePopulation(id: Int, population: Int): IO[Unit] = + sql"UPDATE city_copy SET population=$population WHERE id=$id" + .update + .run + .transact(transactor) + .void + + // H2 has no `INSERT ... RETURNING` in the single-statement form Grackle would want here - + // its one-statement equivalent is a FINAL TABLE data-change delta table, a different + // construct - so the id is minted first and inserted explicitly. That's safe here because + // suites run single-threaded against a private database, so there's no concurrent inserter + // to race against between the SELECT and the INSERT. + def createCity(name: String, countryCode: String, population: Int): IO[Int] = { + val nextId = sql"SELECT COALESCE(MAX(id), 0) + 1 FROM city_copy".query[Int].unique + def insert(id: Int) = + sql""" + INSERT INTO city_copy (id, name, countrycode, district, population) + VALUES ($id, $name, $countryCode, 'ignored', $population) + """.update.run + (for { + id <- nextId + _ <- insert(id) + } yield id).transact(transactor) + } + } +} + +final class NestedEffectsSuite extends DoobieH2DatabaseSuite with SqlNestedEffectsSuite { + def mapping: IO[(CurrencyService[IO], Mapping[IO])] = + for { + currencyService0 <- CurrencyService[IO] + } yield { + val mapping = + new DoobieH2TestMapping(transactor) with SqlNestedEffectsMapping[IO] { + lazy val currencyService = currencyService0 + } + (currencyService0, mapping) + } +} + +final class Paging1Suite extends DoobieH2DatabaseSuite with SqlPaging1Suite { + lazy val mapping = new DoobieH2TestMapping(transactor) with SqlPaging1Mapping[IO] +} + +final class Paging2Suite extends DoobieH2DatabaseSuite with SqlPaging2Suite { + lazy val mapping = new DoobieH2TestMapping(transactor) with SqlPaging2Mapping[IO] +} + +final class Paging3Suite extends DoobieH2DatabaseSuite with SqlPaging3Suite { + lazy val mapping = new DoobieH2TestMapping(transactor) with SqlPaging3Mapping[IO] +} + +final class ProjectionSuite extends DoobieH2DatabaseSuite with SqlProjectionSuite { + lazy val mapping = new DoobieH2TestMapping(transactor) with SqlProjectionMapping[IO] +} + +final class RecursiveInterfacesSuite + extends DoobieH2DatabaseSuite + with SqlRecursiveInterfacesSuite { + lazy val mapping = + new DoobieH2TestMapping(transactor) with SqlRecursiveInterfacesMapping[IO] { + def itemType: TestCodec[ItemType] = + (Meta[Int].timap(ItemType.fromInt)(ItemType.toInt), false) + } +} + +final class SiblingListsSuite extends DoobieH2DatabaseSuite with SqlSiblingListsSuite { + lazy val mapping = new DoobieH2TestMapping(transactor) with SqlSiblingListsData[IO] +} + +final class TreeSuite extends DoobieH2DatabaseSuite with SqlTreeSuite { + lazy val mapping = new DoobieH2TestMapping(transactor) with SqlTreeMapping[IO] +} + +final class UnionsSuite extends DoobieH2DatabaseSuite with SqlUnionSuite { + lazy val mapping = new DoobieH2TestMapping(transactor) with SqlUnionsMapping[IO] +} + +final class WorldSuite extends DoobieH2DatabaseSuite with SqlWorldSuite { + lazy val mapping = new DoobieH2TestMapping(transactor) with SqlWorldMapping[IO] +} + +final class WorldCompilerSuite extends DoobieH2DatabaseSuite with SqlWorldCompilerSuite { + type Fragment = org.typelevel.doobie.Fragment + + def mapping: IO[(Mapping[IO], SqlStatsMonitor[IO, Fragment])] = + DoobieMonitor + .statsMonitor[IO] + .map(mon => (new DoobieH2TestMapping(transactor, mon) with SqlWorldMapping[IO], mon)) + + def simpleRestrictedQuerySql: String = + "SELECT country.code , country.name FROM country WHERE (( country.code = ?) )" + + def simpleFilteredQuerySql: String = + "SELECT city.id , city.name FROM city WHERE (city.name ILIKE ?)" + + def filterArg: String = "Linh%" +} diff --git a/testdata/h2/array-join.sql b/testdata/h2/array-join.sql new file mode 100644 index 00000000..f98086aa --- /dev/null +++ b/testdata/h2/array-join.sql @@ -0,0 +1,39 @@ +CREATE TABLE array_join_root ( + id VARCHAR PRIMARY KEY +); + +CREATE TABLE array_join_list_a ( + id VARCHAR PRIMARY KEY, + root_id VARCHAR, + a_elem VARCHAR ARRAY +); + +CREATE TABLE array_join_list_b ( + id VARCHAR PRIMARY KEY, + root_id VARCHAR, + b_elem INTEGER +); + +INSERT INTO array_join_root (id) VALUES +('r0'), +('r1'); + +INSERT INTO array_join_list_a (id, root_id, a_elem) VALUES +('a0', 'r0', ARRAY['foo1', 'foo2']), +('a1', 'r0', ARRAY['bar1', 'bar2']), +('a2', 'r0', ARRAY['baz1', 'baz2']), +('a3', 'r0', ARRAY['quux1', 'quux2']), +('a4', 'r1', ARRAY['foo11', 'foo22']), +('a5', 'r1', ARRAY['bar11', 'bar22']), +('a6', 'r1', ARRAY['baz11', 'baz22']), +('a7', 'r1', ARRAY['quux11', 'quux22']); + +INSERT INTO array_join_list_b (id, root_id, b_elem) VALUES +('b0', 'r0', '23'), +('b1', 'r0', '13'), +('b2', 'r0', '17'), +('b3', 'r0', '11'), +('b4', 'r1', '231'), +('b5', 'r1', '131'), +('b6', 'r1', '171'), +('b7', 'r1', '111'); diff --git a/testdata/h2/coalesce.sql b/testdata/h2/coalesce.sql new file mode 100644 index 00000000..2c092986 --- /dev/null +++ b/testdata/h2/coalesce.sql @@ -0,0 +1,42 @@ +CREATE TABLE r ( + id VARCHAR PRIMARY KEY +); + +CREATE TABLE ca ( + id VARCHAR PRIMARY KEY, + rid VARCHAR NOT NULL, + a INTEGER NOT NULL +); + +CREATE TABLE cb ( + id VARCHAR PRIMARY KEY, + rid VARCHAR NOT NULL, + b BOOLEAN NOT NULL +); + +CREATE TABLE cc ( + id VARCHAR PRIMARY KEY, + rid VARCHAR NOT NULL, + c TIMESTAMP(9) WITH TIME ZONE NOT NULL +); + +INSERT INTO r (id) VALUES +('R1'), +('R2'), +('R3'); + +INSERT INTO ca (id, rid, a) VALUES +('CA1a', 'R1', '10'), +('CA1b', 'R1', '11'), +('CA2', 'R2', '20'), +('CA3', 'R3', '30'); + +INSERT INTO cb (id, rid, b) VALUES +('CB2a', 'R2', 1), +('CB2b', 'R2', 0), +('CB3', 'R3', 1); + +INSERT INTO cc (id, rid, c) VALUES +('CC1', 'R1', '2020-05-27 21:00:00+02:00'), +('CC2', 'R2', '2004-10-19 10:23:54+02:00'), +('CC3', 'R3', '2014-10-19 10:23:54+02:00'); diff --git a/testdata/h2/composite-keys.sql b/testdata/h2/composite-keys.sql new file mode 100644 index 00000000..5a731707 --- /dev/null +++ b/testdata/h2/composite-keys.sql @@ -0,0 +1,24 @@ +CREATE TABLE composite_key_parent ( + key_1 INTEGER NOT NULL, + key_2 VARCHAR NOT NULL, + PRIMARY KEY (key_1, key_2) +); + +CREATE TABLE composite_key_child ( + id INTEGER PRIMARY KEY, + parent_1 INTEGER NOT NULL, + parent_2 VARCHAR NOT NULL, + FOREIGN KEY (parent_1, parent_2) REFERENCES composite_key_parent (key_1, key_2) +); + +INSERT INTO composite_key_parent (key_1, key_2) VALUES +(1, 'foo'), +(1, 'bar'), +(2, 'foo'), +(2, 'bar'); + +INSERT INTO composite_key_child (id, parent_1, parent_2) VALUES +(1, 1, 'foo'), +(2, 1, 'bar'), +(3, 2, 'foo'), +(4, 2, 'bar'); diff --git a/testdata/h2/cursor-json.sql b/testdata/h2/cursor-json.sql new file mode 100644 index 00000000..8a5f0f16 --- /dev/null +++ b/testdata/h2/cursor-json.sql @@ -0,0 +1,8 @@ +CREATE TABLE brands ( + id INTEGER PRIMARY KEY, + categories INTEGER +); + +INSERT INTO brands (id, categories) VALUES +('1', '8'), +('2', '16'); diff --git a/testdata/h2/embedding.sql b/testdata/h2/embedding.sql new file mode 100644 index 00000000..7c05cd30 --- /dev/null +++ b/testdata/h2/embedding.sql @@ -0,0 +1,39 @@ +CREATE TABLE films ( + title VARCHAR PRIMARY KEY, + synopsis_short VARCHAR, + synopsis_long VARCHAR +); + +CREATE TABLE series ( + title VARCHAR PRIMARY KEY, + synopsis_short VARCHAR, + synopsis_long VARCHAR +); + +CREATE TABLE episodes2 ( + title VARCHAR PRIMARY KEY, + series_title VARCHAR NOT NULL, + synopsis_short VARCHAR, + synopsis_long VARCHAR +); + +INSERT INTO films (title, synopsis_short, synopsis_long) VALUES +('Film 1', 'Short film 1', 'Long film 1'), +('Film 2', 'Short film 2', 'Long film 2'), +('Film 3', 'Short film 3', 'Long film 3'); + +INSERT INTO series (title, synopsis_short, synopsis_long) VALUES +('Series 1', 'Short series 1', 'Long series 1'), +('Series 2', 'Short series 2', 'Long series 2'), +('Series 3', 'Short series 3', 'Long series 3'); + +INSERT INTO episodes2 (title, series_title, synopsis_short, synopsis_long) VALUES +('S01E01', 'Series 1', 'Short S01E01', 'Long S01E01'), +('S01E02', 'Series 1', 'Short S01E02', 'Long S01E02'), +('S01E03', 'Series 1', 'Short S01E03', 'Long S01E03'), +('S02E01', 'Series 2', 'Short S02E01', 'Long S02E01'), +('S02E02', 'Series 2', 'Short S02E02', 'Long S02E02'), +('S02E03', 'Series 2', 'Short S02E03', 'Long S02E03'), +('S03E01', 'Series 3', 'Short S03E01', 'Long S03E01'), +('S03E02', 'Series 3', 'Short S03E02', 'Long S03E02'), +('S03E03', 'Series 3', 'Short S03E03', 'Long S03E03'); diff --git a/testdata/h2/embedding2.sql b/testdata/h2/embedding2.sql new file mode 100644 index 00000000..010ffc0e --- /dev/null +++ b/testdata/h2/embedding2.sql @@ -0,0 +1,18 @@ +CREATE TABLE t_program ( + c_program_id VARCHAR NOT NULL PRIMARY KEY +); + +CREATE TABLE t_observation ( + c_program_id VARCHAR NOT NULL REFERENCES t_program(c_program_id), + c_observation_id VARCHAR NOT NULL PRIMARY KEY +); + +INSERT INTO t_program (c_program_id) VALUES +('foo'), +('bar'); + +INSERT INTO t_observation (c_program_id, c_observation_id) VALUES +('foo', 'fo1'), +('foo', 'fo2'), +('bar', 'bo1'), +('bar', 'bo2'); diff --git a/testdata/h2/filter-join-alias.sql b/testdata/h2/filter-join-alias.sql new file mode 100644 index 00000000..e32945f0 --- /dev/null +++ b/testdata/h2/filter-join-alias.sql @@ -0,0 +1,15 @@ +CREATE TABLE episodes3 ( + id VARCHAR, + name VARCHAR, + PRIMARY KEY (id, name) +); + +CREATE TABLE images3 ( + public_url VARCHAR PRIMARY KEY, + id VARCHAR NOT NULL, + name VARCHAR NOT NULL +); + +INSERT INTO episodes3 (id, name) VALUES ('a', 'abc'); + +INSERT INTO images3 (public_url, id, name) VALUES ('test', 'a', 'abc'); diff --git a/testdata/h2/filter-order-offset-limit-2.sql b/testdata/h2/filter-order-offset-limit-2.sql new file mode 100644 index 00000000..e046f2a7 --- /dev/null +++ b/testdata/h2/filter-order-offset-limit-2.sql @@ -0,0 +1,48 @@ +CREATE TABLE root_2 ( + id VARCHAR PRIMARY KEY +); + +CREATE TABLE containers_2 ( + id VARCHAR PRIMARY KEY, + root_id VARCHAR +); + +CREATE TABLE lista_2 ( + id VARCHAR PRIMARY KEY, + container_id VARCHAR +); + +CREATE TABLE listb_2 ( + id VARCHAR PRIMARY KEY, + container_id VARCHAR +); + +INSERT INTO root_2 (id) VALUES +('r0'), +('r1'); + +INSERT INTO containers_2 (id, root_id) VALUES +('c0', 'r0'), +('c1', 'r0'), +('c2', 'r1'), +('c3', 'r1'); + +INSERT INTO lista_2 (id, container_id) VALUES +('a00', 'c0'), +('a01', 'c0'), +('a10', 'c1'), +('a11', 'c1'), +('a20', 'c2'), +('a21', 'c2'), +('a30', 'c3'), +('a31', 'c3'); + +INSERT INTO listb_2 (id, container_id) VALUES +('b00', 'c0'), +('b01', 'c0'), +('b10', 'c1'), +('b11', 'c1'), +('b20', 'c2'), +('b21', 'c2'), +('b30', 'c3'), +('b31', 'c3'); diff --git a/testdata/h2/filter-order-offset-limit.sql b/testdata/h2/filter-order-offset-limit.sql new file mode 100644 index 00000000..80cc2af4 --- /dev/null +++ b/testdata/h2/filter-order-offset-limit.sql @@ -0,0 +1,39 @@ +CREATE TABLE root ( + id VARCHAR PRIMARY KEY +); + +CREATE TABLE lista ( + id VARCHAR PRIMARY KEY, + root_id VARCHAR, + a_elem VARCHAR +); + +CREATE TABLE listb ( + id VARCHAR PRIMARY KEY, + root_id VARCHAR, + b_elem INTEGER +); + +INSERT INTO root (id) VALUES +('r0'), +('r1'); + +INSERT INTO lista (id, root_id, a_elem) VALUES +('a0', 'r0', 'foo'), +('a1', 'r0', 'bar'), +('a2', 'r0', 'baz'), +('a3', 'r0', 'quux'), +('a4', 'r1', 'foo1'), +('a5', 'r1', 'bar1'), +('a6', 'r1', 'baz1'), +('a7', 'r1', 'quux1'); + +INSERT INTO listb (id, root_id, b_elem) VALUES +('b0', 'r0', 23), +('b1', 'r0', 13), +('b2', 'r0', 17), +('b3', 'r0', 11), +('b4', 'r1', 231), +('b5', 'r1', 131), +('b6', 'r1', 171), +('b7', 'r1', 111); diff --git a/testdata/h2/graph.sql b/testdata/h2/graph.sql new file mode 100644 index 00000000..2644d870 --- /dev/null +++ b/testdata/h2/graph.sql @@ -0,0 +1,21 @@ +CREATE TABLE graph_node ( + id INTEGER PRIMARY KEY +); + +CREATE TABLE graph_edge ( + id INTEGER PRIMARY KEY, + a INTEGER, + b INTEGER +); + +INSERT INTO graph_node (id) VALUES +('1'), +('2'), +('3'), +('4'); + +INSERT INTO graph_edge (id, a, b) VALUES +('12', '1', '2'), +('13', '1', '3'), +('24', '2', '4'), +('34', '3', '4'); diff --git a/testdata/h2/interfaces.sql b/testdata/h2/interfaces.sql new file mode 100644 index 00000000..cdd63fed --- /dev/null +++ b/testdata/h2/interfaces.sql @@ -0,0 +1,37 @@ +CREATE TABLE entities ( + id VARCHAR PRIMARY KEY, + entity_type INTEGER NOT NULL, + title VARCHAR, + synopsis_short VARCHAR, + synopsis_long VARCHAR, + film_rating VARCHAR, + film_label INTEGER, + series_number_of_episodes INTEGER, + series_label VARCHAR, + image_url VARCHAR, + hidden_image_url VARCHAR +); + +CREATE TABLE episodes ( + id VARCHAR PRIMARY KEY, + series_id VARCHAR NOT NULL, + title VARCHAR, + synopsis_short VARCHAR, + synopsis_long VARCHAR +); + +INSERT INTO entities (id, entity_type, title, synopsis_short, synopsis_long, film_rating, film_label, series_number_of_episodes, series_label, image_url, hidden_image_url) VALUES +('1', 1, 'Film 1', 'Short film 1', 'Long film 1', 'PG', 1, NULL, NULL, 'http://www.example.com/film1.jpg', NULL), +('2', 1, 'Film 2', 'Short film 2', 'Long film 2', 'U', 2, NULL, NULL, 'http://www.example.com/film2.jpg', NULL), +('3', 1, 'Film 3', 'Short film 3', 'Long film 3', '15', 3, NULL, NULL, 'http://www.example.com/film3.jpg', NULL), +('4', 2, 'Series 1', 'Short series 1', 'Long series 1', NULL, NULL, 5, 'One', NULL, 'hidden_series1.jpg'), +('5', 2, 'Series 2', 'Short series 2', 'Long series 2', NULL, NULL, 6, 'Two', NULL, 'hidden_series2.jpg'), +('6', 2, 'Series 3', 'Short series 3', 'Long series 3', NULL, NULL, 7, 'Three', NULL, 'hidden_series3.jpg'); + +INSERT INTO episodes (id, series_id, title, synopsis_short, synopsis_long) VALUES +('1', '4', 'S1E1', 'Short S1E1', 'Long S1E1'), +('2', '4', 'S1E2', 'Short S1E2', 'Long S1E2'), +('3', '5', 'S2E1', 'Short S2E1', 'Long S2E1'), +('4', '5', 'S2E2', 'Short S2E2', 'Long S2E2'), +('5', '6', 'S3E1', 'Short S3E1', 'Long S3E1'), +('6', '6', 'S3E2', 'Short S3E2', 'Long S3E2'); diff --git a/testdata/h2/jsonb.sql b/testdata/h2/jsonb.sql new file mode 100644 index 00000000..ade03cf4 --- /dev/null +++ b/testdata/h2/jsonb.sql @@ -0,0 +1,9 @@ +CREATE TABLE records ( + id INTEGER PRIMARY KEY, + record VARCHAR(1000) +); + +INSERT INTO records (id, record) VALUES +('1', '{"bool":true,"int":1,"float":1.3,"string":"foo","id":"Foo","array":[1,2,3],"choice":"ONE","object":{"id":"obj0","aField":27},"children":[{"id":"a0","aField":11},{"id":"b0","bField":"wibble"}]}'), +('2', '{"bool":false,"int":2,"float":2.4,"string":"bar","id":"Bar","array":[4,5,6],"choice":"TWO","object":{"id":"obj1","aField":28},"children":[{"id":"a1","aField":12},{"id":"b1","bField":"wobble"}]}'), +('3', '{"bool":true,"int":3,"float":3.5,"string":"baz","id":"Baz","array":[7,8,9],"choice":"THREE","object":{"id":"obj2","aField":29},"children":[{"id":"a2","aField":13},{"id":"b2","bField":"quux"}]}'); diff --git a/testdata/h2/like.sql b/testdata/h2/like.sql new file mode 100644 index 00000000..e8d5f0a2 --- /dev/null +++ b/testdata/h2/like.sql @@ -0,0 +1,9 @@ +CREATE TABLE likes ( + id INTEGER PRIMARY KEY, + notnullable VARCHAR NOT NULL, + nullable VARCHAR +); + +INSERT INTO likes (id, notnullable, nullable) VALUES +(1, 'foo', NULL), +(2, 'bar', 'baz'); diff --git a/testdata/h2/movies.sql b/testdata/h2/movies.sql new file mode 100644 index 00000000..2a46c895 --- /dev/null +++ b/testdata/h2/movies.sql @@ -0,0 +1,44 @@ +DROP TABLE IF EXISTS movies; + +CREATE TABLE movies ( + id UUID PRIMARY KEY, + title VARCHAR NOT NULL, + genre INTEGER NOT NULL, + releasedate DATE NOT NULL, + showtime TIME NOT NULL, + nextshowing TIMESTAMP(9) WITH TIME ZONE NOT NULL, + duration BIGINT NOT NULL, + categories VARCHAR ARRAY NOT NULL, + features VARCHAR ARRAY NOT NULL, + tags INTEGER NOT NULL +); + +INSERT INTO movies (id, title, genre, releasedate, showtime, nextshowing, duration, categories, features, tags) VALUES +('6a7837fc-b463-4d32-b628-0f4b3065cb21', 'Celine et Julie Vont en Bateau', '1', '1974-10-07', '19:35:00', '2020-05-22 19:35:00+00:00', 12300000, ARRAY['drama','comedy'], ARRAY['hd','hls'], '1'); + +INSERT INTO movies (id, title, genre, releasedate, showtime, nextshowing, duration, categories, features, tags) VALUES +('11daf8c0-11c3-4453-bfe1-cb6e6e2f9115', 'Duelle', '1', '1975-09-15', '19:20:00', '2020-05-27 19:20:00+00:00', 7260000, ARRAY['drama'], ARRAY['hd'], '1'); + +INSERT INTO movies (id, title, genre, releasedate, showtime, nextshowing, duration, categories, features, tags) VALUES +('aea9756f-621b-42d5-b130-71f3916c4ba3', 'L''Amour fou', '1', '1969-01-15', '21:00:00', '2020-05-27 21:00:00+00:00', 15120000, ARRAY['drama'], ARRAY['hd'], '2'); + +INSERT INTO movies (id, title, genre, releasedate, showtime, nextshowing, duration, categories, features, tags) VALUES +('2ddb041f-86c2-4bd3-848c-990a3862634e', 'Last Year at Marienbad', '1', '1961-06-25', '20:30:00', '2020-05-26 20:30:00+00:00', 5640000, ARRAY['drama'], ARRAY['hd'], '5'); + +INSERT INTO movies (id, title, genre, releasedate, showtime, nextshowing, duration, categories, features, tags) VALUES +('8ae5b13b-044c-4ff0-8b71-ccdb7d77cd88', 'Zazie dans le Métro', '3', '1960-10-28', '20:15:00', '2020-05-25 20:15:00+00:00', 5340000, ARRAY['drama','comedy'], ARRAY['hd'], '3'); + +INSERT INTO movies (id, title, genre, releasedate, showtime, nextshowing, duration, categories, features, tags) VALUES +('9dce9deb-9188-4cc2-9685-9842b8abdd34', 'Alphaville', '2', '1965-05-05', '19:45:00', '2020-05-19 19:45:00+00:00', 5940000, ARRAY['drama','science fiction'], ARRAY['hd'], '4'); + +INSERT INTO movies (id, title, genre, releasedate, showtime, nextshowing, duration, categories, features, tags) VALUES +('1bf00ac6-91ab-4e51-b686-3fd5e2324077', 'Stalker', '1', '1979-05-13', '15:30:00', '2020-05-19 15:30:00+00:00', 9660000, ARRAY['drama','science fiction'], ARRAY['hd'], '7'); + +INSERT INTO movies (id, title, genre, releasedate, showtime, nextshowing, duration, categories, features, tags) VALUES +('6a878e06-6563-4a0c-acd9-d28dcfb2e91a', 'Weekend', '3', '1967-12-29', '22:30:00', '2020-05-19 22:30:00+00:00', 6300000, ARRAY['drama','comedy'], ARRAY['hd'], '2'); + +INSERT INTO movies (id, title, genre, releasedate, showtime, nextshowing, duration, categories, features, tags) VALUES +('2a40415c-ea6a-413f-bbef-a80ae280c4ff', 'Daisies', '3', '1966-12-30', '21:30:00', '2020-05-15 21:30:00+00:00', 4560000, ARRAY['drama','comedy'], ARRAY['hd'], '6'); + +INSERT INTO movies (id, title, genre, releasedate, showtime, nextshowing, duration, categories, features, tags) VALUES +('2f6dcb0a-4122-4a21-a1c6-534744dd6b85', 'Le Pont du Nord', '1', '1982-01-13', '20:45:00', '2020-05-11 20:45:00+00:00', 7620000, ARRAY['drama'], ARRAY['hd'], '3'); diff --git a/testdata/h2/mutation.sql b/testdata/h2/mutation.sql new file mode 100644 index 00000000..f468cc5e --- /dev/null +++ b/testdata/h2/mutation.sql @@ -0,0 +1,3 @@ +-- No schema setup needed here: DoobieH2Suites.MutationSuite copies world.sql's city table into +-- city_copy at runtime and mints ids by hand (see createCity there), so this script is +-- intentionally empty. diff --git a/testdata/h2/projection.sql b/testdata/h2/projection.sql new file mode 100644 index 00000000..58a8fe19 --- /dev/null +++ b/testdata/h2/projection.sql @@ -0,0 +1,34 @@ +CREATE TABLE level0 ( + id VARCHAR PRIMARY KEY +); + +CREATE TABLE level1 ( + id VARCHAR PRIMARY KEY, + level0_id VARCHAR +); + +CREATE TABLE level2 ( + id VARCHAR PRIMARY KEY, + level1_id VARCHAR, + attr BOOLEAN +); + +INSERT INTO level0 (id) VALUES +('00'), +('01'); + +INSERT INTO level1 (id, level0_id) VALUES +('10', '00'), +('11', '00'), +('12', '01'), +('13', '01'); + +INSERT INTO level2 (id, level1_id, attr) VALUES +('20', '10', 0), +('21', '10', 0), +('22', '11', 0), +('23', '11', 0), +('24', '12', 1), +('25', '12', 0), +('26', '13', 0), +('27', '13', 0); diff --git a/testdata/h2/recursive-interfaces.sql b/testdata/h2/recursive-interfaces.sql new file mode 100644 index 00000000..ec782241 --- /dev/null +++ b/testdata/h2/recursive-interfaces.sql @@ -0,0 +1,17 @@ +CREATE TABLE recursive_interface_items ( + id VARCHAR PRIMARY KEY, + item_type INTEGER NOT NULL +); + +CREATE TABLE recursive_interface_next_items ( + id VARCHAR PRIMARY KEY, + next_item VARCHAR +); + +INSERT INTO recursive_interface_items (id, item_type) VALUES +('1', '1'), +('2', '2'); + +INSERT INTO recursive_interface_next_items (id, next_item) VALUES +('1', '2'), +('2', '1'); diff --git a/testdata/h2/sibling-lists.sql b/testdata/h2/sibling-lists.sql new file mode 100644 index 00000000..79146cfc --- /dev/null +++ b/testdata/h2/sibling-lists.sql @@ -0,0 +1,37 @@ +CREATE TABLE seq_scan_a +( + id VARCHAR PRIMARY KEY +); + +CREATE TABLE seq_scan_b +( + id VARCHAR PRIMARY KEY, + a_id VARCHAR NOT NULL +); + +CREATE INDEX seq_scan_b_a_id_idx ON seq_scan_b(a_id); + +CREATE TABLE seq_scan_c +( + id VARCHAR PRIMARY KEY, + b_id VARCHAR NOT NULL, + name_c VARCHAR NOT NULL +); + +CREATE INDEX seq_scan_c_b_id_idx ON seq_scan_c(b_id); + +CREATE TABLE seq_scan_d +( + id VARCHAR PRIMARY KEY, + b_id VARCHAR NOT NULL, + name_d VARCHAR NOT NULL +); + +CREATE INDEX seq_scan_d_b_id_idx ON seq_scan_d(b_id); + +INSERT INTO seq_scan_a(id) VALUES('id_a_1'); + +INSERT INTO seq_scan_b(id, a_id) VALUES('id_b_1', 'id_a_1'); + +INSERT INTO seq_scan_c(id, b_id, name_c) VALUES('id_c_1', 'id_b_1', 'name_c'); +INSERT INTO seq_scan_d(id, b_id, name_d) VALUES('id_d_1', 'id_b_1', 'name_d'); diff --git a/testdata/h2/tree.sql b/testdata/h2/tree.sql new file mode 100644 index 00000000..35aadb47 --- /dev/null +++ b/testdata/h2/tree.sql @@ -0,0 +1,14 @@ +CREATE TABLE bintree ( + id INTEGER PRIMARY KEY, + left_child INTEGER, + right_child INTEGER +); + +INSERT INTO bintree (id, left_child, right_child) VALUES +(0, 1, 2), +(1, 3, 4), +(2, 5, 6), +(3, NULL, NULL), +(4, NULL, NULL), +(5, NULL, NULL), +(6, NULL, NULL); diff --git a/testdata/h2/unions.sql b/testdata/h2/unions.sql new file mode 100644 index 00000000..5fe8abf2 --- /dev/null +++ b/testdata/h2/unions.sql @@ -0,0 +1,10 @@ +CREATE TABLE collections ( + id VARCHAR PRIMARY KEY, + item_type VARCHAR NOT NULL, + itema VARCHAR, + itemb VARCHAR +); + +INSERT INTO collections (id, item_type, itema, itemb) VALUES +('1', 'ItemA', 'A', NULL), +('2', 'ItemB', NULL, 'B'); diff --git a/testdata/h2/world.sql b/testdata/h2/world.sql new file mode 100644 index 00000000..de828ba5 --- /dev/null +++ b/testdata/h2/world.sql @@ -0,0 +1,5357 @@ +CREATE TABLE city ( + id integer NOT NULL PRIMARY KEY, + name VARCHAR NOT NULL, + countrycode CHAR(3) NOT NULL, + district VARCHAR NOT NULL, + population integer NOT NULL +); + +CREATE TABLE country ( + code CHAR(3) NOT NULL PRIMARY KEY, + name VARCHAR NOT NULL, + continent VARCHAR NOT NULL, + region VARCHAR NOT NULL, + surfacearea real NOT NULL, + indepyear smallint, + population integer NOT NULL, + lifeexpectancy real, + gnp numeric(10,2), + gnpold numeric(10,2), + localname VARCHAR NOT NULL, + governmentform VARCHAR NOT NULL, + headofstate VARCHAR, + capital integer, + code2 CHAR(2) NOT NULL, + FOREIGN KEY (capital) REFERENCES city(id) +); + +CREATE TABLE countrylanguage ( + countrycode CHAR(3) NOT NULL, + language VARCHAR NOT NULL, + isofficial BOOLEAN NOT NULL, + percentage real NOT NULL, + PRIMARY KEY (countrycode, language), + FOREIGN KEY (countrycode) REFERENCES country(code) +); + +INSERT INTO city (id, name, countrycode, district, population) VALUES +('1', 'Kabul', 'AFG', 'Kabol', '1780000'), +('2', 'Qandahar', 'AFG', 'Qandahar', '237500'), +('3', 'Herat', 'AFG', 'Herat', '186800'), +('4', 'Mazar-e-Sharif', 'AFG', 'Balkh', '127800'), +('5', 'Amsterdam', 'NLD', 'Noord-Holland', '731200'), +('6', 'Rotterdam', 'NLD', 'Zuid-Holland', '593321'), +('7', 'Haag', 'NLD', 'Zuid-Holland', '440900'), +('8', 'Utrecht', 'NLD', 'Utrecht', '234323'), +('9', 'Eindhoven', 'NLD', 'Noord-Brabant', '201843'), +('10', 'Tilburg', 'NLD', 'Noord-Brabant', '193238'), +('11', 'Groningen', 'NLD', 'Groningen', '172701'), +('12', 'Breda', 'NLD', 'Noord-Brabant', '160398'), +('13', 'Apeldoorn', 'NLD', 'Gelderland', '153491'), +('14', 'Nijmegen', 'NLD', 'Gelderland', '152463'), +('15', 'Enschede', 'NLD', 'Overijssel', '149544'), +('16', 'Haarlem', 'NLD', 'Noord-Holland', '148772'), +('17', 'Almere', 'NLD', 'Flevoland', '142465'), +('18', 'Arnhem', 'NLD', 'Gelderland', '138020'), +('19', 'Zaanstad', 'NLD', 'Noord-Holland', '135621'), +('20', '´s-Hertogenbosch', 'NLD', 'Noord-Brabant', '129170'), +('21', 'Amersfoort', 'NLD', 'Utrecht', '126270'), +('22', 'Maastricht', 'NLD', 'Limburg', '122087'), +('23', 'Dordrecht', 'NLD', 'Zuid-Holland', '119811'), +('24', 'Leiden', 'NLD', 'Zuid-Holland', '117196'), +('25', 'Haarlemmermeer', 'NLD', 'Noord-Holland', '110722'), +('26', 'Zoetermeer', 'NLD', 'Zuid-Holland', '110214'), +('27', 'Emmen', 'NLD', 'Drenthe', '105853'), +('28', 'Zwolle', 'NLD', 'Overijssel', '105819'), +('29', 'Ede', 'NLD', 'Gelderland', '101574'), +('30', 'Delft', 'NLD', 'Zuid-Holland', '95268'), +('31', 'Heerlen', 'NLD', 'Limburg', '95052'), +('32', 'Alkmaar', 'NLD', 'Noord-Holland', '92713'), +('33', 'Willemstad', 'ANT', 'Curaçao', '2345'), +('34', 'Tirana', 'ALB', 'Tirana', '270000'), +('35', 'Alger', 'DZA', 'Alger', '2168000'), +('36', 'Oran', 'DZA', 'Oran', '609823'), +('37', 'Constantine', 'DZA', 'Constantine', '443727'), +('38', 'Annaba', 'DZA', 'Annaba', '222518'), +('39', 'Batna', 'DZA', 'Batna', '183377'), +('40', 'Sétif', 'DZA', 'Sétif', '179055'), +('41', 'Sidi Bel Abbčs', 'DZA', 'Sidi Bel Abbčs', '153106'), +('42', 'Skikda', 'DZA', 'Skikda', '128747'), +('43', 'Biskra', 'DZA', 'Biskra', '128281'), +('44', 'Blida (el-Boulaida)', 'DZA', 'Blida', '127284'), +('45', 'Béjaďa', 'DZA', 'Béjaďa', '117162'), +('46', 'Mostaganem', 'DZA', 'Mostaganem', '115212'), +('47', 'Tébessa', 'DZA', 'Tébessa', '112007'), +('48', 'Tlemcen (Tilimsen)', 'DZA', 'Tlemcen', '110242'), +('49', 'Béchar', 'DZA', 'Béchar', '107311'), +('50', 'Tiaret', 'DZA', 'Tiaret', '100118'), +('51', 'Ech-Chleff (el-Asnam)', 'DZA', 'Chlef', '96794'), +('52', 'Ghardaďa', 'DZA', 'Ghardaďa', '89415'), +('53', 'Tafuna', 'ASM', 'Tutuila', '5200'), +('54', 'Fagatogo', 'ASM', 'Tutuila', '2323'), +('55', 'Andorra la Vella', 'AND', 'Andorra la Vella', '21189'), +('56', 'Luanda', 'AGO', 'Luanda', '2022000'), +('57', 'Huambo', 'AGO', 'Huambo', '163100'), +('58', 'Lobito', 'AGO', 'Benguela', '130000'), +('59', 'Benguela', 'AGO', 'Benguela', '128300'), +('60', 'Namibe', 'AGO', 'Namibe', '118200'), +('61', 'South Hill', 'AIA', '–', '961'), +('62', 'The Valley', 'AIA', '–', '595'), +('63', 'Saint John´s', 'ATG', 'St John', '24000'), +('64', 'Dubai', 'ARE', 'Dubai', '669181'), +('65', 'Abu Dhabi', 'ARE', 'Abu Dhabi', '398695'), +('66', 'Sharja', 'ARE', 'Sharja', '320095'), +('67', 'al-Ayn', 'ARE', 'Abu Dhabi', '225970'), +('68', 'Ajman', 'ARE', 'Ajman', '114395'), +('69', 'Buenos Aires', 'ARG', 'Distrito Federal', '2982146'), +('70', 'La Matanza', 'ARG', 'Buenos Aires', '1266461'), +('71', 'Córdoba', 'ARG', 'Córdoba', '1157507'), +('72', 'Rosario', 'ARG', 'Santa Fé', '907718'), +('73', 'Lomas de Zamora', 'ARG', 'Buenos Aires', '622013'), +('74', 'Quilmes', 'ARG', 'Buenos Aires', '559249'), +('75', 'Almirante Brown', 'ARG', 'Buenos Aires', '538918'), +('76', 'La Plata', 'ARG', 'Buenos Aires', '521936'), +('77', 'Mar del Plata', 'ARG', 'Buenos Aires', '512880'), +('78', 'San Miguel de Tucumán', 'ARG', 'Tucumán', '470809'), +('79', 'Lanús', 'ARG', 'Buenos Aires', '469735'), +('80', 'Merlo', 'ARG', 'Buenos Aires', '463846'), +('81', 'General San Martín', 'ARG', 'Buenos Aires', '422542'), +('82', 'Salta', 'ARG', 'Salta', '367550'), +('83', 'Moreno', 'ARG', 'Buenos Aires', '356993'), +('84', 'Santa Fé', 'ARG', 'Santa Fé', '353063'), +('85', 'Avellaneda', 'ARG', 'Buenos Aires', '353046'), +('86', 'Tres de Febrero', 'ARG', 'Buenos Aires', '352311'), +('87', 'Morón', 'ARG', 'Buenos Aires', '349246'), +('88', 'Florencio Varela', 'ARG', 'Buenos Aires', '315432'), +('89', 'San Isidro', 'ARG', 'Buenos Aires', '306341'), +('90', 'Tigre', 'ARG', 'Buenos Aires', '296226'), +('91', 'Malvinas Argentinas', 'ARG', 'Buenos Aires', '290335'), +('92', 'Vicente López', 'ARG', 'Buenos Aires', '288341'), +('93', 'Berazategui', 'ARG', 'Buenos Aires', '276916'), +('94', 'Corrientes', 'ARG', 'Corrientes', '258103'), +('95', 'San Miguel', 'ARG', 'Buenos Aires', '248700'), +('96', 'Bahía Blanca', 'ARG', 'Buenos Aires', '239810'), +('97', 'Esteban Echeverría', 'ARG', 'Buenos Aires', '235760'), +('98', 'Resistencia', 'ARG', 'Chaco', '229212'), +('99', 'José C. Paz', 'ARG', 'Buenos Aires', '221754'), +('100', 'Paraná', 'ARG', 'Entre Rios', '207041'), +('101', 'Godoy Cruz', 'ARG', 'Mendoza', '206998'), +('102', 'Posadas', 'ARG', 'Misiones', '201273'), +('103', 'Guaymallén', 'ARG', 'Mendoza', '200595'), +('104', 'Santiago del Estero', 'ARG', 'Santiago del Estero', '189947'), +('105', 'San Salvador de Jujuy', 'ARG', 'Jujuy', '178748'), +('106', 'Hurlingham', 'ARG', 'Buenos Aires', '170028'), +('107', 'Neuquén', 'ARG', 'Neuquén', '167296'), +('108', 'Ituzaingó', 'ARG', 'Buenos Aires', '158197'), +('109', 'San Fernando', 'ARG', 'Buenos Aires', '153036'), +('110', 'Formosa', 'ARG', 'Formosa', '147636'), +('111', 'Las Heras', 'ARG', 'Mendoza', '145823'), +('112', 'La Rioja', 'ARG', 'La Rioja', '138117'), +('113', 'San Fernando del Valle de Cata', 'ARG', 'Catamarca', '134935'), +('114', 'Río Cuarto', 'ARG', 'Córdoba', '134355'), +('115', 'Comodoro Rivadavia', 'ARG', 'Chubut', '124104'), +('116', 'Mendoza', 'ARG', 'Mendoza', '123027'), +('117', 'San Nicolás de los Arroyos', 'ARG', 'Buenos Aires', '119302'), +('118', 'San Juan', 'ARG', 'San Juan', '119152'), +('119', 'Escobar', 'ARG', 'Buenos Aires', '116675'), +('120', 'Concordia', 'ARG', 'Entre Rios', '116485'), +('121', 'Pilar', 'ARG', 'Buenos Aires', '113428'), +('122', 'San Luis', 'ARG', 'San Luis', '110136'), +('123', 'Ezeiza', 'ARG', 'Buenos Aires', '99578'), +('124', 'San Rafael', 'ARG', 'Mendoza', '94651'), +('125', 'Tandil', 'ARG', 'Buenos Aires', '91101'), +('126', 'Yerevan', 'ARM', 'Yerevan', '1248700'), +('127', 'Gjumri', 'ARM', 'Širak', '211700'), +('128', 'Vanadzor', 'ARM', 'Lori', '172700'), +('129', 'Oranjestad', 'ABW', '–', '29034'), +('130', 'Sydney', 'AUS', 'New South Wales', '3276207'), +('131', 'Melbourne', 'AUS', 'Victoria', '2865329'), +('132', 'Brisbane', 'AUS', 'Queensland', '1291117'), +('133', 'Perth', 'AUS', 'West Australia', '1096829'), +('134', 'Adelaide', 'AUS', 'South Australia', '978100'), +('135', 'Canberra', 'AUS', 'Capital Region', '322723'), +('136', 'Gold Coast', 'AUS', 'Queensland', '311932'), +('137', 'Newcastle', 'AUS', 'New South Wales', '270324'), +('138', 'Central Coast', 'AUS', 'New South Wales', '227657'), +('139', 'Wollongong', 'AUS', 'New South Wales', '219761'), +('140', 'Hobart', 'AUS', 'Tasmania', '126118'), +('141', 'Geelong', 'AUS', 'Victoria', '125382'), +('142', 'Townsville', 'AUS', 'Queensland', '109914'), +('143', 'Cairns', 'AUS', 'Queensland', '92273'), +('144', 'Baku', 'AZE', 'Baki', '1787800'), +('145', 'Gäncä', 'AZE', 'Gäncä', '299300'), +('146', 'Sumqayit', 'AZE', 'Sumqayit', '283000'), +('147', 'Mingäçevir', 'AZE', 'Mingäçevir', '93900'), +('148', 'Nassau', 'BHS', 'New Providence', '172000'), +('149', 'al-Manama', 'BHR', 'al-Manama', '148000'), +('150', 'Dhaka', 'BGD', 'Dhaka', '3612850'), +('151', 'Chittagong', 'BGD', 'Chittagong', '1392860'), +('152', 'Khulna', 'BGD', 'Khulna', '663340'), +('153', 'Rajshahi', 'BGD', 'Rajshahi', '294056'), +('154', 'Narayanganj', 'BGD', 'Dhaka', '202134'), +('155', 'Rangpur', 'BGD', 'Rajshahi', '191398'), +('156', 'Mymensingh', 'BGD', 'Dhaka', '188713'), +('157', 'Barisal', 'BGD', 'Barisal', '170232'), +('158', 'Tungi', 'BGD', 'Dhaka', '168702'), +('159', 'Jessore', 'BGD', 'Khulna', '139710'), +('160', 'Comilla', 'BGD', 'Chittagong', '135313'), +('161', 'Nawabganj', 'BGD', 'Rajshahi', '130577'), +('162', 'Dinajpur', 'BGD', 'Rajshahi', '127815'), +('163', 'Bogra', 'BGD', 'Rajshahi', '120170'), +('164', 'Sylhet', 'BGD', 'Sylhet', '117396'), +('165', 'Brahmanbaria', 'BGD', 'Chittagong', '109032'), +('166', 'Tangail', 'BGD', 'Dhaka', '106004'), +('167', 'Jamalpur', 'BGD', 'Dhaka', '103556'), +('168', 'Pabna', 'BGD', 'Rajshahi', '103277'), +('169', 'Naogaon', 'BGD', 'Rajshahi', '101266'), +('170', 'Sirajganj', 'BGD', 'Rajshahi', '99669'), +('171', 'Narsinghdi', 'BGD', 'Dhaka', '98342'), +('172', 'Saidpur', 'BGD', 'Rajshahi', '96777'), +('173', 'Gazipur', 'BGD', 'Dhaka', '96717'), +('174', 'Bridgetown', 'BRB', 'St Michael', '6070'), +('175', 'Antwerpen', 'BEL', 'Antwerpen', '446525'), +('176', 'Gent', 'BEL', 'East Flanderi', '224180'), +('177', 'Charleroi', 'BEL', 'Hainaut', '200827'), +('178', 'Ličge', 'BEL', 'Ličge', '185639'), +('179', 'Bruxelles [Brussel]', 'BEL', 'Bryssel', '133859'), +('180', 'Brugge', 'BEL', 'West Flanderi', '116246'), +('181', 'Schaerbeek', 'BEL', 'Bryssel', '105692'), +('182', 'Namur', 'BEL', 'Namur', '105419'), +('183', 'Mons', 'BEL', 'Hainaut', '90935'), +('184', 'Belize City', 'BLZ', 'Belize City', '55810'), +('185', 'Belmopan', 'BLZ', 'Cayo', '7105'), +('186', 'Cotonou', 'BEN', 'Atlantique', '536827'), +('187', 'Porto-Novo', 'BEN', 'Ouémé', '194000'), +('188', 'Djougou', 'BEN', 'Atacora', '134099'), +('189', 'Parakou', 'BEN', 'Borgou', '103577'), +('190', 'Saint George', 'BMU', 'Saint George´s', '1800'), +('191', 'Hamilton', 'BMU', 'Hamilton', '1200'), +('192', 'Thimphu', 'BTN', 'Thimphu', '22000'), +('193', 'Santa Cruz de la Sierra', 'BOL', 'Santa Cruz', '935361'), +('194', 'La Paz', 'BOL', 'La Paz', '758141'), +('195', 'El Alto', 'BOL', 'La Paz', '534466'), +('196', 'Cochabamba', 'BOL', 'Cochabamba', '482800'), +('197', 'Oruro', 'BOL', 'Oruro', '223553'), +('198', 'Sucre', 'BOL', 'Chuquisaca', '178426'), +('199', 'Potosí', 'BOL', 'Potosí', '140642'), +('200', 'Tarija', 'BOL', 'Tarija', '125255'), +('201', 'Sarajevo', 'BIH', 'Federaatio', '360000'), +('202', 'Banja Luka', 'BIH', 'Republika Srpska', '143079'), +('203', 'Zenica', 'BIH', 'Federaatio', '96027'), +('204', 'Gaborone', 'BWA', 'Gaborone', '213017'), +('205', 'Francistown', 'BWA', 'Francistown', '101805'), +('206', 'Săo Paulo', 'BRA', 'Săo Paulo', '9968485'), +('207', 'Rio de Janeiro', 'BRA', 'Rio de Janeiro', '5598953'), +('208', 'Salvador', 'BRA', 'Bahia', '2302832'), +('209', 'Belo Horizonte', 'BRA', 'Minas Gerais', '2139125'), +('210', 'Fortaleza', 'BRA', 'Ceará', '2097757'), +('211', 'Brasília', 'BRA', 'Distrito Federal', '1969868'), +('212', 'Curitiba', 'BRA', 'Paraná', '1584232'), +('213', 'Recife', 'BRA', 'Pernambuco', '1378087'), +('214', 'Porto Alegre', 'BRA', 'Rio Grande do Sul', '1314032'), +('215', 'Manaus', 'BRA', 'Amazonas', '1255049'), +('216', 'Belém', 'BRA', 'Pará', '1186926'), +('217', 'Guarulhos', 'BRA', 'Săo Paulo', '1095874'), +('218', 'Goiânia', 'BRA', 'Goiás', '1056330'), +('219', 'Campinas', 'BRA', 'Săo Paulo', '950043'), +('220', 'Săo Gonçalo', 'BRA', 'Rio de Janeiro', '869254'), +('221', 'Nova Iguaçu', 'BRA', 'Rio de Janeiro', '862225'), +('222', 'Săo Luís', 'BRA', 'Maranhăo', '837588'), +('223', 'Maceió', 'BRA', 'Alagoas', '786288'), +('224', 'Duque de Caxias', 'BRA', 'Rio de Janeiro', '746758'), +('225', 'Săo Bernardo do Campo', 'BRA', 'Săo Paulo', '723132'), +('226', 'Teresina', 'BRA', 'Piauí', '691942'), +('227', 'Natal', 'BRA', 'Rio Grande do Norte', '688955'), +('228', 'Osasco', 'BRA', 'Săo Paulo', '659604'), +('229', 'Campo Grande', 'BRA', 'Mato Grosso do Sul', '649593'), +('230', 'Santo André', 'BRA', 'Săo Paulo', '630073'), +('231', 'Joăo Pessoa', 'BRA', 'Paraíba', '584029'), +('232', 'Jaboatăo dos Guararapes', 'BRA', 'Pernambuco', '558680'), +('233', 'Contagem', 'BRA', 'Minas Gerais', '520801'), +('234', 'Săo José dos Campos', 'BRA', 'Săo Paulo', '515553'), +('235', 'Uberlândia', 'BRA', 'Minas Gerais', '487222'), +('236', 'Feira de Santana', 'BRA', 'Bahia', '479992'), +('237', 'Ribeirăo Preto', 'BRA', 'Săo Paulo', '473276'), +('238', 'Sorocaba', 'BRA', 'Săo Paulo', '466823'), +('239', 'Niterói', 'BRA', 'Rio de Janeiro', '459884'), +('240', 'Cuiabá', 'BRA', 'Mato Grosso', '453813'), +('241', 'Juiz de Fora', 'BRA', 'Minas Gerais', '450288'), +('242', 'Aracaju', 'BRA', 'Sergipe', '445555'), +('243', 'Săo Joăo de Meriti', 'BRA', 'Rio de Janeiro', '440052'), +('244', 'Londrina', 'BRA', 'Paraná', '432257'), +('245', 'Joinville', 'BRA', 'Santa Catarina', '428011'), +('246', 'Belford Roxo', 'BRA', 'Rio de Janeiro', '425194'), +('247', 'Santos', 'BRA', 'Săo Paulo', '408748'), +('248', 'Ananindeua', 'BRA', 'Pará', '400940'), +('249', 'Campos dos Goytacazes', 'BRA', 'Rio de Janeiro', '398418'), +('250', 'Mauá', 'BRA', 'Săo Paulo', '375055'), +('251', 'Carapicuíba', 'BRA', 'Săo Paulo', '357552'), +('252', 'Olinda', 'BRA', 'Pernambuco', '354732'), +('253', 'Campina Grande', 'BRA', 'Paraíba', '352497'), +('254', 'Săo José do Rio Preto', 'BRA', 'Săo Paulo', '351944'), +('255', 'Caxias do Sul', 'BRA', 'Rio Grande do Sul', '349581'), +('256', 'Moji das Cruzes', 'BRA', 'Săo Paulo', '339194'), +('257', 'Diadema', 'BRA', 'Săo Paulo', '335078'), +('258', 'Aparecida de Goiânia', 'BRA', 'Goiás', '324662'), +('259', 'Piracicaba', 'BRA', 'Săo Paulo', '319104'), +('260', 'Cariacica', 'BRA', 'Espírito Santo', '319033'), +('261', 'Vila Velha', 'BRA', 'Espírito Santo', '318758'), +('262', 'Pelotas', 'BRA', 'Rio Grande do Sul', '315415'), +('263', 'Bauru', 'BRA', 'Săo Paulo', '313670'), +('264', 'Porto Velho', 'BRA', 'Rondônia', '309750'), +('265', 'Serra', 'BRA', 'Espírito Santo', '302666'), +('266', 'Betim', 'BRA', 'Minas Gerais', '302108'), +('267', 'Jundíaí', 'BRA', 'Săo Paulo', '296127'), +('268', 'Canoas', 'BRA', 'Rio Grande do Sul', '294125'), +('269', 'Franca', 'BRA', 'Săo Paulo', '290139'), +('270', 'Săo Vicente', 'BRA', 'Săo Paulo', '286848'), +('271', 'Maringá', 'BRA', 'Paraná', '286461'), +('272', 'Montes Claros', 'BRA', 'Minas Gerais', '286058'), +('273', 'Anápolis', 'BRA', 'Goiás', '282197'), +('274', 'Florianópolis', 'BRA', 'Santa Catarina', '281928'), +('275', 'Petrópolis', 'BRA', 'Rio de Janeiro', '279183'), +('276', 'Itaquaquecetuba', 'BRA', 'Săo Paulo', '270874'), +('277', 'Vitória', 'BRA', 'Espírito Santo', '270626'), +('278', 'Ponta Grossa', 'BRA', 'Paraná', '268013'), +('279', 'Rio Branco', 'BRA', 'Acre', '259537'), +('280', 'Foz do Iguaçu', 'BRA', 'Paraná', '259425'), +('281', 'Macapá', 'BRA', 'Amapá', '256033'), +('282', 'Ilhéus', 'BRA', 'Bahia', '254970'), +('283', 'Vitória da Conquista', 'BRA', 'Bahia', '253587'), +('284', 'Uberaba', 'BRA', 'Minas Gerais', '249225'), +('285', 'Paulista', 'BRA', 'Pernambuco', '248473'), +('286', 'Limeira', 'BRA', 'Săo Paulo', '245497'), +('287', 'Blumenau', 'BRA', 'Santa Catarina', '244379'), +('288', 'Caruaru', 'BRA', 'Pernambuco', '244247'), +('289', 'Santarém', 'BRA', 'Pará', '241771'), +('290', 'Volta Redonda', 'BRA', 'Rio de Janeiro', '240315'), +('291', 'Novo Hamburgo', 'BRA', 'Rio Grande do Sul', '239940'), +('292', 'Caucaia', 'BRA', 'Ceará', '238738'), +('293', 'Santa Maria', 'BRA', 'Rio Grande do Sul', '238473'), +('294', 'Cascavel', 'BRA', 'Paraná', '237510'), +('295', 'Guarujá', 'BRA', 'Săo Paulo', '237206'), +('296', 'Ribeirăo das Neves', 'BRA', 'Minas Gerais', '232685'), +('297', 'Governador Valadares', 'BRA', 'Minas Gerais', '231724'), +('298', 'Taubaté', 'BRA', 'Săo Paulo', '229130'), +('299', 'Imperatriz', 'BRA', 'Maranhăo', '224564'), +('300', 'Gravataí', 'BRA', 'Rio Grande do Sul', '223011'), +('301', 'Embu', 'BRA', 'Săo Paulo', '222223'), +('302', 'Mossoró', 'BRA', 'Rio Grande do Norte', '214901'), +('303', 'Várzea Grande', 'BRA', 'Mato Grosso', '214435'), +('304', 'Petrolina', 'BRA', 'Pernambuco', '210540'), +('305', 'Barueri', 'BRA', 'Săo Paulo', '208426'), +('306', 'Viamăo', 'BRA', 'Rio Grande do Sul', '207557'), +('307', 'Ipatinga', 'BRA', 'Minas Gerais', '206338'), +('308', 'Juazeiro', 'BRA', 'Bahia', '201073'), +('309', 'Juazeiro do Norte', 'BRA', 'Ceará', '199636'), +('310', 'Taboăo da Serra', 'BRA', 'Săo Paulo', '197550'), +('311', 'Săo José dos Pinhais', 'BRA', 'Paraná', '196884'), +('312', 'Magé', 'BRA', 'Rio de Janeiro', '196147'), +('313', 'Suzano', 'BRA', 'Săo Paulo', '195434'), +('314', 'Săo Leopoldo', 'BRA', 'Rio Grande do Sul', '189258'), +('315', 'Marília', 'BRA', 'Săo Paulo', '188691'), +('316', 'Săo Carlos', 'BRA', 'Săo Paulo', '187122'), +('317', 'Sumaré', 'BRA', 'Săo Paulo', '186205'), +('318', 'Presidente Prudente', 'BRA', 'Săo Paulo', '185340'), +('319', 'Divinópolis', 'BRA', 'Minas Gerais', '185047'), +('320', 'Sete Lagoas', 'BRA', 'Minas Gerais', '182984'), +('321', 'Rio Grande', 'BRA', 'Rio Grande do Sul', '182222'), +('322', 'Itabuna', 'BRA', 'Bahia', '182148'), +('323', 'Jequié', 'BRA', 'Bahia', '179128'), +('324', 'Arapiraca', 'BRA', 'Alagoas', '178988'), +('325', 'Colombo', 'BRA', 'Paraná', '177764'), +('326', 'Americana', 'BRA', 'Săo Paulo', '177409'), +('327', 'Alvorada', 'BRA', 'Rio Grande do Sul', '175574'), +('328', 'Araraquara', 'BRA', 'Săo Paulo', '174381'), +('329', 'Itaboraí', 'BRA', 'Rio de Janeiro', '173977'), +('330', 'Santa Bárbara d´Oeste', 'BRA', 'Săo Paulo', '171657'), +('331', 'Nova Friburgo', 'BRA', 'Rio de Janeiro', '170697'), +('332', 'Jacareí', 'BRA', 'Săo Paulo', '170356'), +('333', 'Araçatuba', 'BRA', 'Săo Paulo', '169303'), +('334', 'Barra Mansa', 'BRA', 'Rio de Janeiro', '168953'), +('335', 'Praia Grande', 'BRA', 'Săo Paulo', '168434'), +('336', 'Marabá', 'BRA', 'Pará', '167795'), +('337', 'Criciúma', 'BRA', 'Santa Catarina', '167661'), +('338', 'Boa Vista', 'BRA', 'Roraima', '167185'), +('339', 'Passo Fundo', 'BRA', 'Rio Grande do Sul', '166343'), +('340', 'Dourados', 'BRA', 'Mato Grosso do Sul', '164716'), +('341', 'Santa Luzia', 'BRA', 'Minas Gerais', '164704'), +('342', 'Rio Claro', 'BRA', 'Săo Paulo', '163551'), +('343', 'Maracanaú', 'BRA', 'Ceará', '162022'), +('344', 'Guarapuava', 'BRA', 'Paraná', '160510'), +('345', 'Rondonópolis', 'BRA', 'Mato Grosso', '155115'), +('346', 'Săo José', 'BRA', 'Santa Catarina', '155105'), +('347', 'Cachoeiro de Itapemirim', 'BRA', 'Espírito Santo', '155024'), +('348', 'Nilópolis', 'BRA', 'Rio de Janeiro', '153383'), +('349', 'Itapevi', 'BRA', 'Săo Paulo', '150664'), +('350', 'Cabo de Santo Agostinho', 'BRA', 'Pernambuco', '149964'), +('351', 'Camaçari', 'BRA', 'Bahia', '149146'), +('352', 'Sobral', 'BRA', 'Ceará', '146005'), +('353', 'Itajaí', 'BRA', 'Santa Catarina', '145197'), +('354', 'Chapecó', 'BRA', 'Santa Catarina', '144158'), +('355', 'Cotia', 'BRA', 'Săo Paulo', '140042'), +('356', 'Lages', 'BRA', 'Santa Catarina', '139570'), +('357', 'Ferraz de Vasconcelos', 'BRA', 'Săo Paulo', '139283'), +('358', 'Indaiatuba', 'BRA', 'Săo Paulo', '135968'), +('359', 'Hortolândia', 'BRA', 'Săo Paulo', '135755'), +('360', 'Caxias', 'BRA', 'Maranhăo', '133980'), +('361', 'Săo Caetano do Sul', 'BRA', 'Săo Paulo', '133321'), +('362', 'Itu', 'BRA', 'Săo Paulo', '132736'), +('363', 'Nossa Senhora do Socorro', 'BRA', 'Sergipe', '131351'), +('364', 'Parnaíba', 'BRA', 'Piauí', '129756'), +('365', 'Poços de Caldas', 'BRA', 'Minas Gerais', '129683'), +('366', 'Teresópolis', 'BRA', 'Rio de Janeiro', '128079'), +('367', 'Barreiras', 'BRA', 'Bahia', '127801'), +('368', 'Castanhal', 'BRA', 'Pará', '127634'), +('369', 'Alagoinhas', 'BRA', 'Bahia', '126820'), +('370', 'Itapecerica da Serra', 'BRA', 'Săo Paulo', '126672'), +('371', 'Uruguaiana', 'BRA', 'Rio Grande do Sul', '126305'), +('372', 'Paranaguá', 'BRA', 'Paraná', '126076'), +('373', 'Ibirité', 'BRA', 'Minas Gerais', '125982'), +('374', 'Timon', 'BRA', 'Maranhăo', '125812'), +('375', 'Luziânia', 'BRA', 'Goiás', '125597'), +('376', 'Macaé', 'BRA', 'Rio de Janeiro', '125597'), +('377', 'Teófilo Otoni', 'BRA', 'Minas Gerais', '124489'), +('378', 'Moji-Guaçu', 'BRA', 'Săo Paulo', '123782'), +('379', 'Palmas', 'BRA', 'Tocantins', '121919'), +('380', 'Pindamonhangaba', 'BRA', 'Săo Paulo', '121904'), +('381', 'Francisco Morato', 'BRA', 'Săo Paulo', '121197'), +('382', 'Bagé', 'BRA', 'Rio Grande do Sul', '120793'), +('383', 'Sapucaia do Sul', 'BRA', 'Rio Grande do Sul', '120217'), +('384', 'Cabo Frio', 'BRA', 'Rio de Janeiro', '119503'), +('385', 'Itapetininga', 'BRA', 'Săo Paulo', '119391'), +('386', 'Patos de Minas', 'BRA', 'Minas Gerais', '119262'), +('387', 'Camaragibe', 'BRA', 'Pernambuco', '118968'), +('388', 'Bragança Paulista', 'BRA', 'Săo Paulo', '116929'), +('389', 'Queimados', 'BRA', 'Rio de Janeiro', '115020'), +('390', 'Araguaína', 'BRA', 'Tocantins', '114948'), +('391', 'Garanhuns', 'BRA', 'Pernambuco', '114603'), +('392', 'Vitória de Santo Antăo', 'BRA', 'Pernambuco', '113595'), +('393', 'Santa Rita', 'BRA', 'Paraíba', '113135'), +('394', 'Barbacena', 'BRA', 'Minas Gerais', '113079'), +('395', 'Abaetetuba', 'BRA', 'Pará', '111258'), +('396', 'Jaú', 'BRA', 'Săo Paulo', '109965'), +('397', 'Lauro de Freitas', 'BRA', 'Bahia', '109236'), +('398', 'Franco da Rocha', 'BRA', 'Săo Paulo', '108964'), +('399', 'Teixeira de Freitas', 'BRA', 'Bahia', '108441'), +('400', 'Varginha', 'BRA', 'Minas Gerais', '108314'), +('401', 'Ribeirăo Pires', 'BRA', 'Săo Paulo', '108121'), +('402', 'Sabará', 'BRA', 'Minas Gerais', '107781'), +('403', 'Catanduva', 'BRA', 'Săo Paulo', '107761'), +('404', 'Rio Verde', 'BRA', 'Goiás', '107755'), +('405', 'Botucatu', 'BRA', 'Săo Paulo', '107663'), +('406', 'Colatina', 'BRA', 'Espírito Santo', '107354'), +('407', 'Santa Cruz do Sul', 'BRA', 'Rio Grande do Sul', '106734'), +('408', 'Linhares', 'BRA', 'Espírito Santo', '106278'), +('409', 'Apucarana', 'BRA', 'Paraná', '105114'), +('410', 'Barretos', 'BRA', 'Săo Paulo', '104156'), +('411', 'Guaratinguetá', 'BRA', 'Săo Paulo', '103433'), +('412', 'Cachoeirinha', 'BRA', 'Rio Grande do Sul', '103240'), +('413', 'Codó', 'BRA', 'Maranhăo', '103153'), +('414', 'Jaraguá do Sul', 'BRA', 'Santa Catarina', '102580'), +('415', 'Cubatăo', 'BRA', 'Săo Paulo', '102372'), +('416', 'Itabira', 'BRA', 'Minas Gerais', '102217'), +('417', 'Itaituba', 'BRA', 'Pará', '101320'), +('418', 'Araras', 'BRA', 'Săo Paulo', '101046'), +('419', 'Resende', 'BRA', 'Rio de Janeiro', '100627'), +('420', 'Atibaia', 'BRA', 'Săo Paulo', '100356'), +('421', 'Pouso Alegre', 'BRA', 'Minas Gerais', '100028'), +('422', 'Toledo', 'BRA', 'Paraná', '99387'), +('423', 'Crato', 'BRA', 'Ceará', '98965'), +('424', 'Passos', 'BRA', 'Minas Gerais', '98570'), +('425', 'Araguari', 'BRA', 'Minas Gerais', '98399'), +('426', 'Săo José de Ribamar', 'BRA', 'Maranhăo', '98318'), +('427', 'Pinhais', 'BRA', 'Paraná', '98198'), +('428', 'Sertăozinho', 'BRA', 'Săo Paulo', '98140'), +('429', 'Conselheiro Lafaiete', 'BRA', 'Minas Gerais', '97507'), +('430', 'Paulo Afonso', 'BRA', 'Bahia', '97291'), +('431', 'Angra dos Reis', 'BRA', 'Rio de Janeiro', '96864'), +('432', 'Eunápolis', 'BRA', 'Bahia', '96610'), +('433', 'Salto', 'BRA', 'Săo Paulo', '96348'), +('434', 'Ourinhos', 'BRA', 'Săo Paulo', '96291'), +('435', 'Parnamirim', 'BRA', 'Rio Grande do Norte', '96210'), +('436', 'Jacobina', 'BRA', 'Bahia', '96131'), +('437', 'Coronel Fabriciano', 'BRA', 'Minas Gerais', '95933'), +('438', 'Birigui', 'BRA', 'Săo Paulo', '94685'), +('439', 'Tatuí', 'BRA', 'Săo Paulo', '93897'), +('440', 'Ji-Paraná', 'BRA', 'Rondônia', '93346'), +('441', 'Bacabal', 'BRA', 'Maranhăo', '93121'), +('442', 'Cametá', 'BRA', 'Pará', '92779'), +('443', 'Guaíba', 'BRA', 'Rio Grande do Sul', '92224'), +('444', 'Săo Lourenço da Mata', 'BRA', 'Pernambuco', '91999'), +('445', 'Santana do Livramento', 'BRA', 'Rio Grande do Sul', '91779'), +('446', 'Votorantim', 'BRA', 'Săo Paulo', '91777'), +('447', 'Campo Largo', 'BRA', 'Paraná', '91203'), +('448', 'Patos', 'BRA', 'Paraíba', '90519'), +('449', 'Ituiutaba', 'BRA', 'Minas Gerais', '90507'), +('450', 'Corumbá', 'BRA', 'Mato Grosso do Sul', '90111'), +('451', 'Palhoça', 'BRA', 'Santa Catarina', '89465'), +('452', 'Barra do Piraí', 'BRA', 'Rio de Janeiro', '89388'), +('453', 'Bento Gonçalves', 'BRA', 'Rio Grande do Sul', '89254'), +('454', 'Poá', 'BRA', 'Săo Paulo', '89236'), +('455', 'Águas Lindas de Goiás', 'BRA', 'Goiás', '89200'), +('456', 'London', 'GBR', 'England', '7285000'), +('457', 'Birmingham', 'GBR', 'England', '1013000'), +('458', 'Glasgow', 'GBR', 'Scotland', '619680'), +('459', 'Liverpool', 'GBR', 'England', '461000'), +('460', 'Edinburgh', 'GBR', 'Scotland', '450180'), +('461', 'Sheffield', 'GBR', 'England', '431607'), +('462', 'Manchester', 'GBR', 'England', '430000'), +('463', 'Leeds', 'GBR', 'England', '424194'), +('464', 'Bristol', 'GBR', 'England', '402000'), +('465', 'Cardiff', 'GBR', 'Wales', '321000'), +('466', 'Coventry', 'GBR', 'England', '304000'), +('467', 'Leicester', 'GBR', 'England', '294000'), +('468', 'Bradford', 'GBR', 'England', '289376'), +('469', 'Belfast', 'GBR', 'North Ireland', '287500'), +('470', 'Nottingham', 'GBR', 'England', '287000'), +('471', 'Kingston upon Hull', 'GBR', 'England', '262000'), +('472', 'Plymouth', 'GBR', 'England', '253000'), +('473', 'Stoke-on-Trent', 'GBR', 'England', '252000'), +('474', 'Wolverhampton', 'GBR', 'England', '242000'), +('475', 'Derby', 'GBR', 'England', '236000'), +('476', 'Swansea', 'GBR', 'Wales', '230000'), +('477', 'Southampton', 'GBR', 'England', '216000'), +('478', 'Aberdeen', 'GBR', 'Scotland', '213070'), +('479', 'Northampton', 'GBR', 'England', '196000'), +('480', 'Dudley', 'GBR', 'England', '192171'), +('481', 'Portsmouth', 'GBR', 'England', '190000'), +('482', 'Newcastle upon Tyne', 'GBR', 'England', '189150'), +('483', 'Sunderland', 'GBR', 'England', '183310'), +('484', 'Luton', 'GBR', 'England', '183000'), +('485', 'Swindon', 'GBR', 'England', '180000'), +('486', 'Southend-on-Sea', 'GBR', 'England', '176000'), +('487', 'Walsall', 'GBR', 'England', '174739'), +('488', 'Bournemouth', 'GBR', 'England', '162000'), +('489', 'Peterborough', 'GBR', 'England', '156000'), +('490', 'Brighton', 'GBR', 'England', '156124'), +('491', 'Blackpool', 'GBR', 'England', '151000'), +('492', 'Dundee', 'GBR', 'Scotland', '146690'), +('493', 'West Bromwich', 'GBR', 'England', '146386'), +('494', 'Reading', 'GBR', 'England', '148000'), +('495', 'Oldbury/Smethwick (Warley)', 'GBR', 'England', '145542'), +('496', 'Middlesbrough', 'GBR', 'England', '145000'), +('497', 'Huddersfield', 'GBR', 'England', '143726'), +('498', 'Oxford', 'GBR', 'England', '144000'), +('499', 'Poole', 'GBR', 'England', '141000'), +('500', 'Bolton', 'GBR', 'England', '139020'), +('501', 'Blackburn', 'GBR', 'England', '140000'), +('502', 'Newport', 'GBR', 'Wales', '139000'), +('503', 'Preston', 'GBR', 'England', '135000'), +('504', 'Stockport', 'GBR', 'England', '132813'), +('505', 'Norwich', 'GBR', 'England', '124000'), +('506', 'Rotherham', 'GBR', 'England', '121380'), +('507', 'Cambridge', 'GBR', 'England', '121000'), +('508', 'Watford', 'GBR', 'England', '113080'), +('509', 'Ipswich', 'GBR', 'England', '114000'), +('510', 'Slough', 'GBR', 'England', '112000'), +('511', 'Exeter', 'GBR', 'England', '111000'), +('512', 'Cheltenham', 'GBR', 'England', '106000'), +('513', 'Gloucester', 'GBR', 'England', '107000'), +('514', 'Saint Helens', 'GBR', 'England', '106293'), +('515', 'Sutton Coldfield', 'GBR', 'England', '106001'), +('516', 'York', 'GBR', 'England', '104425'), +('517', 'Oldham', 'GBR', 'England', '103931'), +('518', 'Basildon', 'GBR', 'England', '100924'), +('519', 'Worthing', 'GBR', 'England', '100000'), +('520', 'Chelmsford', 'GBR', 'England', '97451'), +('521', 'Colchester', 'GBR', 'England', '96063'), +('522', 'Crawley', 'GBR', 'England', '97000'), +('523', 'Gillingham', 'GBR', 'England', '92000'), +('524', 'Solihull', 'GBR', 'England', '94531'), +('525', 'Rochdale', 'GBR', 'England', '94313'), +('526', 'Birkenhead', 'GBR', 'England', '93087'), +('527', 'Worcester', 'GBR', 'England', '95000'), +('528', 'Hartlepool', 'GBR', 'England', '92000'), +('529', 'Halifax', 'GBR', 'England', '91069'), +('530', 'Woking/Byfleet', 'GBR', 'England', '92000'), +('531', 'Southport', 'GBR', 'England', '90959'), +('532', 'Maidstone', 'GBR', 'England', '90878'), +('533', 'Eastbourne', 'GBR', 'England', '90000'), +('534', 'Grimsby', 'GBR', 'England', '89000'), +('535', 'Saint Helier', 'GBR', 'Jersey', '27523'), +('536', 'Douglas', 'GBR', '–', '23487'), +('537', 'Road Town', 'VGB', 'Tortola', '8000'), +('538', 'Bandar Seri Begawan', 'BRN', 'Brunei and Muara', '21484'), +('539', 'Sofija', 'BGR', 'Grad Sofija', '1122302'), +('540', 'Plovdiv', 'BGR', 'Plovdiv', '342584'), +('541', 'Varna', 'BGR', 'Varna', '299801'), +('542', 'Burgas', 'BGR', 'Burgas', '195255'), +('543', 'Ruse', 'BGR', 'Ruse', '166467'), +('544', 'Stara Zagora', 'BGR', 'Haskovo', '147939'), +('545', 'Pleven', 'BGR', 'Lovec', '121952'), +('546', 'Sliven', 'BGR', 'Burgas', '105530'), +('547', 'Dobric', 'BGR', 'Varna', '100399'), +('548', 'Šumen', 'BGR', 'Varna', '94686'), +('549', 'Ouagadougou', 'BFA', 'Kadiogo', '824000'), +('550', 'Bobo-Dioulasso', 'BFA', 'Houet', '300000'), +('551', 'Koudougou', 'BFA', 'Boulkiemdé', '105000'), +('552', 'Bujumbura', 'BDI', 'Bujumbura', '300000'), +('553', 'George Town', 'CYM', 'Grand Cayman', '19600'), +('554', 'Santiago de Chile', 'CHL', 'Santiago', '4703954'), +('555', 'Puente Alto', 'CHL', 'Santiago', '386236'), +('556', 'Vińa del Mar', 'CHL', 'Valparaíso', '312493'), +('557', 'Valparaíso', 'CHL', 'Valparaíso', '293800'), +('558', 'Talcahuano', 'CHL', 'Bíobío', '277752'), +('559', 'Antofagasta', 'CHL', 'Antofagasta', '251429'), +('560', 'San Bernardo', 'CHL', 'Santiago', '241910'), +('561', 'Temuco', 'CHL', 'La Araucanía', '233041'), +('562', 'Concepción', 'CHL', 'Bíobío', '217664'), +('563', 'Rancagua', 'CHL', 'O´Higgins', '212977'), +('564', 'Arica', 'CHL', 'Tarapacá', '189036'), +('565', 'Talca', 'CHL', 'Maule', '187557'), +('566', 'Chillán', 'CHL', 'Bíobío', '178182'), +('567', 'Iquique', 'CHL', 'Tarapacá', '177892'), +('568', 'Los Angeles', 'CHL', 'Bíobío', '158215'), +('569', 'Puerto Montt', 'CHL', 'Los Lagos', '152194'), +('570', 'Coquimbo', 'CHL', 'Coquimbo', '143353'), +('571', 'Osorno', 'CHL', 'Los Lagos', '141468'), +('572', 'La Serena', 'CHL', 'Coquimbo', '137409'), +('573', 'Calama', 'CHL', 'Antofagasta', '137265'), +('574', 'Valdivia', 'CHL', 'Los Lagos', '133106'), +('575', 'Punta Arenas', 'CHL', 'Magallanes', '125631'), +('576', 'Copiapó', 'CHL', 'Atacama', '120128'), +('577', 'Quilpué', 'CHL', 'Valparaíso', '118857'), +('578', 'Curicó', 'CHL', 'Maule', '115766'), +('579', 'Ovalle', 'CHL', 'Coquimbo', '94854'), +('580', 'Coronel', 'CHL', 'Bíobío', '93061'), +('581', 'San Pedro de la Paz', 'CHL', 'Bíobío', '91684'), +('582', 'Melipilla', 'CHL', 'Santiago', '91056'), +('583', 'Avarua', 'COK', 'Rarotonga', '11900'), +('584', 'San José', 'CRI', 'San José', '339131'), +('585', 'Djibouti', 'DJI', 'Djibouti', '383000'), +('586', 'Roseau', 'DMA', 'St George', '16243'), +('587', 'Santo Domingo de Guzmán', 'DOM', 'Distrito Nacional', '1609966'), +('588', 'Santiago de los Caballeros', 'DOM', 'Santiago', '365463'), +('589', 'La Romana', 'DOM', 'La Romana', '140204'), +('590', 'San Pedro de Macorís', 'DOM', 'San Pedro de Macorís', '124735'), +('591', 'San Francisco de Macorís', 'DOM', 'Duarte', '108485'), +('592', 'San Felipe de Puerto Plata', 'DOM', 'Puerto Plata', '89423'), +('593', 'Guayaquil', 'ECU', 'Guayas', '2070040'), +('594', 'Quito', 'ECU', 'Pichincha', '1573458'), +('595', 'Cuenca', 'ECU', 'Azuay', '270353'), +('596', 'Machala', 'ECU', 'El Oro', '210368'), +('597', 'Santo Domingo de los Colorados', 'ECU', 'Pichincha', '202111'), +('598', 'Portoviejo', 'ECU', 'Manabí', '176413'), +('599', 'Ambato', 'ECU', 'Tungurahua', '169612'), +('600', 'Manta', 'ECU', 'Manabí', '164739'), +('601', 'Duran [Eloy Alfaro]', 'ECU', 'Guayas', '152514'), +('602', 'Ibarra', 'ECU', 'Imbabura', '130643'), +('603', 'Quevedo', 'ECU', 'Los Ríos', '129631'), +('604', 'Milagro', 'ECU', 'Guayas', '124177'), +('605', 'Loja', 'ECU', 'Loja', '123875'), +('606', 'Ríobamba', 'ECU', 'Chimborazo', '123163'), +('607', 'Esmeraldas', 'ECU', 'Esmeraldas', '123045'), +('608', 'Cairo', 'EGY', 'Kairo', '6789479'), +('609', 'Alexandria', 'EGY', 'Aleksandria', '3328196'), +('610', 'Giza', 'EGY', 'Giza', '2221868'), +('611', 'Shubra al-Khayma', 'EGY', 'al-Qalyubiya', '870716'), +('612', 'Port Said', 'EGY', 'Port Said', '469533'), +('613', 'Suez', 'EGY', 'Suez', '417610'), +('614', 'al-Mahallat al-Kubra', 'EGY', 'al-Gharbiya', '395402'), +('615', 'Tanta', 'EGY', 'al-Gharbiya', '371010'), +('616', 'al-Mansura', 'EGY', 'al-Daqahliya', '369621'), +('617', 'Luxor', 'EGY', 'Luxor', '360503'), +('618', 'Asyut', 'EGY', 'Asyut', '343498'), +('619', 'Bahtim', 'EGY', 'al-Qalyubiya', '275807'), +('620', 'Zagazig', 'EGY', 'al-Sharqiya', '267351'), +('621', 'al-Faiyum', 'EGY', 'al-Faiyum', '260964'), +('622', 'Ismailia', 'EGY', 'Ismailia', '254477'), +('623', 'Kafr al-Dawwar', 'EGY', 'al-Buhayra', '231978'), +('624', 'Assuan', 'EGY', 'Assuan', '219017'), +('625', 'Damanhur', 'EGY', 'al-Buhayra', '212203'), +('626', 'al-Minya', 'EGY', 'al-Minya', '201360'), +('627', 'Bani Suwayf', 'EGY', 'Bani Suwayf', '172032'), +('628', 'Qina', 'EGY', 'Qina', '171275'), +('629', 'Sawhaj', 'EGY', 'Sawhaj', '170125'), +('630', 'Shibin al-Kawm', 'EGY', 'al-Minufiya', '159909'), +('631', 'Bulaq al-Dakrur', 'EGY', 'Giza', '148787'), +('632', 'Banha', 'EGY', 'al-Qalyubiya', '145792'), +('633', 'Warraq al-Arab', 'EGY', 'Giza', '127108'), +('634', 'Kafr al-Shaykh', 'EGY', 'Kafr al-Shaykh', '124819'), +('635', 'Mallawi', 'EGY', 'al-Minya', '119283'), +('636', 'Bilbays', 'EGY', 'al-Sharqiya', '113608'), +('637', 'Mit Ghamr', 'EGY', 'al-Daqahliya', '101801'), +('638', 'al-Arish', 'EGY', 'Shamal Sina', '100447'), +('639', 'Talkha', 'EGY', 'al-Daqahliya', '97700'), +('640', 'Qalyub', 'EGY', 'al-Qalyubiya', '97200'), +('641', 'Jirja', 'EGY', 'Sawhaj', '95400'), +('642', 'Idfu', 'EGY', 'Qina', '94200'), +('643', 'al-Hawamidiya', 'EGY', 'Giza', '91700'), +('644', 'Disuq', 'EGY', 'Kafr al-Shaykh', '91300'), +('645', 'San Salvador', 'SLV', 'San Salvador', '415346'), +('646', 'Santa Ana', 'SLV', 'Santa Ana', '139389'), +('647', 'Mejicanos', 'SLV', 'San Salvador', '138800'), +('648', 'Soyapango', 'SLV', 'San Salvador', '129800'), +('649', 'San Miguel', 'SLV', 'San Miguel', '127696'), +('650', 'Nueva San Salvador', 'SLV', 'La Libertad', '98400'), +('651', 'Apopa', 'SLV', 'San Salvador', '88800'), +('652', 'Asmara', 'ERI', 'Maekel', '431000'), +('653', 'Madrid', 'ESP', 'Madrid', '2879052'), +('654', 'Barcelona', 'ESP', 'Katalonia', '1503451'), +('655', 'Valencia', 'ESP', 'Valencia', '739412'), +('656', 'Sevilla', 'ESP', 'Andalusia', '701927'), +('657', 'Zaragoza', 'ESP', 'Aragonia', '603367'), +('658', 'Málaga', 'ESP', 'Andalusia', '530553'), +('659', 'Bilbao', 'ESP', 'Baskimaa', '357589'), +('660', 'Las Palmas de Gran Canaria', 'ESP', 'Canary Islands', '354757'), +('661', 'Murcia', 'ESP', 'Murcia', '353504'), +('662', 'Palma de Mallorca', 'ESP', 'Balears', '326993'), +('663', 'Valladolid', 'ESP', 'Castilla and León', '319998'), +('664', 'Córdoba', 'ESP', 'Andalusia', '311708'), +('665', 'Vigo', 'ESP', 'Galicia', '283670'), +('666', 'Alicante [Alacant]', 'ESP', 'Valencia', '272432'), +('667', 'Gijón', 'ESP', 'Asturia', '267980'), +('668', 'L´Hospitalet de Llobregat', 'ESP', 'Katalonia', '247986'), +('669', 'Granada', 'ESP', 'Andalusia', '244767'), +('670', 'A Coruńa (La Coruńa)', 'ESP', 'Galicia', '243402'), +('671', 'Vitoria-Gasteiz', 'ESP', 'Baskimaa', '217154'), +('672', 'Santa Cruz de Tenerife', 'ESP', 'Canary Islands', '213050'), +('673', 'Badalona', 'ESP', 'Katalonia', '209635'), +('674', 'Oviedo', 'ESP', 'Asturia', '200453'), +('675', 'Móstoles', 'ESP', 'Madrid', '195351'), +('676', 'Elche [Elx]', 'ESP', 'Valencia', '193174'), +('677', 'Sabadell', 'ESP', 'Katalonia', '184859'), +('678', 'Santander', 'ESP', 'Cantabria', '184165'), +('679', 'Jerez de la Frontera', 'ESP', 'Andalusia', '182660'), +('680', 'Pamplona [Iruńa]', 'ESP', 'Navarra', '180483'), +('681', 'Donostia-San Sebastián', 'ESP', 'Baskimaa', '179208'), +('682', 'Cartagena', 'ESP', 'Murcia', '177709'), +('683', 'Leganés', 'ESP', 'Madrid', '173163'), +('684', 'Fuenlabrada', 'ESP', 'Madrid', '171173'), +('685', 'Almería', 'ESP', 'Andalusia', '169027'), +('686', 'Terrassa', 'ESP', 'Katalonia', '168695'), +('687', 'Alcalá de Henares', 'ESP', 'Madrid', '164463'), +('688', 'Burgos', 'ESP', 'Castilla and León', '162802'), +('689', 'Salamanca', 'ESP', 'Castilla and León', '158720'), +('690', 'Albacete', 'ESP', 'Kastilia-La Mancha', '147527'), +('691', 'Getafe', 'ESP', 'Madrid', '145371'), +('692', 'Cádiz', 'ESP', 'Andalusia', '142449'), +('693', 'Alcorcón', 'ESP', 'Madrid', '142048'), +('694', 'Huelva', 'ESP', 'Andalusia', '140583'), +('695', 'León', 'ESP', 'Castilla and León', '139809'), +('696', 'Castellón de la Plana [Castell', 'ESP', 'Valencia', '139712'), +('697', 'Badajoz', 'ESP', 'Extremadura', '136613'), +('698', '[San Cristóbal de] la Laguna', 'ESP', 'Canary Islands', '127945'), +('699', 'Logrońo', 'ESP', 'La Rioja', '127093'), +('700', 'Santa Coloma de Gramenet', 'ESP', 'Katalonia', '120802'), +('701', 'Tarragona', 'ESP', 'Katalonia', '113016'), +('702', 'Lleida (Lérida)', 'ESP', 'Katalonia', '112207'), +('703', 'Jaén', 'ESP', 'Andalusia', '109247'), +('704', 'Ourense (Orense)', 'ESP', 'Galicia', '109120'), +('705', 'Mataró', 'ESP', 'Katalonia', '104095'), +('706', 'Algeciras', 'ESP', 'Andalusia', '103106'), +('707', 'Marbella', 'ESP', 'Andalusia', '101144'), +('708', 'Barakaldo', 'ESP', 'Baskimaa', '98212'), +('709', 'Dos Hermanas', 'ESP', 'Andalusia', '94591'), +('710', 'Santiago de Compostela', 'ESP', 'Galicia', '93745'), +('711', 'Torrejón de Ardoz', 'ESP', 'Madrid', '92262'), +('712', 'Cape Town', 'ZAF', 'Western Cape', '2352121'), +('713', 'Soweto', 'ZAF', 'Gauteng', '904165'), +('714', 'Johannesburg', 'ZAF', 'Gauteng', '756653'), +('715', 'Port Elizabeth', 'ZAF', 'Eastern Cape', '752319'), +('716', 'Pretoria', 'ZAF', 'Gauteng', '658630'), +('717', 'Inanda', 'ZAF', 'KwaZulu-Natal', '634065'), +('718', 'Durban', 'ZAF', 'KwaZulu-Natal', '566120'), +('719', 'Vanderbijlpark', 'ZAF', 'Gauteng', '468931'), +('720', 'Kempton Park', 'ZAF', 'Gauteng', '442633'), +('721', 'Alberton', 'ZAF', 'Gauteng', '410102'), +('722', 'Pinetown', 'ZAF', 'KwaZulu-Natal', '378810'), +('723', 'Pietermaritzburg', 'ZAF', 'KwaZulu-Natal', '370190'), +('724', 'Benoni', 'ZAF', 'Gauteng', '365467'), +('725', 'Randburg', 'ZAF', 'Gauteng', '341288'), +('726', 'Umlazi', 'ZAF', 'KwaZulu-Natal', '339233'), +('727', 'Bloemfontein', 'ZAF', 'Free State', '334341'), +('728', 'Vereeniging', 'ZAF', 'Gauteng', '328535'), +('729', 'Wonderboom', 'ZAF', 'Gauteng', '283289'), +('730', 'Roodepoort', 'ZAF', 'Gauteng', '279340'), +('731', 'Boksburg', 'ZAF', 'Gauteng', '262648'), +('732', 'Klerksdorp', 'ZAF', 'North West', '261911'), +('733', 'Soshanguve', 'ZAF', 'Gauteng', '242727'), +('734', 'Newcastle', 'ZAF', 'KwaZulu-Natal', '222993'), +('735', 'East London', 'ZAF', 'Eastern Cape', '221047'), +('736', 'Welkom', 'ZAF', 'Free State', '203296'), +('737', 'Kimberley', 'ZAF', 'Northern Cape', '197254'), +('738', 'Uitenhage', 'ZAF', 'Eastern Cape', '192120'), +('739', 'Chatsworth', 'ZAF', 'KwaZulu-Natal', '189885'), +('740', 'Mdantsane', 'ZAF', 'Eastern Cape', '182639'), +('741', 'Krugersdorp', 'ZAF', 'Gauteng', '181503'), +('742', 'Botshabelo', 'ZAF', 'Free State', '177971'), +('743', 'Brakpan', 'ZAF', 'Gauteng', '171363'), +('744', 'Witbank', 'ZAF', 'Mpumalanga', '167183'), +('745', 'Oberholzer', 'ZAF', 'Gauteng', '164367'), +('746', 'Germiston', 'ZAF', 'Gauteng', '164252'), +('747', 'Springs', 'ZAF', 'Gauteng', '162072'), +('748', 'Westonaria', 'ZAF', 'Gauteng', '159632'), +('749', 'Randfontein', 'ZAF', 'Gauteng', '120838'), +('750', 'Paarl', 'ZAF', 'Western Cape', '105768'), +('751', 'Potchefstroom', 'ZAF', 'North West', '101817'), +('752', 'Rustenburg', 'ZAF', 'North West', '97008'), +('753', 'Nigel', 'ZAF', 'Gauteng', '96734'), +('754', 'George', 'ZAF', 'Western Cape', '93818'), +('755', 'Ladysmith', 'ZAF', 'KwaZulu-Natal', '89292'), +('756', 'Addis Abeba', 'ETH', 'Addis Abeba', '2495000'), +('757', 'Dire Dawa', 'ETH', 'Dire Dawa', '164851'), +('758', 'Nazret', 'ETH', 'Oromia', '127842'), +('759', 'Gonder', 'ETH', 'Amhara', '112249'), +('760', 'Dese', 'ETH', 'Amhara', '97314'), +('761', 'Mekele', 'ETH', 'Tigray', '96938'), +('762', 'Bahir Dar', 'ETH', 'Amhara', '96140'), +('763', 'Stanley', 'FLK', 'East Falkland', '1636'), +('764', 'Suva', 'FJI', 'Central', '77366'), +('765', 'Quezon', 'PHL', 'National Capital Reg', '2173831'), +('766', 'Manila', 'PHL', 'National Capital Reg', '1581082'), +('767', 'Kalookan', 'PHL', 'National Capital Reg', '1177604'), +('768', 'Davao', 'PHL', 'Southern Mindanao', '1147116'), +('769', 'Cebu', 'PHL', 'Central Visayas', '718821'), +('770', 'Zamboanga', 'PHL', 'Western Mindanao', '601794'), +('771', 'Pasig', 'PHL', 'National Capital Reg', '505058'), +('772', 'Valenzuela', 'PHL', 'National Capital Reg', '485433'), +('773', 'Las Pińas', 'PHL', 'National Capital Reg', '472780'), +('774', 'Antipolo', 'PHL', 'Southern Tagalog', '470866'), +('775', 'Taguig', 'PHL', 'National Capital Reg', '467375'), +('776', 'Cagayan de Oro', 'PHL', 'Northern Mindanao', '461877'), +('777', 'Parańaque', 'PHL', 'National Capital Reg', '449811'), +('778', 'Makati', 'PHL', 'National Capital Reg', '444867'), +('779', 'Bacolod', 'PHL', 'Western Visayas', '429076'), +('780', 'General Santos', 'PHL', 'Southern Mindanao', '411822'), +('781', 'Marikina', 'PHL', 'National Capital Reg', '391170'), +('782', 'Dasmarińas', 'PHL', 'Southern Tagalog', '379520'), +('783', 'Muntinlupa', 'PHL', 'National Capital Reg', '379310'), +('784', 'Iloilo', 'PHL', 'Western Visayas', '365820'), +('785', 'Pasay', 'PHL', 'National Capital Reg', '354908'), +('786', 'Malabon', 'PHL', 'National Capital Reg', '338855'), +('787', 'San José del Monte', 'PHL', 'Central Luzon', '315807'), +('788', 'Bacoor', 'PHL', 'Southern Tagalog', '305699'), +('789', 'Iligan', 'PHL', 'Central Mindanao', '285061'), +('790', 'Calamba', 'PHL', 'Southern Tagalog', '281146'), +('791', 'Mandaluyong', 'PHL', 'National Capital Reg', '278474'), +('792', 'Butuan', 'PHL', 'Caraga', '267279'), +('793', 'Angeles', 'PHL', 'Central Luzon', '263971'), +('794', 'Tarlac', 'PHL', 'Central Luzon', '262481'), +('795', 'Mandaue', 'PHL', 'Central Visayas', '259728'), +('796', 'Baguio', 'PHL', 'CAR', '252386'), +('797', 'Batangas', 'PHL', 'Southern Tagalog', '247588'), +('798', 'Cainta', 'PHL', 'Southern Tagalog', '242511'), +('799', 'San Pedro', 'PHL', 'Southern Tagalog', '231403'), +('800', 'Navotas', 'PHL', 'National Capital Reg', '230403'), +('801', 'Cabanatuan', 'PHL', 'Central Luzon', '222859'), +('802', 'San Fernando', 'PHL', 'Central Luzon', '221857'), +('803', 'Lipa', 'PHL', 'Southern Tagalog', '218447'), +('804', 'Lapu-Lapu', 'PHL', 'Central Visayas', '217019'), +('805', 'San Pablo', 'PHL', 'Southern Tagalog', '207927'), +('806', 'Bińan', 'PHL', 'Southern Tagalog', '201186'), +('807', 'Taytay', 'PHL', 'Southern Tagalog', '198183'), +('808', 'Lucena', 'PHL', 'Southern Tagalog', '196075'), +('809', 'Imus', 'PHL', 'Southern Tagalog', '195482'), +('810', 'Olongapo', 'PHL', 'Central Luzon', '194260'), +('811', 'Binangonan', 'PHL', 'Southern Tagalog', '187691'), +('812', 'Santa Rosa', 'PHL', 'Southern Tagalog', '185633'), +('813', 'Tagum', 'PHL', 'Southern Mindanao', '179531'), +('814', 'Tacloban', 'PHL', 'Eastern Visayas', '178639'), +('815', 'Malolos', 'PHL', 'Central Luzon', '175291'), +('816', 'Mabalacat', 'PHL', 'Central Luzon', '171045'), +('817', 'Cotabato', 'PHL', 'Central Mindanao', '163849'), +('818', 'Meycauayan', 'PHL', 'Central Luzon', '163037'), +('819', 'Puerto Princesa', 'PHL', 'Southern Tagalog', '161912'), +('820', 'Legazpi', 'PHL', 'Bicol', '157010'), +('821', 'Silang', 'PHL', 'Southern Tagalog', '156137'), +('822', 'Ormoc', 'PHL', 'Eastern Visayas', '154297'), +('823', 'San Carlos', 'PHL', 'Ilocos', '154264'), +('824', 'Kabankalan', 'PHL', 'Western Visayas', '149769'), +('825', 'Talisay', 'PHL', 'Central Visayas', '148110'), +('826', 'Valencia', 'PHL', 'Northern Mindanao', '147924'), +('827', 'Calbayog', 'PHL', 'Eastern Visayas', '147187'), +('828', 'Santa Maria', 'PHL', 'Central Luzon', '144282'), +('829', 'Pagadian', 'PHL', 'Western Mindanao', '142515'), +('830', 'Cadiz', 'PHL', 'Western Visayas', '141954'), +('831', 'Bago', 'PHL', 'Western Visayas', '141721'), +('832', 'Toledo', 'PHL', 'Central Visayas', '141174'), +('833', 'Naga', 'PHL', 'Bicol', '137810'), +('834', 'San Mateo', 'PHL', 'Southern Tagalog', '135603'), +('835', 'Panabo', 'PHL', 'Southern Mindanao', '133950'), +('836', 'Koronadal', 'PHL', 'Southern Mindanao', '133786'), +('837', 'Marawi', 'PHL', 'Central Mindanao', '131090'), +('838', 'Dagupan', 'PHL', 'Ilocos', '130328'), +('839', 'Sagay', 'PHL', 'Western Visayas', '129765'), +('840', 'Roxas', 'PHL', 'Western Visayas', '126352'), +('841', 'Lubao', 'PHL', 'Central Luzon', '125699'), +('842', 'Digos', 'PHL', 'Southern Mindanao', '125171'), +('843', 'San Miguel', 'PHL', 'Central Luzon', '123824'), +('844', 'Malaybalay', 'PHL', 'Northern Mindanao', '123672'), +('845', 'Tuguegarao', 'PHL', 'Cagayan Valley', '120645'), +('846', 'Ilagan', 'PHL', 'Cagayan Valley', '119990'), +('847', 'Baliuag', 'PHL', 'Central Luzon', '119675'), +('848', 'Surigao', 'PHL', 'Caraga', '118534'), +('849', 'San Carlos', 'PHL', 'Western Visayas', '118259'), +('850', 'San Juan del Monte', 'PHL', 'National Capital Reg', '117680'), +('851', 'Tanauan', 'PHL', 'Southern Tagalog', '117539'), +('852', 'Concepcion', 'PHL', 'Central Luzon', '115171'), +('853', 'Rodriguez (Montalban)', 'PHL', 'Southern Tagalog', '115167'), +('854', 'Sariaya', 'PHL', 'Southern Tagalog', '114568'), +('855', 'Malasiqui', 'PHL', 'Ilocos', '113190'), +('856', 'General Mariano Alvarez', 'PHL', 'Southern Tagalog', '112446'), +('857', 'Urdaneta', 'PHL', 'Ilocos', '111582'), +('858', 'Hagonoy', 'PHL', 'Central Luzon', '111425'), +('859', 'San Jose', 'PHL', 'Southern Tagalog', '111009'), +('860', 'Polomolok', 'PHL', 'Southern Mindanao', '110709'), +('861', 'Santiago', 'PHL', 'Cagayan Valley', '110531'), +('862', 'Tanza', 'PHL', 'Southern Tagalog', '110517'), +('863', 'Ozamis', 'PHL', 'Northern Mindanao', '110420'), +('864', 'Mexico', 'PHL', 'Central Luzon', '109481'), +('865', 'San Jose', 'PHL', 'Central Luzon', '108254'), +('866', 'Silay', 'PHL', 'Western Visayas', '107722'), +('867', 'General Trias', 'PHL', 'Southern Tagalog', '107691'), +('868', 'Tabaco', 'PHL', 'Bicol', '107166'), +('869', 'Cabuyao', 'PHL', 'Southern Tagalog', '106630'), +('870', 'Calapan', 'PHL', 'Southern Tagalog', '105910'), +('871', 'Mati', 'PHL', 'Southern Mindanao', '105908'), +('872', 'Midsayap', 'PHL', 'Central Mindanao', '105760'), +('873', 'Cauayan', 'PHL', 'Cagayan Valley', '103952'), +('874', 'Gingoog', 'PHL', 'Northern Mindanao', '102379'), +('875', 'Dumaguete', 'PHL', 'Central Visayas', '102265'), +('876', 'San Fernando', 'PHL', 'Ilocos', '102082'), +('877', 'Arayat', 'PHL', 'Central Luzon', '101792'), +('878', 'Bayawan (Tulong)', 'PHL', 'Central Visayas', '101391'), +('879', 'Kidapawan', 'PHL', 'Central Mindanao', '101205'), +('880', 'Daraga (Locsin)', 'PHL', 'Bicol', '101031'), +('881', 'Marilao', 'PHL', 'Central Luzon', '101017'), +('882', 'Malita', 'PHL', 'Southern Mindanao', '100000'), +('883', 'Dipolog', 'PHL', 'Western Mindanao', '99862'), +('884', 'Cavite', 'PHL', 'Southern Tagalog', '99367'), +('885', 'Danao', 'PHL', 'Central Visayas', '98781'), +('886', 'Bislig', 'PHL', 'Caraga', '97860'), +('887', 'Talavera', 'PHL', 'Central Luzon', '97329'), +('888', 'Guagua', 'PHL', 'Central Luzon', '96858'), +('889', 'Bayambang', 'PHL', 'Ilocos', '96609'), +('890', 'Nasugbu', 'PHL', 'Southern Tagalog', '96113'), +('891', 'Baybay', 'PHL', 'Eastern Visayas', '95630'), +('892', 'Capas', 'PHL', 'Central Luzon', '95219'), +('893', 'Sultan Kudarat', 'PHL', 'ARMM', '94861'), +('894', 'Laoag', 'PHL', 'Ilocos', '94466'), +('895', 'Bayugan', 'PHL', 'Caraga', '93623'), +('896', 'Malungon', 'PHL', 'Southern Mindanao', '93232'), +('897', 'Santa Cruz', 'PHL', 'Southern Tagalog', '92694'), +('898', 'Sorsogon', 'PHL', 'Bicol', '92512'), +('899', 'Candelaria', 'PHL', 'Southern Tagalog', '92429'), +('900', 'Ligao', 'PHL', 'Bicol', '90603'), +('901', 'Tórshavn', 'FRO', 'Streymoyar', '14542'), +('902', 'Libreville', 'GAB', 'Estuaire', '419000'), +('903', 'Serekunda', 'GMB', 'Kombo St Mary', '102600'), +('904', 'Banjul', 'GMB', 'Banjul', '42326'), +('905', 'Tbilisi', 'GEO', 'Tbilisi', '1235200'), +('906', 'Kutaisi', 'GEO', 'Imereti', '240900'), +('907', 'Rustavi', 'GEO', 'Kvemo Kartli', '155400'), +('908', 'Batumi', 'GEO', 'Adzaria [Atšara]', '137700'), +('909', 'Sohumi', 'GEO', 'Abhasia [Aphazeti]', '111700'), +('910', 'Accra', 'GHA', 'Greater Accra', '1070000'), +('911', 'Kumasi', 'GHA', 'Ashanti', '385192'), +('912', 'Tamale', 'GHA', 'Northern', '151069'), +('913', 'Tema', 'GHA', 'Greater Accra', '109975'), +('914', 'Sekondi-Takoradi', 'GHA', 'Western', '103653'), +('915', 'Gibraltar', 'GIB', '–', '27025'), +('916', 'Saint George´s', 'GRD', 'St George', '4621'), +('917', 'Nuuk', 'GRL', 'Kitaa', '13445'), +('918', 'Les Abymes', 'GLP', 'Grande-Terre', '62947'), +('919', 'Basse-Terre', 'GLP', 'Basse-Terre', '12433'), +('920', 'Tamuning', 'GUM', '–', '9500'), +('921', 'Agańa', 'GUM', '–', '1139'), +('922', 'Ciudad de Guatemala', 'GTM', 'Guatemala', '823301'), +('923', 'Mixco', 'GTM', 'Guatemala', '209791'), +('924', 'Villa Nueva', 'GTM', 'Guatemala', '101295'), +('925', 'Quetzaltenango', 'GTM', 'Quetzaltenango', '90801'), +('926', 'Conakry', 'GIN', 'Conakry', '1090610'), +('927', 'Bissau', 'GNB', 'Bissau', '241000'), +('928', 'Georgetown', 'GUY', 'Georgetown', '254000'), +('929', 'Port-au-Prince', 'HTI', 'Ouest', '884472'), +('930', 'Carrefour', 'HTI', 'Ouest', '290204'), +('931', 'Delmas', 'HTI', 'Ouest', '240429'), +('932', 'Le-Cap-Haďtien', 'HTI', 'Nord', '102233'), +('933', 'Tegucigalpa', 'HND', 'Distrito Central', '813900'), +('934', 'San Pedro Sula', 'HND', 'Cortés', '383900'), +('935', 'La Ceiba', 'HND', 'Atlántida', '89200'), +('936', 'Kowloon and New Kowloon', 'HKG', 'Kowloon and New Kowl', '1987996'), +('937', 'Victoria', 'HKG', 'Hongkong', '1312637'), +('938', 'Longyearbyen', 'SJM', 'Länsimaa', '1438'), +('939', 'Jakarta', 'IDN', 'Jakarta Raya', '9604900'), +('940', 'Surabaya', 'IDN', 'East Java', '2663820'), +('941', 'Bandung', 'IDN', 'West Java', '2429000'), +('942', 'Medan', 'IDN', 'Sumatera Utara', '1843919'), +('943', 'Palembang', 'IDN', 'Sumatera Selatan', '1222764'), +('944', 'Tangerang', 'IDN', 'West Java', '1198300'), +('945', 'Semarang', 'IDN', 'Central Java', '1104405'), +('946', 'Ujung Pandang', 'IDN', 'Sulawesi Selatan', '1060257'), +('947', 'Malang', 'IDN', 'East Java', '716862'), +('948', 'Bandar Lampung', 'IDN', 'Lampung', '680332'), +('949', 'Bekasi', 'IDN', 'West Java', '644300'), +('950', 'Padang', 'IDN', 'Sumatera Barat', '534474'), +('951', 'Surakarta', 'IDN', 'Central Java', '518600'), +('952', 'Banjarmasin', 'IDN', 'Kalimantan Selatan', '482931'), +('953', 'Pekan Baru', 'IDN', 'Riau', '438638'), +('954', 'Denpasar', 'IDN', 'Bali', '435000'), +('955', 'Yogyakarta', 'IDN', 'Yogyakarta', '418944'), +('956', 'Pontianak', 'IDN', 'Kalimantan Barat', '409632'), +('957', 'Samarinda', 'IDN', 'Kalimantan Timur', '399175'), +('958', 'Jambi', 'IDN', 'Jambi', '385201'), +('959', 'Depok', 'IDN', 'West Java', '365200'), +('960', 'Cimahi', 'IDN', 'West Java', '344600'), +('961', 'Balikpapan', 'IDN', 'Kalimantan Timur', '338752'), +('962', 'Manado', 'IDN', 'Sulawesi Utara', '332288'), +('963', 'Mataram', 'IDN', 'Nusa Tenggara Barat', '306600'), +('964', 'Pekalongan', 'IDN', 'Central Java', '301504'), +('965', 'Tegal', 'IDN', 'Central Java', '289744'), +('966', 'Bogor', 'IDN', 'West Java', '285114'), +('967', 'Ciputat', 'IDN', 'West Java', '270800'), +('968', 'Pondokgede', 'IDN', 'West Java', '263200'), +('969', 'Cirebon', 'IDN', 'West Java', '254406'), +('970', 'Kediri', 'IDN', 'East Java', '253760'), +('971', 'Ambon', 'IDN', 'Molukit', '249312'), +('972', 'Jember', 'IDN', 'East Java', '218500'), +('973', 'Cilacap', 'IDN', 'Central Java', '206900'), +('974', 'Cimanggis', 'IDN', 'West Java', '205100'), +('975', 'Pematang Siantar', 'IDN', 'Sumatera Utara', '203056'), +('976', 'Purwokerto', 'IDN', 'Central Java', '202500'), +('977', 'Ciomas', 'IDN', 'West Java', '187400'), +('978', 'Tasikmalaya', 'IDN', 'West Java', '179800'), +('979', 'Madiun', 'IDN', 'East Java', '171532'), +('980', 'Bengkulu', 'IDN', 'Bengkulu', '146439'), +('981', 'Karawang', 'IDN', 'West Java', '145000'), +('982', 'Banda Aceh', 'IDN', 'Aceh', '143409'), +('983', 'Palu', 'IDN', 'Sulawesi Tengah', '142800'), +('984', 'Pasuruan', 'IDN', 'East Java', '134019'), +('985', 'Kupang', 'IDN', 'Nusa Tenggara Timur', '129300'), +('986', 'Tebing Tinggi', 'IDN', 'Sumatera Utara', '129300'), +('987', 'Percut Sei Tuan', 'IDN', 'Sumatera Utara', '129000'), +('988', 'Binjai', 'IDN', 'Sumatera Utara', '127222'), +('989', 'Sukabumi', 'IDN', 'West Java', '125766'), +('990', 'Waru', 'IDN', 'East Java', '124300'), +('991', 'Pangkal Pinang', 'IDN', 'Sumatera Selatan', '124000'), +('992', 'Magelang', 'IDN', 'Central Java', '123800'), +('993', 'Blitar', 'IDN', 'East Java', '122600'), +('994', 'Serang', 'IDN', 'West Java', '122400'), +('995', 'Probolinggo', 'IDN', 'East Java', '120770'), +('996', 'Cilegon', 'IDN', 'West Java', '117000'), +('997', 'Cianjur', 'IDN', 'West Java', '114300'), +('998', 'Ciparay', 'IDN', 'West Java', '111500'), +('999', 'Lhokseumawe', 'IDN', 'Aceh', '109600'); + +INSERT INTO city (id, name, countrycode, district, population) VALUES +('1000', 'Taman', 'IDN', 'East Java', '107000'), +('1001', 'Depok', 'IDN', 'Yogyakarta', '106800'), +('1002', 'Citeureup', 'IDN', 'West Java', '105100'), +('1003', 'Pemalang', 'IDN', 'Central Java', '103500'), +('1004', 'Klaten', 'IDN', 'Central Java', '103300'), +('1005', 'Salatiga', 'IDN', 'Central Java', '103000'), +('1006', 'Cibinong', 'IDN', 'West Java', '101300'), +('1007', 'Palangka Raya', 'IDN', 'Kalimantan Tengah', '99693'), +('1008', 'Mojokerto', 'IDN', 'East Java', '96626'), +('1009', 'Purwakarta', 'IDN', 'West Java', '95900'), +('1010', 'Garut', 'IDN', 'West Java', '95800'), +('1011', 'Kudus', 'IDN', 'Central Java', '95300'), +('1012', 'Kendari', 'IDN', 'Sulawesi Tenggara', '94800'), +('1013', 'Jaya Pura', 'IDN', 'West Irian', '94700'), +('1014', 'Gorontalo', 'IDN', 'Sulawesi Utara', '94058'), +('1015', 'Majalaya', 'IDN', 'West Java', '93200'), +('1016', 'Pondok Aren', 'IDN', 'West Java', '92700'), +('1017', 'Jombang', 'IDN', 'East Java', '92600'), +('1018', 'Sunggal', 'IDN', 'Sumatera Utara', '92300'), +('1019', 'Batam', 'IDN', 'Riau', '91871'), +('1020', 'Padang Sidempuan', 'IDN', 'Sumatera Utara', '91200'), +('1021', 'Sawangan', 'IDN', 'West Java', '91100'), +('1022', 'Banyuwangi', 'IDN', 'East Java', '89900'), +('1023', 'Tanjung Pinang', 'IDN', 'Riau', '89900'), +('1024', 'Mumbai (Bombay)', 'IND', 'Maharashtra', '10500000'), +('1025', 'Delhi', 'IND', 'Delhi', '7206704'), +('1026', 'Calcutta [Kolkata]', 'IND', 'West Bengali', '4399819'), +('1027', 'Chennai (Madras)', 'IND', 'Tamil Nadu', '3841396'), +('1028', 'Hyderabad', 'IND', 'Andhra Pradesh', '2964638'), +('1029', 'Ahmedabad', 'IND', 'Gujarat', '2876710'), +('1030', 'Bangalore', 'IND', 'Karnataka', '2660088'), +('1031', 'Kanpur', 'IND', 'Uttar Pradesh', '1874409'), +('1032', 'Nagpur', 'IND', 'Maharashtra', '1624752'), +('1033', 'Lucknow', 'IND', 'Uttar Pradesh', '1619115'), +('1034', 'Pune', 'IND', 'Maharashtra', '1566651'), +('1035', 'Surat', 'IND', 'Gujarat', '1498817'), +('1036', 'Jaipur', 'IND', 'Rajasthan', '1458483'), +('1037', 'Indore', 'IND', 'Madhya Pradesh', '1091674'), +('1038', 'Bhopal', 'IND', 'Madhya Pradesh', '1062771'), +('1039', 'Ludhiana', 'IND', 'Punjab', '1042740'), +('1040', 'Vadodara (Baroda)', 'IND', 'Gujarat', '1031346'), +('1041', 'Kalyan', 'IND', 'Maharashtra', '1014557'), +('1042', 'Madurai', 'IND', 'Tamil Nadu', '977856'), +('1043', 'Haora (Howrah)', 'IND', 'West Bengali', '950435'), +('1044', 'Varanasi (Benares)', 'IND', 'Uttar Pradesh', '929270'), +('1045', 'Patna', 'IND', 'Bihar', '917243'), +('1046', 'Srinagar', 'IND', 'Jammu and Kashmir', '892506'), +('1047', 'Agra', 'IND', 'Uttar Pradesh', '891790'), +('1048', 'Coimbatore', 'IND', 'Tamil Nadu', '816321'), +('1049', 'Thane (Thana)', 'IND', 'Maharashtra', '803389'), +('1050', 'Allahabad', 'IND', 'Uttar Pradesh', '792858'), +('1051', 'Meerut', 'IND', 'Uttar Pradesh', '753778'), +('1052', 'Vishakhapatnam', 'IND', 'Andhra Pradesh', '752037'), +('1053', 'Jabalpur', 'IND', 'Madhya Pradesh', '741927'), +('1054', 'Amritsar', 'IND', 'Punjab', '708835'), +('1055', 'Faridabad', 'IND', 'Haryana', '703592'), +('1056', 'Vijayawada', 'IND', 'Andhra Pradesh', '701827'), +('1057', 'Gwalior', 'IND', 'Madhya Pradesh', '690765'), +('1058', 'Jodhpur', 'IND', 'Rajasthan', '666279'), +('1059', 'Nashik (Nasik)', 'IND', 'Maharashtra', '656925'), +('1060', 'Hubli-Dharwad', 'IND', 'Karnataka', '648298'), +('1061', 'Solapur (Sholapur)', 'IND', 'Maharashtra', '604215'), +('1062', 'Ranchi', 'IND', 'Jharkhand', '599306'), +('1063', 'Bareilly', 'IND', 'Uttar Pradesh', '587211'), +('1064', 'Guwahati (Gauhati)', 'IND', 'Assam', '584342'), +('1065', 'Shambajinagar (Aurangabad)', 'IND', 'Maharashtra', '573272'), +('1066', 'Cochin (Kochi)', 'IND', 'Kerala', '564589'), +('1067', 'Rajkot', 'IND', 'Gujarat', '559407'), +('1068', 'Kota', 'IND', 'Rajasthan', '537371'), +('1069', 'Thiruvananthapuram (Trivandrum', 'IND', 'Kerala', '524006'), +('1070', 'Pimpri-Chinchwad', 'IND', 'Maharashtra', '517083'), +('1071', 'Jalandhar (Jullundur)', 'IND', 'Punjab', '509510'), +('1072', 'Gorakhpur', 'IND', 'Uttar Pradesh', '505566'), +('1073', 'Chandigarh', 'IND', 'Chandigarh', '504094'), +('1074', 'Mysore', 'IND', 'Karnataka', '480692'), +('1075', 'Aligarh', 'IND', 'Uttar Pradesh', '480520'), +('1076', 'Guntur', 'IND', 'Andhra Pradesh', '471051'), +('1077', 'Jamshedpur', 'IND', 'Jharkhand', '460577'), +('1078', 'Ghaziabad', 'IND', 'Uttar Pradesh', '454156'), +('1079', 'Warangal', 'IND', 'Andhra Pradesh', '447657'), +('1080', 'Raipur', 'IND', 'Chhatisgarh', '438639'), +('1081', 'Moradabad', 'IND', 'Uttar Pradesh', '429214'), +('1082', 'Durgapur', 'IND', 'West Bengali', '425836'), +('1083', 'Amravati', 'IND', 'Maharashtra', '421576'), +('1084', 'Calicut (Kozhikode)', 'IND', 'Kerala', '419831'), +('1085', 'Bikaner', 'IND', 'Rajasthan', '416289'), +('1086', 'Bhubaneswar', 'IND', 'Orissa', '411542'), +('1087', 'Kolhapur', 'IND', 'Maharashtra', '406370'), +('1088', 'Kataka (Cuttack)', 'IND', 'Orissa', '403418'), +('1089', 'Ajmer', 'IND', 'Rajasthan', '402700'), +('1090', 'Bhavnagar', 'IND', 'Gujarat', '402338'), +('1091', 'Tiruchirapalli', 'IND', 'Tamil Nadu', '387223'), +('1092', 'Bhilai', 'IND', 'Chhatisgarh', '386159'), +('1093', 'Bhiwandi', 'IND', 'Maharashtra', '379070'), +('1094', 'Saharanpur', 'IND', 'Uttar Pradesh', '374945'), +('1095', 'Ulhasnagar', 'IND', 'Maharashtra', '369077'), +('1096', 'Salem', 'IND', 'Tamil Nadu', '366712'), +('1097', 'Ujjain', 'IND', 'Madhya Pradesh', '362266'), +('1098', 'Malegaon', 'IND', 'Maharashtra', '342595'), +('1099', 'Jamnagar', 'IND', 'Gujarat', '341637'), +('1100', 'Bokaro Steel City', 'IND', 'Jharkhand', '333683'), +('1101', 'Akola', 'IND', 'Maharashtra', '328034'), +('1102', 'Belgaum', 'IND', 'Karnataka', '326399'), +('1103', 'Rajahmundry', 'IND', 'Andhra Pradesh', '324851'), +('1104', 'Nellore', 'IND', 'Andhra Pradesh', '316606'), +('1105', 'Udaipur', 'IND', 'Rajasthan', '308571'), +('1106', 'New Bombay', 'IND', 'Maharashtra', '307297'), +('1107', 'Bhatpara', 'IND', 'West Bengali', '304952'), +('1108', 'Gulbarga', 'IND', 'Karnataka', '304099'), +('1109', 'New Delhi', 'IND', 'Delhi', '301297'), +('1110', 'Jhansi', 'IND', 'Uttar Pradesh', '300850'), +('1111', 'Gaya', 'IND', 'Bihar', '291675'), +('1112', 'Kakinada', 'IND', 'Andhra Pradesh', '279980'), +('1113', 'Dhule (Dhulia)', 'IND', 'Maharashtra', '278317'), +('1114', 'Panihati', 'IND', 'West Bengali', '275990'), +('1115', 'Nanded (Nander)', 'IND', 'Maharashtra', '275083'), +('1116', 'Mangalore', 'IND', 'Karnataka', '273304'), +('1117', 'Dehra Dun', 'IND', 'Uttaranchal', '270159'), +('1118', 'Kamarhati', 'IND', 'West Bengali', '266889'), +('1119', 'Davangere', 'IND', 'Karnataka', '266082'), +('1120', 'Asansol', 'IND', 'West Bengali', '262188'), +('1121', 'Bhagalpur', 'IND', 'Bihar', '253225'), +('1122', 'Bellary', 'IND', 'Karnataka', '245391'), +('1123', 'Barddhaman (Burdwan)', 'IND', 'West Bengali', '245079'), +('1124', 'Rampur', 'IND', 'Uttar Pradesh', '243742'), +('1125', 'Jalgaon', 'IND', 'Maharashtra', '242193'), +('1126', 'Muzaffarpur', 'IND', 'Bihar', '241107'), +('1127', 'Nizamabad', 'IND', 'Andhra Pradesh', '241034'), +('1128', 'Muzaffarnagar', 'IND', 'Uttar Pradesh', '240609'), +('1129', 'Patiala', 'IND', 'Punjab', '238368'), +('1130', 'Shahjahanpur', 'IND', 'Uttar Pradesh', '237713'), +('1131', 'Kurnool', 'IND', 'Andhra Pradesh', '236800'), +('1132', 'Tiruppur (Tirupper)', 'IND', 'Tamil Nadu', '235661'), +('1133', 'Rohtak', 'IND', 'Haryana', '233400'), +('1134', 'South Dum Dum', 'IND', 'West Bengali', '232811'), +('1135', 'Mathura', 'IND', 'Uttar Pradesh', '226691'), +('1136', 'Chandrapur', 'IND', 'Maharashtra', '226105'), +('1137', 'Barahanagar (Baranagar)', 'IND', 'West Bengali', '224821'), +('1138', 'Darbhanga', 'IND', 'Bihar', '218391'), +('1139', 'Siliguri (Shiliguri)', 'IND', 'West Bengali', '216950'), +('1140', 'Raurkela', 'IND', 'Orissa', '215489'), +('1141', 'Ambattur', 'IND', 'Tamil Nadu', '215424'), +('1142', 'Panipat', 'IND', 'Haryana', '215218'), +('1143', 'Firozabad', 'IND', 'Uttar Pradesh', '215128'), +('1144', 'Ichalkaranji', 'IND', 'Maharashtra', '214950'), +('1145', 'Jammu', 'IND', 'Jammu and Kashmir', '214737'), +('1146', 'Ramagundam', 'IND', 'Andhra Pradesh', '214384'), +('1147', 'Eluru', 'IND', 'Andhra Pradesh', '212866'), +('1148', 'Brahmapur', 'IND', 'Orissa', '210418'), +('1149', 'Alwar', 'IND', 'Rajasthan', '205086'), +('1150', 'Pondicherry', 'IND', 'Pondicherry', '203065'), +('1151', 'Thanjavur', 'IND', 'Tamil Nadu', '202013'), +('1152', 'Bihar Sharif', 'IND', 'Bihar', '201323'), +('1153', 'Tuticorin', 'IND', 'Tamil Nadu', '199854'), +('1154', 'Imphal', 'IND', 'Manipur', '198535'), +('1155', 'Latur', 'IND', 'Maharashtra', '197408'), +('1156', 'Sagar', 'IND', 'Madhya Pradesh', '195346'), +('1157', 'Farrukhabad-cum-Fatehgarh', 'IND', 'Uttar Pradesh', '194567'), +('1158', 'Sangli', 'IND', 'Maharashtra', '193197'), +('1159', 'Parbhani', 'IND', 'Maharashtra', '190255'), +('1160', 'Nagar Coil', 'IND', 'Tamil Nadu', '190084'), +('1161', 'Bijapur', 'IND', 'Karnataka', '186939'), +('1162', 'Kukatpalle', 'IND', 'Andhra Pradesh', '185378'), +('1163', 'Bally', 'IND', 'West Bengali', '184474'), +('1164', 'Bhilwara', 'IND', 'Rajasthan', '183965'), +('1165', 'Ratlam', 'IND', 'Madhya Pradesh', '183375'), +('1166', 'Avadi', 'IND', 'Tamil Nadu', '183215'), +('1167', 'Dindigul', 'IND', 'Tamil Nadu', '182477'), +('1168', 'Ahmadnagar', 'IND', 'Maharashtra', '181339'), +('1169', 'Bilaspur', 'IND', 'Chhatisgarh', '179833'), +('1170', 'Shimoga', 'IND', 'Karnataka', '179258'), +('1171', 'Kharagpur', 'IND', 'West Bengali', '177989'), +('1172', 'Mira Bhayandar', 'IND', 'Maharashtra', '175372'), +('1173', 'Vellore', 'IND', 'Tamil Nadu', '175061'), +('1174', 'Jalna', 'IND', 'Maharashtra', '174985'), +('1175', 'Burnpur', 'IND', 'West Bengali', '174933'), +('1176', 'Anantapur', 'IND', 'Andhra Pradesh', '174924'), +('1177', 'Allappuzha (Alleppey)', 'IND', 'Kerala', '174666'), +('1178', 'Tirupati', 'IND', 'Andhra Pradesh', '174369'), +('1179', 'Karnal', 'IND', 'Haryana', '173751'), +('1180', 'Burhanpur', 'IND', 'Madhya Pradesh', '172710'), +('1181', 'Hisar (Hissar)', 'IND', 'Haryana', '172677'), +('1182', 'Tiruvottiyur', 'IND', 'Tamil Nadu', '172562'), +('1183', 'Mirzapur-cum-Vindhyachal', 'IND', 'Uttar Pradesh', '169336'), +('1184', 'Secunderabad', 'IND', 'Andhra Pradesh', '167461'), +('1185', 'Nadiad', 'IND', 'Gujarat', '167051'), +('1186', 'Dewas', 'IND', 'Madhya Pradesh', '164364'), +('1187', 'Murwara (Katni)', 'IND', 'Madhya Pradesh', '163431'), +('1188', 'Ganganagar', 'IND', 'Rajasthan', '161482'), +('1189', 'Vizianagaram', 'IND', 'Andhra Pradesh', '160359'), +('1190', 'Erode', 'IND', 'Tamil Nadu', '159232'), +('1191', 'Machilipatnam (Masulipatam)', 'IND', 'Andhra Pradesh', '159110'), +('1192', 'Bhatinda (Bathinda)', 'IND', 'Punjab', '159042'), +('1193', 'Raichur', 'IND', 'Karnataka', '157551'), +('1194', 'Agartala', 'IND', 'Tripura', '157358'), +('1195', 'Arrah (Ara)', 'IND', 'Bihar', '157082'), +('1196', 'Satna', 'IND', 'Madhya Pradesh', '156630'), +('1197', 'Lalbahadur Nagar', 'IND', 'Andhra Pradesh', '155500'), +('1198', 'Aizawl', 'IND', 'Mizoram', '155240'), +('1199', 'Uluberia', 'IND', 'West Bengali', '155172'), +('1200', 'Katihar', 'IND', 'Bihar', '154367'), +('1201', 'Cuddalore', 'IND', 'Tamil Nadu', '153086'), +('1202', 'Hugli-Chinsurah', 'IND', 'West Bengali', '151806'), +('1203', 'Dhanbad', 'IND', 'Jharkhand', '151789'), +('1204', 'Raiganj', 'IND', 'West Bengali', '151045'), +('1205', 'Sambhal', 'IND', 'Uttar Pradesh', '150869'), +('1206', 'Durg', 'IND', 'Chhatisgarh', '150645'), +('1207', 'Munger (Monghyr)', 'IND', 'Bihar', '150112'), +('1208', 'Kanchipuram', 'IND', 'Tamil Nadu', '150100'), +('1209', 'North Dum Dum', 'IND', 'West Bengali', '149965'), +('1210', 'Karimnagar', 'IND', 'Andhra Pradesh', '148583'), +('1211', 'Bharatpur', 'IND', 'Rajasthan', '148519'), +('1212', 'Sikar', 'IND', 'Rajasthan', '148272'), +('1213', 'Hardwar (Haridwar)', 'IND', 'Uttaranchal', '147305'), +('1214', 'Dabgram', 'IND', 'West Bengali', '147217'), +('1215', 'Morena', 'IND', 'Madhya Pradesh', '147124'), +('1216', 'Noida', 'IND', 'Uttar Pradesh', '146514'), +('1217', 'Hapur', 'IND', 'Uttar Pradesh', '146262'), +('1218', 'Bhusawal', 'IND', 'Maharashtra', '145143'), +('1219', 'Khandwa', 'IND', 'Madhya Pradesh', '145133'), +('1220', 'Yamuna Nagar', 'IND', 'Haryana', '144346'), +('1221', 'Sonipat (Sonepat)', 'IND', 'Haryana', '143922'), +('1222', 'Tenali', 'IND', 'Andhra Pradesh', '143726'), +('1223', 'Raurkela Civil Township', 'IND', 'Orissa', '140408'), +('1224', 'Kollam (Quilon)', 'IND', 'Kerala', '139852'), +('1225', 'Kumbakonam', 'IND', 'Tamil Nadu', '139483'), +('1226', 'Ingraj Bazar (English Bazar)', 'IND', 'West Bengali', '139204'), +('1227', 'Timkur', 'IND', 'Karnataka', '138903'), +('1228', 'Amroha', 'IND', 'Uttar Pradesh', '137061'), +('1229', 'Serampore', 'IND', 'West Bengali', '137028'), +('1230', 'Chapra', 'IND', 'Bihar', '136877'), +('1231', 'Pali', 'IND', 'Rajasthan', '136842'), +('1232', 'Maunath Bhanjan', 'IND', 'Uttar Pradesh', '136697'), +('1233', 'Adoni', 'IND', 'Andhra Pradesh', '136182'), +('1234', 'Jaunpur', 'IND', 'Uttar Pradesh', '136062'), +('1235', 'Tirunelveli', 'IND', 'Tamil Nadu', '135825'), +('1236', 'Bahraich', 'IND', 'Uttar Pradesh', '135400'), +('1237', 'Gadag Betigeri', 'IND', 'Karnataka', '134051'), +('1238', 'Proddatur', 'IND', 'Andhra Pradesh', '133914'), +('1239', 'Chittoor', 'IND', 'Andhra Pradesh', '133462'), +('1240', 'Barrackpur', 'IND', 'West Bengali', '133265'), +('1241', 'Bharuch (Broach)', 'IND', 'Gujarat', '133102'), +('1242', 'Naihati', 'IND', 'West Bengali', '132701'), +('1243', 'Shillong', 'IND', 'Meghalaya', '131719'), +('1244', 'Sambalpur', 'IND', 'Orissa', '131138'), +('1245', 'Junagadh', 'IND', 'Gujarat', '130484'), +('1246', 'Rae Bareli', 'IND', 'Uttar Pradesh', '129904'), +('1247', 'Rewa', 'IND', 'Madhya Pradesh', '128981'), +('1248', 'Gurgaon', 'IND', 'Haryana', '128608'), +('1249', 'Khammam', 'IND', 'Andhra Pradesh', '127992'), +('1250', 'Bulandshahr', 'IND', 'Uttar Pradesh', '127201'), +('1251', 'Navsari', 'IND', 'Gujarat', '126089'), +('1252', 'Malkajgiri', 'IND', 'Andhra Pradesh', '126066'), +('1253', 'Midnapore (Medinipur)', 'IND', 'West Bengali', '125498'), +('1254', 'Miraj', 'IND', 'Maharashtra', '125407'), +('1255', 'Raj Nandgaon', 'IND', 'Chhatisgarh', '125371'), +('1256', 'Alandur', 'IND', 'Tamil Nadu', '125244'), +('1257', 'Puri', 'IND', 'Orissa', '125199'), +('1258', 'Navadwip', 'IND', 'West Bengali', '125037'), +('1259', 'Sirsa', 'IND', 'Haryana', '125000'), +('1260', 'Korba', 'IND', 'Chhatisgarh', '124501'), +('1261', 'Faizabad', 'IND', 'Uttar Pradesh', '124437'), +('1262', 'Etawah', 'IND', 'Uttar Pradesh', '124072'), +('1263', 'Pathankot', 'IND', 'Punjab', '123930'), +('1264', 'Gandhinagar', 'IND', 'Gujarat', '123359'), +('1265', 'Palghat (Palakkad)', 'IND', 'Kerala', '123289'), +('1266', 'Veraval', 'IND', 'Gujarat', '123000'), +('1267', 'Hoshiarpur', 'IND', 'Punjab', '122705'), +('1268', 'Ambala', 'IND', 'Haryana', '122596'), +('1269', 'Sitapur', 'IND', 'Uttar Pradesh', '121842'), +('1270', 'Bhiwani', 'IND', 'Haryana', '121629'), +('1271', 'Cuddapah', 'IND', 'Andhra Pradesh', '121463'), +('1272', 'Bhimavaram', 'IND', 'Andhra Pradesh', '121314'), +('1273', 'Krishnanagar', 'IND', 'West Bengali', '121110'), +('1274', 'Chandannagar', 'IND', 'West Bengali', '120378'), +('1275', 'Mandya', 'IND', 'Karnataka', '120265'), +('1276', 'Dibrugarh', 'IND', 'Assam', '120127'), +('1277', 'Nandyal', 'IND', 'Andhra Pradesh', '119813'), +('1278', 'Balurghat', 'IND', 'West Bengali', '119796'), +('1279', 'Neyveli', 'IND', 'Tamil Nadu', '118080'), +('1280', 'Fatehpur', 'IND', 'Uttar Pradesh', '117675'), +('1281', 'Mahbubnagar', 'IND', 'Andhra Pradesh', '116833'), +('1282', 'Budaun', 'IND', 'Uttar Pradesh', '116695'), +('1283', 'Porbandar', 'IND', 'Gujarat', '116671'), +('1284', 'Silchar', 'IND', 'Assam', '115483'), +('1285', 'Berhampore (Baharampur)', 'IND', 'West Bengali', '115144'), +('1286', 'Purnea (Purnia)', 'IND', 'Jharkhand', '114912'), +('1287', 'Bankura', 'IND', 'West Bengali', '114876'), +('1288', 'Rajapalaiyam', 'IND', 'Tamil Nadu', '114202'), +('1289', 'Titagarh', 'IND', 'West Bengali', '114085'), +('1290', 'Halisahar', 'IND', 'West Bengali', '114028'), +('1291', 'Hathras', 'IND', 'Uttar Pradesh', '113285'), +('1292', 'Bhir (Bid)', 'IND', 'Maharashtra', '112434'), +('1293', 'Pallavaram', 'IND', 'Tamil Nadu', '111866'), +('1294', 'Anand', 'IND', 'Gujarat', '110266'), +('1295', 'Mango', 'IND', 'Jharkhand', '110024'), +('1296', 'Santipur', 'IND', 'West Bengali', '109956'), +('1297', 'Bhind', 'IND', 'Madhya Pradesh', '109755'), +('1298', 'Gondiya', 'IND', 'Maharashtra', '109470'), +('1299', 'Tiruvannamalai', 'IND', 'Tamil Nadu', '109196'), +('1300', 'Yeotmal (Yavatmal)', 'IND', 'Maharashtra', '108578'), +('1301', 'Kulti-Barakar', 'IND', 'West Bengali', '108518'), +('1302', 'Moga', 'IND', 'Punjab', '108304'), +('1303', 'Shivapuri', 'IND', 'Madhya Pradesh', '108277'), +('1304', 'Bidar', 'IND', 'Karnataka', '108016'), +('1305', 'Guntakal', 'IND', 'Andhra Pradesh', '107592'), +('1306', 'Unnao', 'IND', 'Uttar Pradesh', '107425'), +('1307', 'Barasat', 'IND', 'West Bengali', '107365'), +('1308', 'Tambaram', 'IND', 'Tamil Nadu', '107187'), +('1309', 'Abohar', 'IND', 'Punjab', '107163'), +('1310', 'Pilibhit', 'IND', 'Uttar Pradesh', '106605'), +('1311', 'Valparai', 'IND', 'Tamil Nadu', '106523'), +('1312', 'Gonda', 'IND', 'Uttar Pradesh', '106078'), +('1313', 'Surendranagar', 'IND', 'Gujarat', '105973'), +('1314', 'Qutubullapur', 'IND', 'Andhra Pradesh', '105380'), +('1315', 'Beawar', 'IND', 'Rajasthan', '105363'), +('1316', 'Hindupur', 'IND', 'Andhra Pradesh', '104651'), +('1317', 'Gandhidham', 'IND', 'Gujarat', '104585'), +('1318', 'Haldwani-cum-Kathgodam', 'IND', 'Uttaranchal', '104195'), +('1319', 'Tellicherry (Thalassery)', 'IND', 'Kerala', '103579'), +('1320', 'Wardha', 'IND', 'Maharashtra', '102985'), +('1321', 'Rishra', 'IND', 'West Bengali', '102649'), +('1322', 'Bhuj', 'IND', 'Gujarat', '102176'), +('1323', 'Modinagar', 'IND', 'Uttar Pradesh', '101660'), +('1324', 'Gudivada', 'IND', 'Andhra Pradesh', '101656'), +('1325', 'Basirhat', 'IND', 'West Bengali', '101409'), +('1326', 'Uttarpara-Kotrung', 'IND', 'West Bengali', '100867'), +('1327', 'Ongole', 'IND', 'Andhra Pradesh', '100836'), +('1328', 'North Barrackpur', 'IND', 'West Bengali', '100513'), +('1329', 'Guna', 'IND', 'Madhya Pradesh', '100490'), +('1330', 'Haldia', 'IND', 'West Bengali', '100347'), +('1331', 'Habra', 'IND', 'West Bengali', '100223'), +('1332', 'Kanchrapara', 'IND', 'West Bengali', '100194'), +('1333', 'Tonk', 'IND', 'Rajasthan', '100079'), +('1334', 'Champdani', 'IND', 'West Bengali', '98818'), +('1335', 'Orai', 'IND', 'Uttar Pradesh', '98640'), +('1336', 'Pudukkottai', 'IND', 'Tamil Nadu', '98619'), +('1337', 'Sasaram', 'IND', 'Bihar', '98220'), +('1338', 'Hazaribag', 'IND', 'Jharkhand', '97712'), +('1339', 'Palayankottai', 'IND', 'Tamil Nadu', '97662'), +('1340', 'Banda', 'IND', 'Uttar Pradesh', '97227'), +('1341', 'Godhra', 'IND', 'Gujarat', '96813'), +('1342', 'Hospet', 'IND', 'Karnataka', '96322'), +('1343', 'Ashoknagar-Kalyangarh', 'IND', 'West Bengali', '96315'), +('1344', 'Achalpur', 'IND', 'Maharashtra', '96216'), +('1345', 'Patan', 'IND', 'Gujarat', '96109'), +('1346', 'Mandasor', 'IND', 'Madhya Pradesh', '95758'), +('1347', 'Damoh', 'IND', 'Madhya Pradesh', '95661'), +('1348', 'Satara', 'IND', 'Maharashtra', '95133'), +('1349', 'Meerut Cantonment', 'IND', 'Uttar Pradesh', '94876'), +('1350', 'Dehri', 'IND', 'Bihar', '94526'), +('1351', 'Delhi Cantonment', 'IND', 'Delhi', '94326'), +('1352', 'Chhindwara', 'IND', 'Madhya Pradesh', '93731'), +('1353', 'Bansberia', 'IND', 'West Bengali', '93447'), +('1354', 'Nagaon', 'IND', 'Assam', '93350'), +('1355', 'Kanpur Cantonment', 'IND', 'Uttar Pradesh', '93109'), +('1356', 'Vidisha', 'IND', 'Madhya Pradesh', '92917'), +('1357', 'Bettiah', 'IND', 'Bihar', '92583'), +('1358', 'Purulia', 'IND', 'Jharkhand', '92574'), +('1359', 'Hassan', 'IND', 'Karnataka', '90803'), +('1360', 'Ambala Sadar', 'IND', 'Haryana', '90712'), +('1361', 'Baidyabati', 'IND', 'West Bengali', '90601'), +('1362', 'Morvi', 'IND', 'Gujarat', '90357'), +('1363', 'Raigarh', 'IND', 'Chhatisgarh', '89166'), +('1364', 'Vejalpur', 'IND', 'Gujarat', '89053'), +('1365', 'Baghdad', 'IRQ', 'Baghdad', '4336000'), +('1366', 'Mosul', 'IRQ', 'Ninawa', '879000'), +('1367', 'Irbil', 'IRQ', 'Irbil', '485968'), +('1368', 'Kirkuk', 'IRQ', 'al-Tamim', '418624'), +('1369', 'Basra', 'IRQ', 'Basra', '406296'), +('1370', 'al-Sulaymaniya', 'IRQ', 'al-Sulaymaniya', '364096'), +('1371', 'al-Najaf', 'IRQ', 'al-Najaf', '309010'), +('1372', 'Karbala', 'IRQ', 'Karbala', '296705'), +('1373', 'al-Hilla', 'IRQ', 'Babil', '268834'), +('1374', 'al-Nasiriya', 'IRQ', 'DhiQar', '265937'), +('1375', 'al-Amara', 'IRQ', 'Maysan', '208797'), +('1376', 'al-Diwaniya', 'IRQ', 'al-Qadisiya', '196519'), +('1377', 'al-Ramadi', 'IRQ', 'al-Anbar', '192556'), +('1378', 'al-Kut', 'IRQ', 'Wasit', '183183'), +('1379', 'Baquba', 'IRQ', 'Diyala', '114516'), +('1380', 'Teheran', 'IRN', 'Teheran', '6758845'), +('1381', 'Mashhad', 'IRN', 'Khorasan', '1887405'), +('1382', 'Esfahan', 'IRN', 'Esfahan', '1266072'), +('1383', 'Tabriz', 'IRN', 'East Azerbaidzan', '1191043'), +('1384', 'Shiraz', 'IRN', 'Fars', '1053025'), +('1385', 'Karaj', 'IRN', 'Teheran', '940968'), +('1386', 'Ahvaz', 'IRN', 'Khuzestan', '804980'), +('1387', 'Qom', 'IRN', 'Qom', '777677'), +('1388', 'Kermanshah', 'IRN', 'Kermanshah', '692986'), +('1389', 'Urmia', 'IRN', 'West Azerbaidzan', '435200'), +('1390', 'Zahedan', 'IRN', 'Sistan va Baluchesta', '419518'), +('1391', 'Rasht', 'IRN', 'Gilan', '417748'), +('1392', 'Hamadan', 'IRN', 'Hamadan', '401281'), +('1393', 'Kerman', 'IRN', 'Kerman', '384991'), +('1394', 'Arak', 'IRN', 'Markazi', '380755'), +('1395', 'Ardebil', 'IRN', 'Ardebil', '340386'), +('1396', 'Yazd', 'IRN', 'Yazd', '326776'), +('1397', 'Qazvin', 'IRN', 'Qazvin', '291117'), +('1398', 'Zanjan', 'IRN', 'Zanjan', '286295'), +('1399', 'Sanandaj', 'IRN', 'Kordestan', '277808'), +('1400', 'Bandar-e-Abbas', 'IRN', 'Hormozgan', '273578'), +('1401', 'Khorramabad', 'IRN', 'Lorestan', '272815'), +('1402', 'Eslamshahr', 'IRN', 'Teheran', '265450'), +('1403', 'Borujerd', 'IRN', 'Lorestan', '217804'), +('1404', 'Abadan', 'IRN', 'Khuzestan', '206073'), +('1405', 'Dezful', 'IRN', 'Khuzestan', '202639'), +('1406', 'Kashan', 'IRN', 'Esfahan', '201372'), +('1407', 'Sari', 'IRN', 'Mazandaran', '195882'), +('1408', 'Gorgan', 'IRN', 'Golestan', '188710'), +('1409', 'Najafabad', 'IRN', 'Esfahan', '178498'), +('1410', 'Sabzevar', 'IRN', 'Khorasan', '170738'), +('1411', 'Khomeynishahr', 'IRN', 'Esfahan', '165888'), +('1412', 'Amol', 'IRN', 'Mazandaran', '159092'), +('1413', 'Neyshabur', 'IRN', 'Khorasan', '158847'), +('1414', 'Babol', 'IRN', 'Mazandaran', '158346'), +('1415', 'Khoy', 'IRN', 'West Azerbaidzan', '148944'), +('1416', 'Malayer', 'IRN', 'Hamadan', '144373'), +('1417', 'Bushehr', 'IRN', 'Bushehr', '143641'), +('1418', 'Qaemshahr', 'IRN', 'Mazandaran', '143286'), +('1419', 'Qarchak', 'IRN', 'Teheran', '142690'), +('1420', 'Qods', 'IRN', 'Teheran', '138278'), +('1421', 'Sirjan', 'IRN', 'Kerman', '135024'), +('1422', 'Bojnurd', 'IRN', 'Khorasan', '134835'), +('1423', 'Maragheh', 'IRN', 'East Azerbaidzan', '132318'), +('1424', 'Birjand', 'IRN', 'Khorasan', '127608'), +('1425', 'Ilam', 'IRN', 'Ilam', '126346'), +('1426', 'Bukan', 'IRN', 'West Azerbaidzan', '120020'), +('1427', 'Masjed-e-Soleyman', 'IRN', 'Khuzestan', '116883'), +('1428', 'Saqqez', 'IRN', 'Kordestan', '115394'), +('1429', 'Gonbad-e Qabus', 'IRN', 'Mazandaran', '111253'), +('1430', 'Saveh', 'IRN', 'Qom', '111245'), +('1431', 'Mahabad', 'IRN', 'West Azerbaidzan', '107799'), +('1432', 'Varamin', 'IRN', 'Teheran', '107233'), +('1433', 'Andimeshk', 'IRN', 'Khuzestan', '106923'), +('1434', 'Khorramshahr', 'IRN', 'Khuzestan', '105636'), +('1435', 'Shahrud', 'IRN', 'Semnan', '104765'), +('1436', 'Marv Dasht', 'IRN', 'Fars', '103579'), +('1437', 'Zabol', 'IRN', 'Sistan va Baluchesta', '100887'), +('1438', 'Shahr-e Kord', 'IRN', 'Chaharmahal va Bakht', '100477'), +('1439', 'Bandar-e Anzali', 'IRN', 'Gilan', '98500'), +('1440', 'Rafsanjan', 'IRN', 'Kerman', '98300'), +('1441', 'Marand', 'IRN', 'East Azerbaidzan', '96400'), +('1442', 'Torbat-e Heydariyeh', 'IRN', 'Khorasan', '94600'), +('1443', 'Jahrom', 'IRN', 'Fars', '94200'), +('1444', 'Semnan', 'IRN', 'Semnan', '91045'), +('1445', 'Miandoab', 'IRN', 'West Azerbaidzan', '90100'), +('1446', 'Qomsheh', 'IRN', 'Esfahan', '89800'), +('1447', 'Dublin', 'IRL', 'Leinster', '481854'), +('1448', 'Cork', 'IRL', 'Munster', '127187'), +('1449', 'Reykjavík', 'ISL', 'Höfuđborgarsvćđi', '109184'), +('1450', 'Jerusalem', 'ISR', 'Jerusalem', '633700'), +('1451', 'Tel Aviv-Jaffa', 'ISR', 'Tel Aviv', '348100'), +('1452', 'Haifa', 'ISR', 'Haifa', '265700'), +('1453', 'Rishon Le Ziyyon', 'ISR', 'Ha Merkaz', '188200'), +('1454', 'Beerseba', 'ISR', 'Ha Darom', '163700'), +('1455', 'Holon', 'ISR', 'Tel Aviv', '163100'), +('1456', 'Petah Tiqwa', 'ISR', 'Ha Merkaz', '159400'), +('1457', 'Ashdod', 'ISR', 'Ha Darom', '155800'), +('1458', 'Netanya', 'ISR', 'Ha Merkaz', '154900'), +('1459', 'Bat Yam', 'ISR', 'Tel Aviv', '137000'), +('1460', 'Bene Beraq', 'ISR', 'Tel Aviv', '133900'), +('1461', 'Ramat Gan', 'ISR', 'Tel Aviv', '126900'), +('1462', 'Ashqelon', 'ISR', 'Ha Darom', '92300'), +('1463', 'Rehovot', 'ISR', 'Ha Merkaz', '90300'), +('1464', 'Roma', 'ITA', 'Latium', '2643581'), +('1465', 'Milano', 'ITA', 'Lombardia', '1300977'), +('1466', 'Napoli', 'ITA', 'Campania', '1002619'), +('1467', 'Torino', 'ITA', 'Piemonte', '903705'), +('1468', 'Palermo', 'ITA', 'Sisilia', '683794'), +('1469', 'Genova', 'ITA', 'Liguria', '636104'), +('1470', 'Bologna', 'ITA', 'Emilia-Romagna', '381161'), +('1471', 'Firenze', 'ITA', 'Toscana', '376662'), +('1472', 'Catania', 'ITA', 'Sisilia', '337862'), +('1473', 'Bari', 'ITA', 'Apulia', '331848'), +('1474', 'Venezia', 'ITA', 'Veneto', '277305'), +('1475', 'Messina', 'ITA', 'Sisilia', '259156'), +('1476', 'Verona', 'ITA', 'Veneto', '255268'), +('1477', 'Trieste', 'ITA', 'Friuli-Venezia Giuli', '216459'), +('1478', 'Padova', 'ITA', 'Veneto', '211391'), +('1479', 'Taranto', 'ITA', 'Apulia', '208214'), +('1480', 'Brescia', 'ITA', 'Lombardia', '191317'), +('1481', 'Reggio di Calabria', 'ITA', 'Calabria', '179617'), +('1482', 'Modena', 'ITA', 'Emilia-Romagna', '176022'), +('1483', 'Prato', 'ITA', 'Toscana', '172473'), +('1484', 'Parma', 'ITA', 'Emilia-Romagna', '168717'), +('1485', 'Cagliari', 'ITA', 'Sardinia', '165926'), +('1486', 'Livorno', 'ITA', 'Toscana', '161673'), +('1487', 'Perugia', 'ITA', 'Umbria', '156673'), +('1488', 'Foggia', 'ITA', 'Apulia', '154891'), +('1489', 'Reggio nell´ Emilia', 'ITA', 'Emilia-Romagna', '143664'), +('1490', 'Salerno', 'ITA', 'Campania', '142055'), +('1491', 'Ravenna', 'ITA', 'Emilia-Romagna', '138418'), +('1492', 'Ferrara', 'ITA', 'Emilia-Romagna', '132127'), +('1493', 'Rimini', 'ITA', 'Emilia-Romagna', '131062'), +('1494', 'Syrakusa', 'ITA', 'Sisilia', '126282'), +('1495', 'Sassari', 'ITA', 'Sardinia', '120803'), +('1496', 'Monza', 'ITA', 'Lombardia', '119516'), +('1497', 'Bergamo', 'ITA', 'Lombardia', '117837'), +('1498', 'Pescara', 'ITA', 'Abruzzit', '115698'), +('1499', 'Latina', 'ITA', 'Latium', '114099'), +('1500', 'Vicenza', 'ITA', 'Veneto', '109738'), +('1501', 'Terni', 'ITA', 'Umbria', '107770'), +('1502', 'Forlě', 'ITA', 'Emilia-Romagna', '107475'), +('1503', 'Trento', 'ITA', 'Trentino-Alto Adige', '104906'), +('1504', 'Novara', 'ITA', 'Piemonte', '102037'), +('1505', 'Piacenza', 'ITA', 'Emilia-Romagna', '98384'), +('1506', 'Ancona', 'ITA', 'Marche', '98329'), +('1507', 'Lecce', 'ITA', 'Apulia', '98208'), +('1508', 'Bolzano', 'ITA', 'Trentino-Alto Adige', '97232'), +('1509', 'Catanzaro', 'ITA', 'Calabria', '96700'), +('1510', 'La Spezia', 'ITA', 'Liguria', '95504'), +('1511', 'Udine', 'ITA', 'Friuli-Venezia Giuli', '94932'), +('1512', 'Torre del Greco', 'ITA', 'Campania', '94505'), +('1513', 'Andria', 'ITA', 'Apulia', '94443'), +('1514', 'Brindisi', 'ITA', 'Apulia', '93454'), +('1515', 'Giugliano in Campania', 'ITA', 'Campania', '93286'), +('1516', 'Pisa', 'ITA', 'Toscana', '92379'), +('1517', 'Barletta', 'ITA', 'Apulia', '91904'), +('1518', 'Arezzo', 'ITA', 'Toscana', '91729'), +('1519', 'Alessandria', 'ITA', 'Piemonte', '90289'), +('1520', 'Cesena', 'ITA', 'Emilia-Romagna', '89852'), +('1521', 'Pesaro', 'ITA', 'Marche', '88987'), +('1522', 'Dili', 'TMP', 'Dili', '47900'), +('1523', 'Wien', 'AUT', 'Wien', '1608144'), +('1524', 'Graz', 'AUT', 'Steiermark', '240967'), +('1525', 'Linz', 'AUT', 'North Austria', '188022'), +('1526', 'Salzburg', 'AUT', 'Salzburg', '144247'), +('1527', 'Innsbruck', 'AUT', 'Tiroli', '111752'), +('1528', 'Klagenfurt', 'AUT', 'Kärnten', '91141'), +('1529', 'Spanish Town', 'JAM', 'St. Catherine', '110379'), +('1530', 'Kingston', 'JAM', 'St. Andrew', '103962'), +('1531', 'Portmore', 'JAM', 'St. Andrew', '99799'), +('1532', 'Tokyo', 'JPN', 'Tokyo-to', '7980230'), +('1533', 'Jokohama [Yokohama]', 'JPN', 'Kanagawa', '3339594'), +('1534', 'Osaka', 'JPN', 'Osaka', '2595674'), +('1535', 'Nagoya', 'JPN', 'Aichi', '2154376'), +('1536', 'Sapporo', 'JPN', 'Hokkaido', '1790886'), +('1537', 'Kioto', 'JPN', 'Kyoto', '1461974'), +('1538', 'Kobe', 'JPN', 'Hyogo', '1425139'), +('1539', 'Fukuoka', 'JPN', 'Fukuoka', '1308379'), +('1540', 'Kawasaki', 'JPN', 'Kanagawa', '1217359'), +('1541', 'Hiroshima', 'JPN', 'Hiroshima', '1119117'), +('1542', 'Kitakyushu', 'JPN', 'Fukuoka', '1016264'), +('1543', 'Sendai', 'JPN', 'Miyagi', '989975'), +('1544', 'Chiba', 'JPN', 'Chiba', '863930'), +('1545', 'Sakai', 'JPN', 'Osaka', '797735'), +('1546', 'Kumamoto', 'JPN', 'Kumamoto', '656734'), +('1547', 'Okayama', 'JPN', 'Okayama', '624269'), +('1548', 'Sagamihara', 'JPN', 'Kanagawa', '586300'), +('1549', 'Hamamatsu', 'JPN', 'Shizuoka', '568796'), +('1550', 'Kagoshima', 'JPN', 'Kagoshima', '549977'), +('1551', 'Funabashi', 'JPN', 'Chiba', '545299'), +('1552', 'Higashiosaka', 'JPN', 'Osaka', '517785'), +('1553', 'Hachioji', 'JPN', 'Tokyo-to', '513451'), +('1554', 'Niigata', 'JPN', 'Niigata', '497464'), +('1555', 'Amagasaki', 'JPN', 'Hyogo', '481434'), +('1556', 'Himeji', 'JPN', 'Hyogo', '475167'), +('1557', 'Shizuoka', 'JPN', 'Shizuoka', '473854'), +('1558', 'Urawa', 'JPN', 'Saitama', '469675'), +('1559', 'Matsuyama', 'JPN', 'Ehime', '466133'), +('1560', 'Matsudo', 'JPN', 'Chiba', '461126'), +('1561', 'Kanazawa', 'JPN', 'Ishikawa', '455386'), +('1562', 'Kawaguchi', 'JPN', 'Saitama', '452155'), +('1563', 'Ichikawa', 'JPN', 'Chiba', '441893'), +('1564', 'Omiya', 'JPN', 'Saitama', '441649'), +('1565', 'Utsunomiya', 'JPN', 'Tochigi', '440353'), +('1566', 'Oita', 'JPN', 'Oita', '433401'), +('1567', 'Nagasaki', 'JPN', 'Nagasaki', '432759'), +('1568', 'Yokosuka', 'JPN', 'Kanagawa', '430200'), +('1569', 'Kurashiki', 'JPN', 'Okayama', '425103'), +('1570', 'Gifu', 'JPN', 'Gifu', '408007'), +('1571', 'Hirakata', 'JPN', 'Osaka', '403151'), +('1572', 'Nishinomiya', 'JPN', 'Hyogo', '397618'), +('1573', 'Toyonaka', 'JPN', 'Osaka', '396689'), +('1574', 'Wakayama', 'JPN', 'Wakayama', '391233'), +('1575', 'Fukuyama', 'JPN', 'Hiroshima', '376921'), +('1576', 'Fujisawa', 'JPN', 'Kanagawa', '372840'), +('1577', 'Asahikawa', 'JPN', 'Hokkaido', '364813'), +('1578', 'Machida', 'JPN', 'Tokyo-to', '364197'), +('1579', 'Nara', 'JPN', 'Nara', '362812'), +('1580', 'Takatsuki', 'JPN', 'Osaka', '361747'), +('1581', 'Iwaki', 'JPN', 'Fukushima', '361737'), +('1582', 'Nagano', 'JPN', 'Nagano', '361391'), +('1583', 'Toyohashi', 'JPN', 'Aichi', '360066'), +('1584', 'Toyota', 'JPN', 'Aichi', '346090'), +('1585', 'Suita', 'JPN', 'Osaka', '345750'), +('1586', 'Takamatsu', 'JPN', 'Kagawa', '332471'), +('1587', 'Koriyama', 'JPN', 'Fukushima', '330335'), +('1588', 'Okazaki', 'JPN', 'Aichi', '328711'), +('1589', 'Kawagoe', 'JPN', 'Saitama', '327211'), +('1590', 'Tokorozawa', 'JPN', 'Saitama', '325809'), +('1591', 'Toyama', 'JPN', 'Toyama', '325790'), +('1592', 'Kochi', 'JPN', 'Kochi', '324710'), +('1593', 'Kashiwa', 'JPN', 'Chiba', '320296'), +('1594', 'Akita', 'JPN', 'Akita', '314440'), +('1595', 'Miyazaki', 'JPN', 'Miyazaki', '303784'), +('1596', 'Koshigaya', 'JPN', 'Saitama', '301446'), +('1597', 'Naha', 'JPN', 'Okinawa', '299851'), +('1598', 'Aomori', 'JPN', 'Aomori', '295969'), +('1599', 'Hakodate', 'JPN', 'Hokkaido', '294788'), +('1600', 'Akashi', 'JPN', 'Hyogo', '292253'), +('1601', 'Yokkaichi', 'JPN', 'Mie', '288173'), +('1602', 'Fukushima', 'JPN', 'Fukushima', '287525'), +('1603', 'Morioka', 'JPN', 'Iwate', '287353'), +('1604', 'Maebashi', 'JPN', 'Gumma', '284473'), +('1605', 'Kasugai', 'JPN', 'Aichi', '282348'), +('1606', 'Otsu', 'JPN', 'Shiga', '282070'), +('1607', 'Ichihara', 'JPN', 'Chiba', '279280'), +('1608', 'Yao', 'JPN', 'Osaka', '276421'), +('1609', 'Ichinomiya', 'JPN', 'Aichi', '270828'), +('1610', 'Tokushima', 'JPN', 'Tokushima', '269649'), +('1611', 'Kakogawa', 'JPN', 'Hyogo', '266281'), +('1612', 'Ibaraki', 'JPN', 'Osaka', '261020'), +('1613', 'Neyagawa', 'JPN', 'Osaka', '257315'), +('1614', 'Shimonoseki', 'JPN', 'Yamaguchi', '257263'), +('1615', 'Yamagata', 'JPN', 'Yamagata', '255617'), +('1616', 'Fukui', 'JPN', 'Fukui', '254818'), +('1617', 'Hiratsuka', 'JPN', 'Kanagawa', '254207'), +('1618', 'Mito', 'JPN', 'Ibaragi', '246559'), +('1619', 'Sasebo', 'JPN', 'Nagasaki', '244240'), +('1620', 'Hachinohe', 'JPN', 'Aomori', '242979'), +('1621', 'Takasaki', 'JPN', 'Gumma', '239124'), +('1622', 'Shimizu', 'JPN', 'Shizuoka', '239123'), +('1623', 'Kurume', 'JPN', 'Fukuoka', '235611'), +('1624', 'Fuji', 'JPN', 'Shizuoka', '231527'), +('1625', 'Soka', 'JPN', 'Saitama', '222768'), +('1626', 'Fuchu', 'JPN', 'Tokyo-to', '220576'), +('1627', 'Chigasaki', 'JPN', 'Kanagawa', '216015'), +('1628', 'Atsugi', 'JPN', 'Kanagawa', '212407'), +('1629', 'Numazu', 'JPN', 'Shizuoka', '211382'), +('1630', 'Ageo', 'JPN', 'Saitama', '209442'), +('1631', 'Yamato', 'JPN', 'Kanagawa', '208234'), +('1632', 'Matsumoto', 'JPN', 'Nagano', '206801'), +('1633', 'Kure', 'JPN', 'Hiroshima', '206504'), +('1634', 'Takarazuka', 'JPN', 'Hyogo', '205993'), +('1635', 'Kasukabe', 'JPN', 'Saitama', '201838'), +('1636', 'Chofu', 'JPN', 'Tokyo-to', '201585'), +('1637', 'Odawara', 'JPN', 'Kanagawa', '200171'), +('1638', 'Kofu', 'JPN', 'Yamanashi', '199753'), +('1639', 'Kushiro', 'JPN', 'Hokkaido', '197608'), +('1640', 'Kishiwada', 'JPN', 'Osaka', '197276'), +('1641', 'Hitachi', 'JPN', 'Ibaragi', '196622'), +('1642', 'Nagaoka', 'JPN', 'Niigata', '192407'), +('1643', 'Itami', 'JPN', 'Hyogo', '190886'), +('1644', 'Uji', 'JPN', 'Kyoto', '188735'), +('1645', 'Suzuka', 'JPN', 'Mie', '184061'), +('1646', 'Hirosaki', 'JPN', 'Aomori', '177522'), +('1647', 'Ube', 'JPN', 'Yamaguchi', '175206'), +('1648', 'Kodaira', 'JPN', 'Tokyo-to', '174984'), +('1649', 'Takaoka', 'JPN', 'Toyama', '174380'), +('1650', 'Obihiro', 'JPN', 'Hokkaido', '173685'), +('1651', 'Tomakomai', 'JPN', 'Hokkaido', '171958'), +('1652', 'Saga', 'JPN', 'Saga', '170034'), +('1653', 'Sakura', 'JPN', 'Chiba', '168072'), +('1654', 'Kamakura', 'JPN', 'Kanagawa', '167661'), +('1655', 'Mitaka', 'JPN', 'Tokyo-to', '167268'), +('1656', 'Izumi', 'JPN', 'Osaka', '166979'), +('1657', 'Hino', 'JPN', 'Tokyo-to', '166770'), +('1658', 'Hadano', 'JPN', 'Kanagawa', '166512'), +('1659', 'Ashikaga', 'JPN', 'Tochigi', '165243'), +('1660', 'Tsu', 'JPN', 'Mie', '164543'), +('1661', 'Sayama', 'JPN', 'Saitama', '162472'), +('1662', 'Yachiyo', 'JPN', 'Chiba', '161222'), +('1663', 'Tsukuba', 'JPN', 'Ibaragi', '160768'), +('1664', 'Tachikawa', 'JPN', 'Tokyo-to', '159430'), +('1665', 'Kumagaya', 'JPN', 'Saitama', '157171'), +('1666', 'Moriguchi', 'JPN', 'Osaka', '155941'), +('1667', 'Otaru', 'JPN', 'Hokkaido', '155784'), +('1668', 'Anjo', 'JPN', 'Aichi', '153823'), +('1669', 'Narashino', 'JPN', 'Chiba', '152849'), +('1670', 'Oyama', 'JPN', 'Tochigi', '152820'), +('1671', 'Ogaki', 'JPN', 'Gifu', '151758'), +('1672', 'Matsue', 'JPN', 'Shimane', '149821'), +('1673', 'Kawanishi', 'JPN', 'Hyogo', '149794'), +('1674', 'Hitachinaka', 'JPN', 'Tokyo-to', '148006'), +('1675', 'Niiza', 'JPN', 'Saitama', '147744'), +('1676', 'Nagareyama', 'JPN', 'Chiba', '147738'), +('1677', 'Tottori', 'JPN', 'Tottori', '147523'), +('1678', 'Tama', 'JPN', 'Ibaragi', '146712'), +('1679', 'Iruma', 'JPN', 'Saitama', '145922'), +('1680', 'Ota', 'JPN', 'Gumma', '145317'), +('1681', 'Omuta', 'JPN', 'Fukuoka', '142889'), +('1682', 'Komaki', 'JPN', 'Aichi', '139827'), +('1683', 'Ome', 'JPN', 'Tokyo-to', '139216'), +('1684', 'Kadoma', 'JPN', 'Osaka', '138953'), +('1685', 'Yamaguchi', 'JPN', 'Yamaguchi', '138210'), +('1686', 'Higashimurayama', 'JPN', 'Tokyo-to', '136970'), +('1687', 'Yonago', 'JPN', 'Tottori', '136461'), +('1688', 'Matsubara', 'JPN', 'Osaka', '135010'), +('1689', 'Musashino', 'JPN', 'Tokyo-to', '134426'), +('1690', 'Tsuchiura', 'JPN', 'Ibaragi', '134072'), +('1691', 'Joetsu', 'JPN', 'Niigata', '133505'), +('1692', 'Miyakonojo', 'JPN', 'Miyazaki', '133183'), +('1693', 'Misato', 'JPN', 'Saitama', '132957'), +('1694', 'Kakamigahara', 'JPN', 'Gifu', '131831'), +('1695', 'Daito', 'JPN', 'Osaka', '130594'), +('1696', 'Seto', 'JPN', 'Aichi', '130470'), +('1697', 'Kariya', 'JPN', 'Aichi', '127969'), +('1698', 'Urayasu', 'JPN', 'Chiba', '127550'), +('1699', 'Beppu', 'JPN', 'Oita', '127486'), +('1700', 'Niihama', 'JPN', 'Ehime', '127207'), +('1701', 'Minoo', 'JPN', 'Osaka', '127026'), +('1702', 'Fujieda', 'JPN', 'Shizuoka', '126897'), +('1703', 'Abiko', 'JPN', 'Chiba', '126670'), +('1704', 'Nobeoka', 'JPN', 'Miyazaki', '125547'), +('1705', 'Tondabayashi', 'JPN', 'Osaka', '125094'), +('1706', 'Ueda', 'JPN', 'Nagano', '124217'), +('1707', 'Kashihara', 'JPN', 'Nara', '124013'), +('1708', 'Matsusaka', 'JPN', 'Mie', '123582'), +('1709', 'Isesaki', 'JPN', 'Gumma', '123285'), +('1710', 'Zama', 'JPN', 'Kanagawa', '122046'), +('1711', 'Kisarazu', 'JPN', 'Chiba', '121967'), +('1712', 'Noda', 'JPN', 'Chiba', '121030'), +('1713', 'Ishinomaki', 'JPN', 'Miyagi', '120963'), +('1714', 'Fujinomiya', 'JPN', 'Shizuoka', '119714'), +('1715', 'Kawachinagano', 'JPN', 'Osaka', '119666'), +('1716', 'Imabari', 'JPN', 'Ehime', '119357'), +('1717', 'Aizuwakamatsu', 'JPN', 'Fukushima', '119287'), +('1718', 'Higashihiroshima', 'JPN', 'Hiroshima', '119166'), +('1719', 'Habikino', 'JPN', 'Osaka', '118968'), +('1720', 'Ebetsu', 'JPN', 'Hokkaido', '118805'), +('1721', 'Hofu', 'JPN', 'Yamaguchi', '118751'), +('1722', 'Kiryu', 'JPN', 'Gumma', '118326'), +('1723', 'Okinawa', 'JPN', 'Okinawa', '117748'), +('1724', 'Yaizu', 'JPN', 'Shizuoka', '117258'), +('1725', 'Toyokawa', 'JPN', 'Aichi', '115781'), +('1726', 'Ebina', 'JPN', 'Kanagawa', '115571'), +('1727', 'Asaka', 'JPN', 'Saitama', '114815'), +('1728', 'Higashikurume', 'JPN', 'Tokyo-to', '111666'), +('1729', 'Ikoma', 'JPN', 'Nara', '111645'), +('1730', 'Kitami', 'JPN', 'Hokkaido', '111295'), +('1731', 'Koganei', 'JPN', 'Tokyo-to', '110969'), +('1732', 'Iwatsuki', 'JPN', 'Saitama', '110034'), +('1733', 'Mishima', 'JPN', 'Shizuoka', '109699'), +('1734', 'Handa', 'JPN', 'Aichi', '108600'), +('1735', 'Muroran', 'JPN', 'Hokkaido', '108275'), +('1736', 'Komatsu', 'JPN', 'Ishikawa', '107937'), +('1737', 'Yatsushiro', 'JPN', 'Kumamoto', '107661'), +('1738', 'Iida', 'JPN', 'Nagano', '107583'), +('1739', 'Tokuyama', 'JPN', 'Yamaguchi', '107078'), +('1740', 'Kokubunji', 'JPN', 'Tokyo-to', '106996'), +('1741', 'Akishima', 'JPN', 'Tokyo-to', '106914'), +('1742', 'Iwakuni', 'JPN', 'Yamaguchi', '106647'), +('1743', 'Kusatsu', 'JPN', 'Shiga', '106232'), +('1744', 'Kuwana', 'JPN', 'Mie', '106121'), +('1745', 'Sanda', 'JPN', 'Hyogo', '105643'), +('1746', 'Hikone', 'JPN', 'Shiga', '105508'), +('1747', 'Toda', 'JPN', 'Saitama', '103969'), +('1748', 'Tajimi', 'JPN', 'Gifu', '103171'), +('1749', 'Ikeda', 'JPN', 'Osaka', '102710'), +('1750', 'Fukaya', 'JPN', 'Saitama', '102156'), +('1751', 'Ise', 'JPN', 'Mie', '101732'), +('1752', 'Sakata', 'JPN', 'Yamagata', '101651'), +('1753', 'Kasuga', 'JPN', 'Fukuoka', '101344'), +('1754', 'Kamagaya', 'JPN', 'Chiba', '100821'), +('1755', 'Tsuruoka', 'JPN', 'Yamagata', '100713'), +('1756', 'Hoya', 'JPN', 'Tokyo-to', '100313'), +('1757', 'Nishio', 'JPN', 'Chiba', '100032'), +('1758', 'Tokai', 'JPN', 'Aichi', '99738'), +('1759', 'Inazawa', 'JPN', 'Aichi', '98746'), +('1760', 'Sakado', 'JPN', 'Saitama', '98221'), +('1761', 'Isehara', 'JPN', 'Kanagawa', '98123'), +('1762', 'Takasago', 'JPN', 'Hyogo', '97632'), +('1763', 'Fujimi', 'JPN', 'Saitama', '96972'), +('1764', 'Urasoe', 'JPN', 'Okinawa', '96002'), +('1765', 'Yonezawa', 'JPN', 'Yamagata', '95592'), +('1766', 'Konan', 'JPN', 'Aichi', '95521'), +('1767', 'Yamatokoriyama', 'JPN', 'Nara', '95165'), +('1768', 'Maizuru', 'JPN', 'Kyoto', '94784'), +('1769', 'Onomichi', 'JPN', 'Hiroshima', '93756'), +('1770', 'Higashimatsuyama', 'JPN', 'Saitama', '93342'), +('1771', 'Kimitsu', 'JPN', 'Chiba', '93216'), +('1772', 'Isahaya', 'JPN', 'Nagasaki', '93058'), +('1773', 'Kanuma', 'JPN', 'Tochigi', '93053'), +('1774', 'Izumisano', 'JPN', 'Osaka', '92583'), +('1775', 'Kameoka', 'JPN', 'Kyoto', '92398'), +('1776', 'Mobara', 'JPN', 'Chiba', '91664'), +('1777', 'Narita', 'JPN', 'Chiba', '91470'), +('1778', 'Kashiwazaki', 'JPN', 'Niigata', '91229'), +('1779', 'Tsuyama', 'JPN', 'Okayama', '91170'), +('1780', 'Sanaa', 'YEM', 'Sanaa', '503600'), +('1781', 'Aden', 'YEM', 'Aden', '398300'), +('1782', 'Taizz', 'YEM', 'Taizz', '317600'), +('1783', 'Hodeida', 'YEM', 'Hodeida', '298500'), +('1784', 'al-Mukalla', 'YEM', 'Hadramawt', '122400'), +('1785', 'Ibb', 'YEM', 'Ibb', '103300'), +('1786', 'Amman', 'JOR', 'Amman', '1000000'), +('1787', 'al-Zarqa', 'JOR', 'al-Zarqa', '389815'), +('1788', 'Irbid', 'JOR', 'Irbid', '231511'), +('1789', 'al-Rusayfa', 'JOR', 'al-Zarqa', '137247'), +('1790', 'Wadi al-Sir', 'JOR', 'Amman', '89104'), +('1791', 'Flying Fish Cove', 'CXR', '–', '700'), +('1792', 'Beograd', 'YUG', 'Central Serbia', '1204000'), +('1793', 'Novi Sad', 'YUG', 'Vojvodina', '179626'), +('1794', 'Niš', 'YUG', 'Central Serbia', '175391'), +('1795', 'Priština', 'YUG', 'Kosovo and Metohija', '155496'), +('1796', 'Kragujevac', 'YUG', 'Central Serbia', '147305'), +('1797', 'Podgorica', 'YUG', 'Montenegro', '135000'), +('1798', 'Subotica', 'YUG', 'Vojvodina', '100386'), +('1799', 'Prizren', 'YUG', 'Kosovo and Metohija', '92303'), +('1800', 'Phnom Penh', 'KHM', 'Phnom Penh', '570155'), +('1801', 'Battambang', 'KHM', 'Battambang', '129800'), +('1802', 'Siem Reap', 'KHM', 'Siem Reap', '105100'), +('1803', 'Douala', 'CMR', 'Littoral', '1448300'), +('1804', 'Yaoundé', 'CMR', 'Centre', '1372800'), +('1805', 'Garoua', 'CMR', 'Nord', '177000'), +('1806', 'Maroua', 'CMR', 'Extręme-Nord', '143000'), +('1807', 'Bamenda', 'CMR', 'Nord-Ouest', '138000'), +('1808', 'Bafoussam', 'CMR', 'Ouest', '131000'), +('1809', 'Nkongsamba', 'CMR', 'Littoral', '112454'), +('1810', 'Montréal', 'CAN', 'Québec', '1016376'), +('1811', 'Calgary', 'CAN', 'Alberta', '768082'), +('1812', 'Toronto', 'CAN', 'Ontario', '688275'), +('1813', 'North York', 'CAN', 'Ontario', '622632'), +('1814', 'Winnipeg', 'CAN', 'Manitoba', '618477'), +('1815', 'Edmonton', 'CAN', 'Alberta', '616306'), +('1816', 'Mississauga', 'CAN', 'Ontario', '608072'), +('1817', 'Scarborough', 'CAN', 'Ontario', '594501'), +('1818', 'Vancouver', 'CAN', 'British Colombia', '514008'), +('1819', 'Etobicoke', 'CAN', 'Ontario', '348845'), +('1820', 'London', 'CAN', 'Ontario', '339917'), +('1821', 'Hamilton', 'CAN', 'Ontario', '335614'), +('1822', 'Ottawa', 'CAN', 'Ontario', '335277'), +('1823', 'Laval', 'CAN', 'Québec', '330393'), +('1824', 'Surrey', 'CAN', 'British Colombia', '304477'), +('1825', 'Brampton', 'CAN', 'Ontario', '296711'), +('1826', 'Windsor', 'CAN', 'Ontario', '207588'), +('1827', 'Saskatoon', 'CAN', 'Saskatchewan', '193647'), +('1828', 'Kitchener', 'CAN', 'Ontario', '189959'), +('1829', 'Markham', 'CAN', 'Ontario', '189098'), +('1830', 'Regina', 'CAN', 'Saskatchewan', '180400'), +('1831', 'Burnaby', 'CAN', 'British Colombia', '179209'), +('1832', 'Québec', 'CAN', 'Québec', '167264'), +('1833', 'York', 'CAN', 'Ontario', '154980'), +('1834', 'Richmond', 'CAN', 'British Colombia', '148867'), +('1835', 'Vaughan', 'CAN', 'Ontario', '147889'), +('1836', 'Burlington', 'CAN', 'Ontario', '145150'), +('1837', 'Oshawa', 'CAN', 'Ontario', '140173'), +('1838', 'Oakville', 'CAN', 'Ontario', '139192'), +('1839', 'Saint Catharines', 'CAN', 'Ontario', '136216'), +('1840', 'Longueuil', 'CAN', 'Québec', '127977'), +('1841', 'Richmond Hill', 'CAN', 'Ontario', '116428'), +('1842', 'Thunder Bay', 'CAN', 'Ontario', '115913'), +('1843', 'Nepean', 'CAN', 'Ontario', '115100'), +('1844', 'Cape Breton', 'CAN', 'Nova Scotia', '114733'), +('1845', 'East York', 'CAN', 'Ontario', '114034'), +('1846', 'Halifax', 'CAN', 'Nova Scotia', '113910'), +('1847', 'Cambridge', 'CAN', 'Ontario', '109186'), +('1848', 'Gloucester', 'CAN', 'Ontario', '107314'), +('1849', 'Abbotsford', 'CAN', 'British Colombia', '105403'), +('1850', 'Guelph', 'CAN', 'Ontario', '103593'), +('1851', 'Saint John´s', 'CAN', 'Newfoundland', '101936'), +('1852', 'Coquitlam', 'CAN', 'British Colombia', '101820'), +('1853', 'Saanich', 'CAN', 'British Colombia', '101388'), +('1854', 'Gatineau', 'CAN', 'Québec', '100702'), +('1855', 'Delta', 'CAN', 'British Colombia', '95411'), +('1856', 'Sudbury', 'CAN', 'Ontario', '92686'), +('1857', 'Kelowna', 'CAN', 'British Colombia', '89442'), +('1858', 'Barrie', 'CAN', 'Ontario', '89269'), +('1859', 'Praia', 'CPV', 'Săo Tiago', '94800'), +('1860', 'Almaty', 'KAZ', 'Almaty Qalasy', '1129400'), +('1861', 'Qaraghandy', 'KAZ', 'Qaraghandy', '436900'), +('1862', 'Shymkent', 'KAZ', 'South Kazakstan', '360100'), +('1863', 'Taraz', 'KAZ', 'Taraz', '330100'), +('1864', 'Astana', 'KAZ', 'Astana', '311200'), +('1865', 'Öskemen', 'KAZ', 'East Kazakstan', '311000'), +('1866', 'Pavlodar', 'KAZ', 'Pavlodar', '300500'), +('1867', 'Semey', 'KAZ', 'East Kazakstan', '269600'), +('1868', 'Aqtöbe', 'KAZ', 'Aqtöbe', '253100'), +('1869', 'Qostanay', 'KAZ', 'Qostanay', '221400'), +('1870', 'Petropavl', 'KAZ', 'North Kazakstan', '203500'), +('1871', 'Oral', 'KAZ', 'West Kazakstan', '195500'), +('1872', 'Temirtau', 'KAZ', 'Qaraghandy', '170500'), +('1873', 'Qyzylorda', 'KAZ', 'Qyzylorda', '157400'), +('1874', 'Aqtau', 'KAZ', 'Mangghystau', '143400'), +('1875', 'Atyrau', 'KAZ', 'Atyrau', '142500'), +('1876', 'Ekibastuz', 'KAZ', 'Pavlodar', '127200'), +('1877', 'Kökshetau', 'KAZ', 'North Kazakstan', '123400'), +('1878', 'Rudnyy', 'KAZ', 'Qostanay', '109500'), +('1879', 'Taldyqorghan', 'KAZ', 'Almaty', '98000'), +('1880', 'Zhezqazghan', 'KAZ', 'Qaraghandy', '90000'), +('1881', 'Nairobi', 'KEN', 'Nairobi', '2290000'), +('1882', 'Mombasa', 'KEN', 'Coast', '461753'), +('1883', 'Kisumu', 'KEN', 'Nyanza', '192733'), +('1884', 'Nakuru', 'KEN', 'Rift Valley', '163927'), +('1885', 'Machakos', 'KEN', 'Eastern', '116293'), +('1886', 'Eldoret', 'KEN', 'Rift Valley', '111882'), +('1887', 'Meru', 'KEN', 'Eastern', '94947'), +('1888', 'Nyeri', 'KEN', 'Central', '91258'), +('1889', 'Bangui', 'CAF', 'Bangui', '524000'), +('1890', 'Shanghai', 'CHN', 'Shanghai', '9696300'), +('1891', 'Peking', 'CHN', 'Peking', '7472000'), +('1892', 'Chongqing', 'CHN', 'Chongqing', '6351600'), +('1893', 'Tianjin', 'CHN', 'Tianjin', '5286800'), +('1894', 'Wuhan', 'CHN', 'Hubei', '4344600'), +('1895', 'Harbin', 'CHN', 'Heilongjiang', '4289800'), +('1896', 'Shenyang', 'CHN', 'Liaoning', '4265200'), +('1897', 'Kanton [Guangzhou]', 'CHN', 'Guangdong', '4256300'), +('1898', 'Chengdu', 'CHN', 'Sichuan', '3361500'), +('1899', 'Nanking [Nanjing]', 'CHN', 'Jiangsu', '2870300'), +('1900', 'Changchun', 'CHN', 'Jilin', '2812000'), +('1901', 'Xi´an', 'CHN', 'Shaanxi', '2761400'), +('1902', 'Dalian', 'CHN', 'Liaoning', '2697000'), +('1903', 'Qingdao', 'CHN', 'Shandong', '2596000'), +('1904', 'Jinan', 'CHN', 'Shandong', '2278100'), +('1905', 'Hangzhou', 'CHN', 'Zhejiang', '2190500'), +('1906', 'Zhengzhou', 'CHN', 'Henan', '2107200'), +('1907', 'Shijiazhuang', 'CHN', 'Hebei', '2041500'), +('1908', 'Taiyuan', 'CHN', 'Shanxi', '1968400'), +('1909', 'Kunming', 'CHN', 'Yunnan', '1829500'), +('1910', 'Changsha', 'CHN', 'Hunan', '1809800'), +('1911', 'Nanchang', 'CHN', 'Jiangxi', '1691600'), +('1912', 'Fuzhou', 'CHN', 'Fujian', '1593800'), +('1913', 'Lanzhou', 'CHN', 'Gansu', '1565800'), +('1914', 'Guiyang', 'CHN', 'Guizhou', '1465200'), +('1915', 'Ningbo', 'CHN', 'Zhejiang', '1371200'), +('1916', 'Hefei', 'CHN', 'Anhui', '1369100'), +('1917', 'Urumtši [Ürümqi]', 'CHN', 'Xinxiang', '1310100'), +('1918', 'Anshan', 'CHN', 'Liaoning', '1200000'), +('1919', 'Fushun', 'CHN', 'Liaoning', '1200000'), +('1920', 'Nanning', 'CHN', 'Guangxi', '1161800'), +('1921', 'Zibo', 'CHN', 'Shandong', '1140000'), +('1922', 'Qiqihar', 'CHN', 'Heilongjiang', '1070000'), +('1923', 'Jilin', 'CHN', 'Jilin', '1040000'), +('1924', 'Tangshan', 'CHN', 'Hebei', '1040000'), +('1925', 'Baotou', 'CHN', 'Inner Mongolia', '980000'), +('1926', 'Shenzhen', 'CHN', 'Guangdong', '950500'), +('1927', 'Hohhot', 'CHN', 'Inner Mongolia', '916700'), +('1928', 'Handan', 'CHN', 'Hebei', '840000'), +('1929', 'Wuxi', 'CHN', 'Jiangsu', '830000'), +('1930', 'Xuzhou', 'CHN', 'Jiangsu', '810000'), +('1931', 'Datong', 'CHN', 'Shanxi', '800000'), +('1932', 'Yichun', 'CHN', 'Heilongjiang', '800000'), +('1933', 'Benxi', 'CHN', 'Liaoning', '770000'), +('1934', 'Luoyang', 'CHN', 'Henan', '760000'), +('1935', 'Suzhou', 'CHN', 'Jiangsu', '710000'), +('1936', 'Xining', 'CHN', 'Qinghai', '700200'), +('1937', 'Huainan', 'CHN', 'Anhui', '700000'), +('1938', 'Jixi', 'CHN', 'Heilongjiang', '683885'), +('1939', 'Daqing', 'CHN', 'Heilongjiang', '660000'), +('1940', 'Fuxin', 'CHN', 'Liaoning', '640000'), +('1941', 'Amoy [Xiamen]', 'CHN', 'Fujian', '627500'), +('1942', 'Liuzhou', 'CHN', 'Guangxi', '610000'), +('1943', 'Shantou', 'CHN', 'Guangdong', '580000'), +('1944', 'Jinzhou', 'CHN', 'Liaoning', '570000'), +('1945', 'Mudanjiang', 'CHN', 'Heilongjiang', '570000'), +('1946', 'Yinchuan', 'CHN', 'Ningxia', '544500'), +('1947', 'Changzhou', 'CHN', 'Jiangsu', '530000'), +('1948', 'Zhangjiakou', 'CHN', 'Hebei', '530000'), +('1949', 'Dandong', 'CHN', 'Liaoning', '520000'), +('1950', 'Hegang', 'CHN', 'Heilongjiang', '520000'), +('1951', 'Kaifeng', 'CHN', 'Henan', '510000'), +('1952', 'Jiamusi', 'CHN', 'Heilongjiang', '493409'), +('1953', 'Liaoyang', 'CHN', 'Liaoning', '492559'), +('1954', 'Hengyang', 'CHN', 'Hunan', '487148'), +('1955', 'Baoding', 'CHN', 'Hebei', '483155'), +('1956', 'Hunjiang', 'CHN', 'Jilin', '482043'), +('1957', 'Xinxiang', 'CHN', 'Henan', '473762'), +('1958', 'Huangshi', 'CHN', 'Hubei', '457601'), +('1959', 'Haikou', 'CHN', 'Hainan', '454300'), +('1960', 'Yantai', 'CHN', 'Shandong', '452127'), +('1961', 'Bengbu', 'CHN', 'Anhui', '449245'), +('1962', 'Xiangtan', 'CHN', 'Hunan', '441968'), +('1963', 'Weifang', 'CHN', 'Shandong', '428522'), +('1964', 'Wuhu', 'CHN', 'Anhui', '425740'), +('1965', 'Pingxiang', 'CHN', 'Jiangxi', '425579'), +('1966', 'Yingkou', 'CHN', 'Liaoning', '421589'), +('1967', 'Anyang', 'CHN', 'Henan', '420332'), +('1968', 'Panzhihua', 'CHN', 'Sichuan', '415466'), +('1969', 'Pingdingshan', 'CHN', 'Henan', '410775'), +('1970', 'Xiangfan', 'CHN', 'Hubei', '410407'), +('1971', 'Zhuzhou', 'CHN', 'Hunan', '409924'), +('1972', 'Jiaozuo', 'CHN', 'Henan', '409100'), +('1973', 'Wenzhou', 'CHN', 'Zhejiang', '401871'), +('1974', 'Zhangjiang', 'CHN', 'Guangdong', '400997'), +('1975', 'Zigong', 'CHN', 'Sichuan', '393184'), +('1976', 'Shuangyashan', 'CHN', 'Heilongjiang', '386081'), +('1977', 'Zaozhuang', 'CHN', 'Shandong', '380846'), +('1978', 'Yakeshi', 'CHN', 'Inner Mongolia', '377869'), +('1979', 'Yichang', 'CHN', 'Hubei', '371601'), +('1980', 'Zhenjiang', 'CHN', 'Jiangsu', '368316'), +('1981', 'Huaibei', 'CHN', 'Anhui', '366549'), +('1982', 'Qinhuangdao', 'CHN', 'Hebei', '364972'), +('1983', 'Guilin', 'CHN', 'Guangxi', '364130'), +('1984', 'Liupanshui', 'CHN', 'Guizhou', '363954'), +('1985', 'Panjin', 'CHN', 'Liaoning', '362773'), +('1986', 'Yangquan', 'CHN', 'Shanxi', '362268'), +('1987', 'Jinxi', 'CHN', 'Liaoning', '357052'), +('1988', 'Liaoyuan', 'CHN', 'Jilin', '354141'), +('1989', 'Lianyungang', 'CHN', 'Jiangsu', '354139'), +('1990', 'Xianyang', 'CHN', 'Shaanxi', '352125'), +('1991', 'Tai´an', 'CHN', 'Shandong', '350696'), +('1992', 'Chifeng', 'CHN', 'Inner Mongolia', '350077'), +('1993', 'Shaoguan', 'CHN', 'Guangdong', '350043'), +('1994', 'Nantong', 'CHN', 'Jiangsu', '343341'), +('1995', 'Leshan', 'CHN', 'Sichuan', '341128'), +('1996', 'Baoji', 'CHN', 'Shaanxi', '337765'), +('1997', 'Linyi', 'CHN', 'Shandong', '324720'), +('1998', 'Tonghua', 'CHN', 'Jilin', '324600'), +('1999', 'Siping', 'CHN', 'Jilin', '317223'); + +INSERT INTO city (id, name, countrycode, district, population) VALUES +('2000', 'Changzhi', 'CHN', 'Shanxi', '317144'), +('2001', 'Tengzhou', 'CHN', 'Shandong', '315083'), +('2002', 'Chaozhou', 'CHN', 'Guangdong', '313469'), +('2003', 'Yangzhou', 'CHN', 'Jiangsu', '312892'), +('2004', 'Dongwan', 'CHN', 'Guangdong', '308669'), +('2005', 'Ma´anshan', 'CHN', 'Anhui', '305421'), +('2006', 'Foshan', 'CHN', 'Guangdong', '303160'), +('2007', 'Yueyang', 'CHN', 'Hunan', '302800'), +('2008', 'Xingtai', 'CHN', 'Hebei', '302789'), +('2009', 'Changde', 'CHN', 'Hunan', '301276'), +('2010', 'Shihezi', 'CHN', 'Xinxiang', '299676'), +('2011', 'Yancheng', 'CHN', 'Jiangsu', '296831'), +('2012', 'Jiujiang', 'CHN', 'Jiangxi', '291187'), +('2013', 'Dongying', 'CHN', 'Shandong', '281728'), +('2014', 'Shashi', 'CHN', 'Hubei', '281352'), +('2015', 'Xintai', 'CHN', 'Shandong', '281248'), +('2016', 'Jingdezhen', 'CHN', 'Jiangxi', '281183'), +('2017', 'Tongchuan', 'CHN', 'Shaanxi', '280657'), +('2018', 'Zhongshan', 'CHN', 'Guangdong', '278829'), +('2019', 'Shiyan', 'CHN', 'Hubei', '273786'), +('2020', 'Tieli', 'CHN', 'Heilongjiang', '265683'), +('2021', 'Jining', 'CHN', 'Shandong', '265248'), +('2022', 'Wuhai', 'CHN', 'Inner Mongolia', '264081'), +('2023', 'Mianyang', 'CHN', 'Sichuan', '262947'), +('2024', 'Luzhou', 'CHN', 'Sichuan', '262892'), +('2025', 'Zunyi', 'CHN', 'Guizhou', '261862'), +('2026', 'Shizuishan', 'CHN', 'Ningxia', '257862'), +('2027', 'Neijiang', 'CHN', 'Sichuan', '256012'), +('2028', 'Tongliao', 'CHN', 'Inner Mongolia', '255129'), +('2029', 'Tieling', 'CHN', 'Liaoning', '254842'), +('2030', 'Wafangdian', 'CHN', 'Liaoning', '251733'), +('2031', 'Anqing', 'CHN', 'Anhui', '250718'), +('2032', 'Shaoyang', 'CHN', 'Hunan', '247227'), +('2033', 'Laiwu', 'CHN', 'Shandong', '246833'), +('2034', 'Chengde', 'CHN', 'Hebei', '246799'), +('2035', 'Tianshui', 'CHN', 'Gansu', '244974'), +('2036', 'Nanyang', 'CHN', 'Henan', '243303'), +('2037', 'Cangzhou', 'CHN', 'Hebei', '242708'), +('2038', 'Yibin', 'CHN', 'Sichuan', '241019'), +('2039', 'Huaiyin', 'CHN', 'Jiangsu', '239675'), +('2040', 'Dunhua', 'CHN', 'Jilin', '235100'), +('2041', 'Yanji', 'CHN', 'Jilin', '230892'), +('2042', 'Jiangmen', 'CHN', 'Guangdong', '230587'), +('2043', 'Tongling', 'CHN', 'Anhui', '228017'), +('2044', 'Suihua', 'CHN', 'Heilongjiang', '227881'), +('2045', 'Gongziling', 'CHN', 'Jilin', '226569'), +('2046', 'Xiantao', 'CHN', 'Hubei', '222884'), +('2047', 'Chaoyang', 'CHN', 'Liaoning', '222394'), +('2048', 'Ganzhou', 'CHN', 'Jiangxi', '220129'), +('2049', 'Huzhou', 'CHN', 'Zhejiang', '218071'), +('2050', 'Baicheng', 'CHN', 'Jilin', '217987'), +('2051', 'Shangzi', 'CHN', 'Heilongjiang', '215373'), +('2052', 'Yangjiang', 'CHN', 'Guangdong', '215196'), +('2053', 'Qitaihe', 'CHN', 'Heilongjiang', '214957'), +('2054', 'Gejiu', 'CHN', 'Yunnan', '214294'), +('2055', 'Jiangyin', 'CHN', 'Jiangsu', '213659'), +('2056', 'Hebi', 'CHN', 'Henan', '212976'), +('2057', 'Jiaxing', 'CHN', 'Zhejiang', '211526'), +('2058', 'Wuzhou', 'CHN', 'Guangxi', '210452'), +('2059', 'Meihekou', 'CHN', 'Jilin', '209038'), +('2060', 'Xuchang', 'CHN', 'Henan', '208815'), +('2061', 'Liaocheng', 'CHN', 'Shandong', '207844'), +('2062', 'Haicheng', 'CHN', 'Liaoning', '205560'), +('2063', 'Qianjiang', 'CHN', 'Hubei', '205504'), +('2064', 'Baiyin', 'CHN', 'Gansu', '204970'), +('2065', 'Bei´an', 'CHN', 'Heilongjiang', '204899'), +('2066', 'Yixing', 'CHN', 'Jiangsu', '200824'), +('2067', 'Laizhou', 'CHN', 'Shandong', '198664'), +('2068', 'Qaramay', 'CHN', 'Xinxiang', '197602'), +('2069', 'Acheng', 'CHN', 'Heilongjiang', '197595'), +('2070', 'Dezhou', 'CHN', 'Shandong', '195485'), +('2071', 'Nanping', 'CHN', 'Fujian', '195064'), +('2072', 'Zhaoqing', 'CHN', 'Guangdong', '194784'), +('2073', 'Beipiao', 'CHN', 'Liaoning', '194301'), +('2074', 'Fengcheng', 'CHN', 'Jiangxi', '193784'), +('2075', 'Fuyu', 'CHN', 'Jilin', '192981'), +('2076', 'Xinyang', 'CHN', 'Henan', '192509'), +('2077', 'Dongtai', 'CHN', 'Jiangsu', '192247'), +('2078', 'Yuci', 'CHN', 'Shanxi', '191356'), +('2079', 'Honghu', 'CHN', 'Hubei', '190772'), +('2080', 'Ezhou', 'CHN', 'Hubei', '190123'), +('2081', 'Heze', 'CHN', 'Shandong', '189293'), +('2082', 'Daxian', 'CHN', 'Sichuan', '188101'), +('2083', 'Linfen', 'CHN', 'Shanxi', '187309'), +('2084', 'Tianmen', 'CHN', 'Hubei', '186332'), +('2085', 'Yiyang', 'CHN', 'Hunan', '185818'), +('2086', 'Quanzhou', 'CHN', 'Fujian', '185154'), +('2087', 'Rizhao', 'CHN', 'Shandong', '185048'), +('2088', 'Deyang', 'CHN', 'Sichuan', '182488'), +('2089', 'Guangyuan', 'CHN', 'Sichuan', '182241'), +('2090', 'Changshu', 'CHN', 'Jiangsu', '181805'), +('2091', 'Zhangzhou', 'CHN', 'Fujian', '181424'), +('2092', 'Hailar', 'CHN', 'Inner Mongolia', '180650'), +('2093', 'Nanchong', 'CHN', 'Sichuan', '180273'), +('2094', 'Jiutai', 'CHN', 'Jilin', '180130'), +('2095', 'Zhaodong', 'CHN', 'Heilongjiang', '179976'), +('2096', 'Shaoxing', 'CHN', 'Zhejiang', '179818'), +('2097', 'Fuyang', 'CHN', 'Anhui', '179572'), +('2098', 'Maoming', 'CHN', 'Guangdong', '178683'), +('2099', 'Qujing', 'CHN', 'Yunnan', '178669'), +('2100', 'Ghulja', 'CHN', 'Xinxiang', '177193'), +('2101', 'Jiaohe', 'CHN', 'Jilin', '176367'), +('2102', 'Puyang', 'CHN', 'Henan', '175988'), +('2103', 'Huadian', 'CHN', 'Jilin', '175873'), +('2104', 'Jiangyou', 'CHN', 'Sichuan', '175753'), +('2105', 'Qashqar', 'CHN', 'Xinxiang', '174570'), +('2106', 'Anshun', 'CHN', 'Guizhou', '174142'), +('2107', 'Fuling', 'CHN', 'Sichuan', '173878'), +('2108', 'Xinyu', 'CHN', 'Jiangxi', '173524'), +('2109', 'Hanzhong', 'CHN', 'Shaanxi', '169930'), +('2110', 'Danyang', 'CHN', 'Jiangsu', '169603'), +('2111', 'Chenzhou', 'CHN', 'Hunan', '169400'), +('2112', 'Xiaogan', 'CHN', 'Hubei', '166280'), +('2113', 'Shangqiu', 'CHN', 'Henan', '164880'), +('2114', 'Zhuhai', 'CHN', 'Guangdong', '164747'), +('2115', 'Qingyuan', 'CHN', 'Guangdong', '164641'), +('2116', 'Aqsu', 'CHN', 'Xinxiang', '164092'), +('2117', 'Jining', 'CHN', 'Inner Mongolia', '163552'), +('2118', 'Xiaoshan', 'CHN', 'Zhejiang', '162930'), +('2119', 'Zaoyang', 'CHN', 'Hubei', '162198'), +('2120', 'Xinghua', 'CHN', 'Jiangsu', '161910'), +('2121', 'Hami', 'CHN', 'Xinxiang', '161315'), +('2122', 'Huizhou', 'CHN', 'Guangdong', '161023'), +('2123', 'Jinmen', 'CHN', 'Hubei', '160794'), +('2124', 'Sanming', 'CHN', 'Fujian', '160691'), +('2125', 'Ulanhot', 'CHN', 'Inner Mongolia', '159538'), +('2126', 'Korla', 'CHN', 'Xinxiang', '159344'), +('2127', 'Wanxian', 'CHN', 'Sichuan', '156823'), +('2128', 'Rui´an', 'CHN', 'Zhejiang', '156468'), +('2129', 'Zhoushan', 'CHN', 'Zhejiang', '156317'), +('2130', 'Liangcheng', 'CHN', 'Shandong', '156307'), +('2131', 'Jiaozhou', 'CHN', 'Shandong', '153364'), +('2132', 'Taizhou', 'CHN', 'Jiangsu', '152442'), +('2133', 'Suzhou', 'CHN', 'Anhui', '151862'), +('2134', 'Yichun', 'CHN', 'Jiangxi', '151585'), +('2135', 'Taonan', 'CHN', 'Jilin', '150168'), +('2136', 'Pingdu', 'CHN', 'Shandong', '150123'), +('2137', 'Ji´an', 'CHN', 'Jiangxi', '148583'), +('2138', 'Longkou', 'CHN', 'Shandong', '148362'), +('2139', 'Langfang', 'CHN', 'Hebei', '148105'), +('2140', 'Zhoukou', 'CHN', 'Henan', '146288'), +('2141', 'Suining', 'CHN', 'Sichuan', '146086'), +('2142', 'Yulin', 'CHN', 'Guangxi', '144467'), +('2143', 'Jinhua', 'CHN', 'Zhejiang', '144280'), +('2144', 'Liu´an', 'CHN', 'Anhui', '144248'), +('2145', 'Shuangcheng', 'CHN', 'Heilongjiang', '142659'), +('2146', 'Suizhou', 'CHN', 'Hubei', '142302'), +('2147', 'Ankang', 'CHN', 'Shaanxi', '142170'), +('2148', 'Weinan', 'CHN', 'Shaanxi', '140169'), +('2149', 'Longjing', 'CHN', 'Jilin', '139417'), +('2150', 'Da´an', 'CHN', 'Jilin', '138963'), +('2151', 'Lengshuijiang', 'CHN', 'Hunan', '137994'), +('2152', 'Laiyang', 'CHN', 'Shandong', '137080'), +('2153', 'Xianning', 'CHN', 'Hubei', '136811'), +('2154', 'Dali', 'CHN', 'Yunnan', '136554'), +('2155', 'Anda', 'CHN', 'Heilongjiang', '136446'), +('2156', 'Jincheng', 'CHN', 'Shanxi', '136396'), +('2157', 'Longyan', 'CHN', 'Fujian', '134481'), +('2158', 'Xichang', 'CHN', 'Sichuan', '134419'), +('2159', 'Wendeng', 'CHN', 'Shandong', '133910'), +('2160', 'Hailun', 'CHN', 'Heilongjiang', '133565'), +('2161', 'Binzhou', 'CHN', 'Shandong', '133555'), +('2162', 'Linhe', 'CHN', 'Inner Mongolia', '133183'), +('2163', 'Wuwei', 'CHN', 'Gansu', '133101'), +('2164', 'Duyun', 'CHN', 'Guizhou', '132971'), +('2165', 'Mishan', 'CHN', 'Heilongjiang', '132744'), +('2166', 'Shangrao', 'CHN', 'Jiangxi', '132455'), +('2167', 'Changji', 'CHN', 'Xinxiang', '132260'), +('2168', 'Meixian', 'CHN', 'Guangdong', '132156'), +('2169', 'Yushu', 'CHN', 'Jilin', '131861'), +('2170', 'Tiefa', 'CHN', 'Liaoning', '131807'), +('2171', 'Huai´an', 'CHN', 'Jiangsu', '131149'), +('2172', 'Leiyang', 'CHN', 'Hunan', '130115'), +('2173', 'Zalantun', 'CHN', 'Inner Mongolia', '130031'), +('2174', 'Weihai', 'CHN', 'Shandong', '128888'), +('2175', 'Loudi', 'CHN', 'Hunan', '128418'), +('2176', 'Qingzhou', 'CHN', 'Shandong', '128258'), +('2177', 'Qidong', 'CHN', 'Jiangsu', '126872'), +('2178', 'Huaihua', 'CHN', 'Hunan', '126785'), +('2179', 'Luohe', 'CHN', 'Henan', '126438'), +('2180', 'Chuzhou', 'CHN', 'Anhui', '125341'), +('2181', 'Kaiyuan', 'CHN', 'Liaoning', '124219'), +('2182', 'Linqing', 'CHN', 'Shandong', '123958'), +('2183', 'Chaohu', 'CHN', 'Anhui', '123676'), +('2184', 'Laohekou', 'CHN', 'Hubei', '123366'), +('2185', 'Dujiangyan', 'CHN', 'Sichuan', '123357'), +('2186', 'Zhumadian', 'CHN', 'Henan', '123232'), +('2187', 'Linchuan', 'CHN', 'Jiangxi', '121949'), +('2188', 'Jiaonan', 'CHN', 'Shandong', '121397'), +('2189', 'Sanmenxia', 'CHN', 'Henan', '120523'), +('2190', 'Heyuan', 'CHN', 'Guangdong', '120101'), +('2191', 'Manzhouli', 'CHN', 'Inner Mongolia', '120023'), +('2192', 'Lhasa', 'CHN', 'Tibet', '120000'), +('2193', 'Lianyuan', 'CHN', 'Hunan', '118858'), +('2194', 'Kuytun', 'CHN', 'Xinxiang', '118553'), +('2195', 'Puqi', 'CHN', 'Hubei', '117264'), +('2196', 'Hongjiang', 'CHN', 'Hunan', '116188'), +('2197', 'Qinzhou', 'CHN', 'Guangxi', '114586'), +('2198', 'Renqiu', 'CHN', 'Hebei', '114256'), +('2199', 'Yuyao', 'CHN', 'Zhejiang', '114065'), +('2200', 'Guigang', 'CHN', 'Guangxi', '114025'), +('2201', 'Kaili', 'CHN', 'Guizhou', '113958'), +('2202', 'Yan´an', 'CHN', 'Shaanxi', '113277'), +('2203', 'Beihai', 'CHN', 'Guangxi', '112673'), +('2204', 'Xuangzhou', 'CHN', 'Anhui', '112673'), +('2205', 'Quzhou', 'CHN', 'Zhejiang', '112373'), +('2206', 'Yong´an', 'CHN', 'Fujian', '111762'), +('2207', 'Zixing', 'CHN', 'Hunan', '110048'), +('2208', 'Liyang', 'CHN', 'Jiangsu', '109520'), +('2209', 'Yizheng', 'CHN', 'Jiangsu', '109268'), +('2210', 'Yumen', 'CHN', 'Gansu', '109234'), +('2211', 'Liling', 'CHN', 'Hunan', '108504'), +('2212', 'Yuncheng', 'CHN', 'Shanxi', '108359'), +('2213', 'Shanwei', 'CHN', 'Guangdong', '107847'), +('2214', 'Cixi', 'CHN', 'Zhejiang', '107329'), +('2215', 'Yuanjiang', 'CHN', 'Hunan', '107004'), +('2216', 'Bozhou', 'CHN', 'Anhui', '106346'), +('2217', 'Jinchang', 'CHN', 'Gansu', '105287'), +('2218', 'Fu´an', 'CHN', 'Fujian', '105265'), +('2219', 'Suqian', 'CHN', 'Jiangsu', '105021'), +('2220', 'Shishou', 'CHN', 'Hubei', '104571'), +('2221', 'Hengshui', 'CHN', 'Hebei', '104269'), +('2222', 'Danjiangkou', 'CHN', 'Hubei', '103211'), +('2223', 'Fujin', 'CHN', 'Heilongjiang', '103104'), +('2224', 'Sanya', 'CHN', 'Hainan', '102820'), +('2225', 'Guangshui', 'CHN', 'Hubei', '102770'), +('2226', 'Huangshan', 'CHN', 'Anhui', '102628'), +('2227', 'Xingcheng', 'CHN', 'Liaoning', '102384'), +('2228', 'Zhucheng', 'CHN', 'Shandong', '102134'), +('2229', 'Kunshan', 'CHN', 'Jiangsu', '102052'), +('2230', 'Haining', 'CHN', 'Zhejiang', '100478'), +('2231', 'Pingliang', 'CHN', 'Gansu', '99265'), +('2232', 'Fuqing', 'CHN', 'Fujian', '99193'), +('2233', 'Xinzhou', 'CHN', 'Shanxi', '98667'), +('2234', 'Jieyang', 'CHN', 'Guangdong', '98531'), +('2235', 'Zhangjiagang', 'CHN', 'Jiangsu', '97994'), +('2236', 'Tong Xian', 'CHN', 'Peking', '97168'), +('2237', 'Ya´an', 'CHN', 'Sichuan', '95900'), +('2238', 'Jinzhou', 'CHN', 'Liaoning', '95761'), +('2239', 'Emeishan', 'CHN', 'Sichuan', '94000'), +('2240', 'Enshi', 'CHN', 'Hubei', '93056'), +('2241', 'Bose', 'CHN', 'Guangxi', '93009'), +('2242', 'Yuzhou', 'CHN', 'Henan', '92889'), +('2243', 'Kaiyuan', 'CHN', 'Yunnan', '91999'), +('2244', 'Tumen', 'CHN', 'Jilin', '91471'), +('2245', 'Putian', 'CHN', 'Fujian', '91030'), +('2246', 'Linhai', 'CHN', 'Zhejiang', '90870'), +('2247', 'Xilin Hot', 'CHN', 'Inner Mongolia', '90646'), +('2248', 'Shaowu', 'CHN', 'Fujian', '90286'), +('2249', 'Junan', 'CHN', 'Shandong', '90222'), +('2250', 'Huaying', 'CHN', 'Sichuan', '89400'), +('2251', 'Pingyi', 'CHN', 'Shandong', '89373'), +('2252', 'Huangyan', 'CHN', 'Zhejiang', '89288'), +('2253', 'Bishkek', 'KGZ', 'Bishkek shaary', '589400'), +('2254', 'Osh', 'KGZ', 'Osh', '222700'), +('2255', 'Bikenibeu', 'KIR', 'South Tarawa', '5055'), +('2256', 'Bairiki', 'KIR', 'South Tarawa', '2226'), +('2257', 'Santafé de Bogotá', 'COL', 'Santafé de Bogotá', '6260862'), +('2258', 'Cali', 'COL', 'Valle', '2077386'), +('2259', 'Medellín', 'COL', 'Antioquia', '1861265'), +('2260', 'Barranquilla', 'COL', 'Atlántico', '1223260'), +('2261', 'Cartagena', 'COL', 'Bolívar', '805757'), +('2262', 'Cúcuta', 'COL', 'Norte de Santander', '606932'), +('2263', 'Bucaramanga', 'COL', 'Santander', '515555'), +('2264', 'Ibagué', 'COL', 'Tolima', '393664'), +('2265', 'Pereira', 'COL', 'Risaralda', '381725'), +('2266', 'Santa Marta', 'COL', 'Magdalena', '359147'), +('2267', 'Manizales', 'COL', 'Caldas', '337580'), +('2268', 'Bello', 'COL', 'Antioquia', '333470'), +('2269', 'Pasto', 'COL', 'Narińo', '332396'), +('2270', 'Neiva', 'COL', 'Huila', '300052'), +('2271', 'Soledad', 'COL', 'Atlántico', '295058'), +('2272', 'Armenia', 'COL', 'Quindío', '288977'), +('2273', 'Villavicencio', 'COL', 'Meta', '273140'), +('2274', 'Soacha', 'COL', 'Cundinamarca', '272058'), +('2275', 'Valledupar', 'COL', 'Cesar', '263247'), +('2276', 'Montería', 'COL', 'Córdoba', '248245'), +('2277', 'Itagüí', 'COL', 'Antioquia', '228985'), +('2278', 'Palmira', 'COL', 'Valle', '226509'), +('2279', 'Buenaventura', 'COL', 'Valle', '224336'), +('2280', 'Floridablanca', 'COL', 'Santander', '221913'), +('2281', 'Sincelejo', 'COL', 'Sucre', '220704'), +('2282', 'Popayán', 'COL', 'Cauca', '200719'), +('2283', 'Barrancabermeja', 'COL', 'Santander', '178020'), +('2284', 'Dos Quebradas', 'COL', 'Risaralda', '159363'), +('2285', 'Tuluá', 'COL', 'Valle', '152488'), +('2286', 'Envigado', 'COL', 'Antioquia', '135848'), +('2287', 'Cartago', 'COL', 'Valle', '125884'), +('2288', 'Girardot', 'COL', 'Cundinamarca', '110963'), +('2289', 'Buga', 'COL', 'Valle', '110699'), +('2290', 'Tunja', 'COL', 'Boyacá', '109740'), +('2291', 'Florencia', 'COL', 'Caquetá', '108574'), +('2292', 'Maicao', 'COL', 'La Guajira', '108053'), +('2293', 'Sogamoso', 'COL', 'Boyacá', '107728'), +('2294', 'Giron', 'COL', 'Santander', '90688'), +('2295', 'Moroni', 'COM', 'Njazidja', '36000'), +('2296', 'Brazzaville', 'COG', 'Brazzaville', '950000'), +('2297', 'Pointe-Noire', 'COG', 'Kouilou', '500000'), +('2298', 'Kinshasa', 'COD', 'Kinshasa', '5064000'), +('2299', 'Lubumbashi', 'COD', 'Shaba', '851381'), +('2300', 'Mbuji-Mayi', 'COD', 'East Kasai', '806475'), +('2301', 'Kolwezi', 'COD', 'Shaba', '417810'), +('2302', 'Kisangani', 'COD', 'Haute-Zaďre', '417517'), +('2303', 'Kananga', 'COD', 'West Kasai', '393030'), +('2304', 'Likasi', 'COD', 'Shaba', '299118'), +('2305', 'Bukavu', 'COD', 'South Kivu', '201569'), +('2306', 'Kikwit', 'COD', 'Bandundu', '182142'), +('2307', 'Tshikapa', 'COD', 'West Kasai', '180860'), +('2308', 'Matadi', 'COD', 'Bas-Zaďre', '172730'), +('2309', 'Mbandaka', 'COD', 'Equateur', '169841'), +('2310', 'Mwene-Ditu', 'COD', 'East Kasai', '137459'), +('2311', 'Boma', 'COD', 'Bas-Zaďre', '135284'), +('2312', 'Uvira', 'COD', 'South Kivu', '115590'), +('2313', 'Butembo', 'COD', 'North Kivu', '109406'), +('2314', 'Goma', 'COD', 'North Kivu', '109094'), +('2315', 'Kalemie', 'COD', 'Shaba', '101309'), +('2316', 'Bantam', 'CCK', 'Home Island', '503'), +('2317', 'West Island', 'CCK', 'West Island', '167'), +('2318', 'Pyongyang', 'PRK', 'Pyongyang-si', '2484000'), +('2319', 'Hamhung', 'PRK', 'Hamgyong N', '709730'), +('2320', 'Chongjin', 'PRK', 'Hamgyong P', '582480'), +('2321', 'Nampo', 'PRK', 'Nampo-si', '566200'), +('2322', 'Sinuiju', 'PRK', 'Pyongan P', '326011'), +('2323', 'Wonsan', 'PRK', 'Kangwon', '300148'), +('2324', 'Phyongsong', 'PRK', 'Pyongan N', '272934'), +('2325', 'Sariwon', 'PRK', 'Hwanghae P', '254146'), +('2326', 'Haeju', 'PRK', 'Hwanghae N', '229172'), +('2327', 'Kanggye', 'PRK', 'Chagang', '223410'), +('2328', 'Kimchaek', 'PRK', 'Hamgyong P', '179000'), +('2329', 'Hyesan', 'PRK', 'Yanggang', '178020'), +('2330', 'Kaesong', 'PRK', 'Kaesong-si', '171500'), +('2331', 'Seoul', 'KOR', 'Seoul', '9981619'), +('2332', 'Pusan', 'KOR', 'Pusan', '3804522'), +('2333', 'Inchon', 'KOR', 'Inchon', '2559424'), +('2334', 'Taegu', 'KOR', 'Taegu', '2548568'), +('2335', 'Taejon', 'KOR', 'Taejon', '1425835'), +('2336', 'Kwangju', 'KOR', 'Kwangju', '1368341'), +('2337', 'Ulsan', 'KOR', 'Kyongsangnam', '1084891'), +('2338', 'Songnam', 'KOR', 'Kyonggi', '869094'), +('2339', 'Puchon', 'KOR', 'Kyonggi', '779412'), +('2340', 'Suwon', 'KOR', 'Kyonggi', '755550'), +('2341', 'Anyang', 'KOR', 'Kyonggi', '591106'), +('2342', 'Chonju', 'KOR', 'Chollabuk', '563153'), +('2343', 'Chongju', 'KOR', 'Chungchongbuk', '531376'), +('2344', 'Koyang', 'KOR', 'Kyonggi', '518282'), +('2345', 'Ansan', 'KOR', 'Kyonggi', '510314'), +('2346', 'Pohang', 'KOR', 'Kyongsangbuk', '508899'), +('2347', 'Chang-won', 'KOR', 'Kyongsangnam', '481694'), +('2348', 'Masan', 'KOR', 'Kyongsangnam', '441242'), +('2349', 'Kwangmyong', 'KOR', 'Kyonggi', '350914'), +('2350', 'Chonan', 'KOR', 'Chungchongnam', '330259'), +('2351', 'Chinju', 'KOR', 'Kyongsangnam', '329886'), +('2352', 'Iksan', 'KOR', 'Chollabuk', '322685'), +('2353', 'Pyongtaek', 'KOR', 'Kyonggi', '312927'), +('2354', 'Kumi', 'KOR', 'Kyongsangbuk', '311431'), +('2355', 'Uijongbu', 'KOR', 'Kyonggi', '276111'), +('2356', 'Kyongju', 'KOR', 'Kyongsangbuk', '272968'), +('2357', 'Kunsan', 'KOR', 'Chollabuk', '266569'), +('2358', 'Cheju', 'KOR', 'Cheju', '258511'), +('2359', 'Kimhae', 'KOR', 'Kyongsangnam', '256370'), +('2360', 'Sunchon', 'KOR', 'Chollanam', '249263'), +('2361', 'Mokpo', 'KOR', 'Chollanam', '247452'), +('2362', 'Yong-in', 'KOR', 'Kyonggi', '242643'), +('2363', 'Wonju', 'KOR', 'Kang-won', '237460'), +('2364', 'Kunpo', 'KOR', 'Kyonggi', '235233'), +('2365', 'Chunchon', 'KOR', 'Kang-won', '234528'), +('2366', 'Namyangju', 'KOR', 'Kyonggi', '229060'), +('2367', 'Kangnung', 'KOR', 'Kang-won', '220403'), +('2368', 'Chungju', 'KOR', 'Chungchongbuk', '205206'), +('2369', 'Andong', 'KOR', 'Kyongsangbuk', '188443'), +('2370', 'Yosu', 'KOR', 'Chollanam', '183596'), +('2371', 'Kyongsan', 'KOR', 'Kyongsangbuk', '173746'), +('2372', 'Paju', 'KOR', 'Kyonggi', '163379'), +('2373', 'Yangsan', 'KOR', 'Kyongsangnam', '163351'), +('2374', 'Ichon', 'KOR', 'Kyonggi', '155332'), +('2375', 'Asan', 'KOR', 'Chungchongnam', '154663'), +('2376', 'Koje', 'KOR', 'Kyongsangnam', '147562'), +('2377', 'Kimchon', 'KOR', 'Kyongsangbuk', '147027'), +('2378', 'Nonsan', 'KOR', 'Chungchongnam', '146619'), +('2379', 'Kuri', 'KOR', 'Kyonggi', '142173'), +('2380', 'Chong-up', 'KOR', 'Chollabuk', '139111'), +('2381', 'Chechon', 'KOR', 'Chungchongbuk', '137070'), +('2382', 'Sosan', 'KOR', 'Chungchongnam', '134746'), +('2383', 'Shihung', 'KOR', 'Kyonggi', '133443'), +('2384', 'Tong-yong', 'KOR', 'Kyongsangnam', '131717'), +('2385', 'Kongju', 'KOR', 'Chungchongnam', '131229'), +('2386', 'Yongju', 'KOR', 'Kyongsangbuk', '131097'), +('2387', 'Chinhae', 'KOR', 'Kyongsangnam', '125997'), +('2388', 'Sangju', 'KOR', 'Kyongsangbuk', '124116'), +('2389', 'Poryong', 'KOR', 'Chungchongnam', '122604'), +('2390', 'Kwang-yang', 'KOR', 'Chollanam', '122052'), +('2391', 'Miryang', 'KOR', 'Kyongsangnam', '121501'), +('2392', 'Hanam', 'KOR', 'Kyonggi', '115812'), +('2393', 'Kimje', 'KOR', 'Chollabuk', '115427'), +('2394', 'Yongchon', 'KOR', 'Kyongsangbuk', '113511'), +('2395', 'Sachon', 'KOR', 'Kyongsangnam', '113494'), +('2396', 'Uiwang', 'KOR', 'Kyonggi', '108788'), +('2397', 'Naju', 'KOR', 'Chollanam', '107831'), +('2398', 'Namwon', 'KOR', 'Chollabuk', '103544'), +('2399', 'Tonghae', 'KOR', 'Kang-won', '95472'), +('2400', 'Mun-gyong', 'KOR', 'Kyongsangbuk', '92239'), +('2401', 'Athenai', 'GRC', 'Attika', '772072'), +('2402', 'Thessaloniki', 'GRC', 'Central Macedonia', '383967'), +('2403', 'Pireus', 'GRC', 'Attika', '182671'), +('2404', 'Patras', 'GRC', 'West Greece', '153344'), +('2405', 'Peristerion', 'GRC', 'Attika', '137288'), +('2406', 'Herakleion', 'GRC', 'Crete', '116178'), +('2407', 'Kallithea', 'GRC', 'Attika', '114233'), +('2408', 'Larisa', 'GRC', 'Thessalia', '113090'), +('2409', 'Zagreb', 'HRV', 'Grad Zagreb', '706770'), +('2410', 'Split', 'HRV', 'Split-Dalmatia', '189388'), +('2411', 'Rijeka', 'HRV', 'Primorje-Gorski Kota', '167964'), +('2412', 'Osijek', 'HRV', 'Osijek-Baranja', '104761'), +('2413', 'La Habana', 'CUB', 'La Habana', '2256000'), +('2414', 'Santiago de Cuba', 'CUB', 'Santiago de Cuba', '433180'), +('2415', 'Camagüey', 'CUB', 'Camagüey', '298726'), +('2416', 'Holguín', 'CUB', 'Holguín', '249492'), +('2417', 'Santa Clara', 'CUB', 'Villa Clara', '207350'), +('2418', 'Guantánamo', 'CUB', 'Guantánamo', '205078'), +('2419', 'Pinar del Río', 'CUB', 'Pinar del Río', '142100'), +('2420', 'Bayamo', 'CUB', 'Granma', '141000'), +('2421', 'Cienfuegos', 'CUB', 'Cienfuegos', '132770'), +('2422', 'Victoria de las Tunas', 'CUB', 'Las Tunas', '132350'), +('2423', 'Matanzas', 'CUB', 'Matanzas', '123273'), +('2424', 'Manzanillo', 'CUB', 'Granma', '109350'), +('2425', 'Sancti-Spíritus', 'CUB', 'Sancti-Spíritus', '100751'), +('2426', 'Ciego de Ávila', 'CUB', 'Ciego de Ávila', '98505'), +('2427', 'al-Salimiya', 'KWT', 'Hawalli', '130215'), +('2428', 'Jalib al-Shuyukh', 'KWT', 'Hawalli', '102178'), +('2429', 'Kuwait', 'KWT', 'al-Asima', '28859'), +('2430', 'Nicosia', 'CYP', 'Nicosia', '195000'), +('2431', 'Limassol', 'CYP', 'Limassol', '154400'), +('2432', 'Vientiane', 'LAO', 'Viangchan', '531800'), +('2433', 'Savannakhet', 'LAO', 'Savannakhet', '96652'), +('2434', 'Riga', 'LVA', 'Riika', '764328'), +('2435', 'Daugavpils', 'LVA', 'Daugavpils', '114829'), +('2436', 'Liepaja', 'LVA', 'Liepaja', '89439'), +('2437', 'Maseru', 'LSO', 'Maseru', '297000'), +('2438', 'Beirut', 'LBN', 'Beirut', '1100000'), +('2439', 'Tripoli', 'LBN', 'al-Shamal', '240000'), +('2440', 'Monrovia', 'LBR', 'Montserrado', '850000'), +('2441', 'Tripoli', 'LBY', 'Tripoli', '1682000'), +('2442', 'Bengasi', 'LBY', 'Bengasi', '804000'), +('2443', 'Misrata', 'LBY', 'Misrata', '121669'), +('2444', 'al-Zawiya', 'LBY', 'al-Zawiya', '89338'), +('2445', 'Schaan', 'LIE', 'Schaan', '5346'), +('2446', 'Vaduz', 'LIE', 'Vaduz', '5043'), +('2447', 'Vilnius', 'LTU', 'Vilna', '577969'), +('2448', 'Kaunas', 'LTU', 'Kaunas', '412639'), +('2449', 'Klaipeda', 'LTU', 'Klaipeda', '202451'), +('2450', 'Šiauliai', 'LTU', 'Šiauliai', '146563'), +('2451', 'Panevezys', 'LTU', 'Panevezys', '133695'), +('2452', 'Luxembourg [Luxemburg/Lëtzebuerg]', 'LUX', 'Luxembourg', '80700'), +('2453', 'El-Aaiún', 'ESH', 'El-Aaiún', '169000'), +('2454', 'Macao', 'MAC', 'Macau', '437500'), +('2455', 'Antananarivo', 'MDG', 'Antananarivo', '675669'), +('2456', 'Toamasina', 'MDG', 'Toamasina', '127441'), +('2457', 'Antsirabé', 'MDG', 'Antananarivo', '120239'), +('2458', 'Mahajanga', 'MDG', 'Mahajanga', '100807'), +('2459', 'Fianarantsoa', 'MDG', 'Fianarantsoa', '99005'), +('2460', 'Skopje', 'MKD', 'Skopje', '444299'), +('2461', 'Blantyre', 'MWI', 'Blantyre', '478155'), +('2462', 'Lilongwe', 'MWI', 'Lilongwe', '435964'), +('2463', 'Male', 'MDV', 'Maale', '71000'), +('2464', 'Kuala Lumpur', 'MYS', 'Wilayah Persekutuan', '1297526'), +('2465', 'Ipoh', 'MYS', 'Perak', '382853'), +('2466', 'Johor Baharu', 'MYS', 'Johor', '328436'), +('2467', 'Petaling Jaya', 'MYS', 'Selangor', '254350'), +('2468', 'Kelang', 'MYS', 'Selangor', '243355'), +('2469', 'Kuala Terengganu', 'MYS', 'Terengganu', '228119'), +('2470', 'Pinang', 'MYS', 'Pulau Pinang', '219603'), +('2471', 'Kota Bharu', 'MYS', 'Kelantan', '219582'), +('2472', 'Kuantan', 'MYS', 'Pahang', '199484'), +('2473', 'Taiping', 'MYS', 'Perak', '183261'), +('2474', 'Seremban', 'MYS', 'Negeri Sembilan', '182869'), +('2475', 'Kuching', 'MYS', 'Sarawak', '148059'), +('2476', 'Sibu', 'MYS', 'Sarawak', '126381'), +('2477', 'Sandakan', 'MYS', 'Sabah', '125841'), +('2478', 'Alor Setar', 'MYS', 'Kedah', '124412'), +('2479', 'Selayang Baru', 'MYS', 'Selangor', '124228'), +('2480', 'Sungai Petani', 'MYS', 'Kedah', '114763'), +('2481', 'Shah Alam', 'MYS', 'Selangor', '102019'), +('2482', 'Bamako', 'MLI', 'Bamako', '809552'), +('2483', 'Birkirkara', 'MLT', 'Outer Harbour', '21445'), +('2484', 'Valletta', 'MLT', 'Inner Harbour', '7073'), +('2485', 'Casablanca', 'MAR', 'Casablanca', '2940623'), +('2486', 'Rabat', 'MAR', 'Rabat-Salé-Zammour-Z', '623457'), +('2487', 'Marrakech', 'MAR', 'Marrakech-Tensift-Al', '621914'), +('2488', 'Fčs', 'MAR', 'Fčs-Boulemane', '541162'), +('2489', 'Tanger', 'MAR', 'Tanger-Tétouan', '521735'), +('2490', 'Salé', 'MAR', 'Rabat-Salé-Zammour-Z', '504420'), +('2491', 'Meknčs', 'MAR', 'Meknčs-Tafilalet', '460000'), +('2492', 'Oujda', 'MAR', 'Oriental', '365382'), +('2493', 'Kénitra', 'MAR', 'Gharb-Chrarda-Béni H', '292600'), +('2494', 'Tétouan', 'MAR', 'Tanger-Tétouan', '277516'), +('2495', 'Safi', 'MAR', 'Doukkala-Abda', '262300'), +('2496', 'Agadir', 'MAR', 'Souss Massa-Draâ', '155244'), +('2497', 'Mohammedia', 'MAR', 'Casablanca', '154706'), +('2498', 'Khouribga', 'MAR', 'Chaouia-Ouardigha', '152090'), +('2499', 'Beni-Mellal', 'MAR', 'Tadla-Azilal', '140212'), +('2500', 'Témara', 'MAR', 'Rabat-Salé-Zammour-Z', '126303'), +('2501', 'El Jadida', 'MAR', 'Doukkala-Abda', '119083'), +('2502', 'Nador', 'MAR', 'Oriental', '112450'), +('2503', 'Ksar el Kebir', 'MAR', 'Tanger-Tétouan', '107065'), +('2504', 'Settat', 'MAR', 'Chaouia-Ouardigha', '96200'), +('2505', 'Taza', 'MAR', 'Taza-Al Hoceima-Taou', '92700'), +('2506', 'El Araich', 'MAR', 'Tanger-Tétouan', '90400'), +('2507', 'Dalap-Uliga-Darrit', 'MHL', 'Majuro', '28000'), +('2508', 'Fort-de-France', 'MTQ', 'Fort-de-France', '94050'), +('2509', 'Nouakchott', 'MRT', 'Nouakchott', '667300'), +('2510', 'Nouâdhibou', 'MRT', 'Dakhlet Nouâdhibou', '97600'), +('2511', 'Port-Louis', 'MUS', 'Port-Louis', '138200'), +('2512', 'Beau Bassin-Rose Hill', 'MUS', 'Plaines Wilhelms', '100616'), +('2513', 'Vacoas-Phoenix', 'MUS', 'Plaines Wilhelms', '98464'), +('2514', 'Mamoutzou', 'MYT', 'Mamoutzou', '12000'), +('2515', 'Ciudad de México', 'MEX', 'Distrito Federal', '8591309'), +('2516', 'Guadalajara', 'MEX', 'Jalisco', '1647720'), +('2517', 'Ecatepec de Morelos', 'MEX', 'México', '1620303'), +('2518', 'Puebla', 'MEX', 'Puebla', '1346176'), +('2519', 'Nezahualcóyotl', 'MEX', 'México', '1224924'), +('2520', 'Juárez', 'MEX', 'Chihuahua', '1217818'), +('2521', 'Tijuana', 'MEX', 'Baja California', '1212232'), +('2522', 'León', 'MEX', 'Guanajuato', '1133576'), +('2523', 'Monterrey', 'MEX', 'Nuevo León', '1108499'), +('2524', 'Zapopan', 'MEX', 'Jalisco', '1002239'), +('2525', 'Naucalpan de Juárez', 'MEX', 'México', '857511'), +('2526', 'Mexicali', 'MEX', 'Baja California', '764902'), +('2527', 'Culiacán', 'MEX', 'Sinaloa', '744859'), +('2528', 'Acapulco de Juárez', 'MEX', 'Guerrero', '721011'), +('2529', 'Tlalnepantla de Baz', 'MEX', 'México', '720755'), +('2530', 'Mérida', 'MEX', 'Yucatán', '703324'), +('2531', 'Chihuahua', 'MEX', 'Chihuahua', '670208'), +('2532', 'San Luis Potosí', 'MEX', 'San Luis Potosí', '669353'), +('2533', 'Guadalupe', 'MEX', 'Nuevo León', '668780'), +('2534', 'Toluca', 'MEX', 'México', '665617'), +('2535', 'Aguascalientes', 'MEX', 'Aguascalientes', '643360'), +('2536', 'Querétaro', 'MEX', 'Querétaro de Arteaga', '639839'), +('2537', 'Morelia', 'MEX', 'Michoacán de Ocampo', '619958'), +('2538', 'Hermosillo', 'MEX', 'Sonora', '608697'), +('2539', 'Saltillo', 'MEX', 'Coahuila de Zaragoza', '577352'), +('2540', 'Torreón', 'MEX', 'Coahuila de Zaragoza', '529093'), +('2541', 'Centro (Villahermosa)', 'MEX', 'Tabasco', '519873'), +('2542', 'San Nicolás de los Garza', 'MEX', 'Nuevo León', '495540'), +('2543', 'Durango', 'MEX', 'Durango', '490524'), +('2544', 'Chimalhuacán', 'MEX', 'México', '490245'), +('2545', 'Tlaquepaque', 'MEX', 'Jalisco', '475472'), +('2546', 'Atizapán de Zaragoza', 'MEX', 'México', '467262'), +('2547', 'Veracruz', 'MEX', 'Veracruz', '457119'), +('2548', 'Cuautitlán Izcalli', 'MEX', 'México', '452976'), +('2549', 'Irapuato', 'MEX', 'Guanajuato', '440039'), +('2550', 'Tuxtla Gutiérrez', 'MEX', 'Chiapas', '433544'), +('2551', 'Tultitlán', 'MEX', 'México', '432411'), +('2552', 'Reynosa', 'MEX', 'Tamaulipas', '419776'), +('2553', 'Benito Juárez', 'MEX', 'Quintana Roo', '419276'), +('2554', 'Matamoros', 'MEX', 'Tamaulipas', '416428'), +('2555', 'Xalapa', 'MEX', 'Veracruz', '390058'), +('2556', 'Celaya', 'MEX', 'Guanajuato', '382140'), +('2557', 'Mazatlán', 'MEX', 'Sinaloa', '380265'), +('2558', 'Ensenada', 'MEX', 'Baja California', '369573'), +('2559', 'Ahome', 'MEX', 'Sinaloa', '358663'), +('2560', 'Cajeme', 'MEX', 'Sonora', '355679'), +('2561', 'Cuernavaca', 'MEX', 'Morelos', '337966'), +('2562', 'Tonalá', 'MEX', 'Jalisco', '336109'), +('2563', 'Valle de Chalco Solidaridad', 'MEX', 'México', '323113'), +('2564', 'Nuevo Laredo', 'MEX', 'Tamaulipas', '310277'), +('2565', 'Tepic', 'MEX', 'Nayarit', '305025'), +('2566', 'Tampico', 'MEX', 'Tamaulipas', '294789'), +('2567', 'Ixtapaluca', 'MEX', 'México', '293160'), +('2568', 'Apodaca', 'MEX', 'Nuevo León', '282941'), +('2569', 'Guasave', 'MEX', 'Sinaloa', '277201'), +('2570', 'Gómez Palacio', 'MEX', 'Durango', '272806'), +('2571', 'Tapachula', 'MEX', 'Chiapas', '271141'), +('2572', 'Nicolás Romero', 'MEX', 'México', '269393'), +('2573', 'Coatzacoalcos', 'MEX', 'Veracruz', '267037'), +('2574', 'Uruapan', 'MEX', 'Michoacán de Ocampo', '265211'), +('2575', 'Victoria', 'MEX', 'Tamaulipas', '262686'), +('2576', 'Oaxaca de Juárez', 'MEX', 'Oaxaca', '256848'), +('2577', 'Coacalco de Berriozábal', 'MEX', 'México', '252270'), +('2578', 'Pachuca de Soto', 'MEX', 'Hidalgo', '244688'), +('2579', 'General Escobedo', 'MEX', 'Nuevo León', '232961'), +('2580', 'Salamanca', 'MEX', 'Guanajuato', '226864'), +('2581', 'Santa Catarina', 'MEX', 'Nuevo León', '226573'), +('2582', 'Tehuacán', 'MEX', 'Puebla', '225943'), +('2583', 'Chalco', 'MEX', 'México', '222201'), +('2584', 'Cárdenas', 'MEX', 'Tabasco', '216903'), +('2585', 'Campeche', 'MEX', 'Campeche', '216735'), +('2586', 'La Paz', 'MEX', 'México', '213045'), +('2587', 'Othón P. Blanco (Chetumal)', 'MEX', 'Quintana Roo', '208014'), +('2588', 'Texcoco', 'MEX', 'México', '203681'), +('2589', 'La Paz', 'MEX', 'Baja California Sur', '196708'), +('2590', 'Metepec', 'MEX', 'México', '194265'), +('2591', 'Monclova', 'MEX', 'Coahuila de Zaragoza', '193657'), +('2592', 'Huixquilucan', 'MEX', 'México', '193156'), +('2593', 'Chilpancingo de los Bravo', 'MEX', 'Guerrero', '192509'), +('2594', 'Puerto Vallarta', 'MEX', 'Jalisco', '183741'), +('2595', 'Fresnillo', 'MEX', 'Zacatecas', '182744'), +('2596', 'Ciudad Madero', 'MEX', 'Tamaulipas', '182012'), +('2597', 'Soledad de Graciano Sánchez', 'MEX', 'San Luis Potosí', '179956'), +('2598', 'San Juan del Río', 'MEX', 'Querétaro', '179300'), +('2599', 'San Felipe del Progreso', 'MEX', 'México', '177330'), +('2600', 'Córdoba', 'MEX', 'Veracruz', '176952'), +('2601', 'Tecámac', 'MEX', 'México', '172410'), +('2602', 'Ocosingo', 'MEX', 'Chiapas', '171495'), +('2603', 'Carmen', 'MEX', 'Campeche', '171367'), +('2604', 'Lázaro Cárdenas', 'MEX', 'Michoacán de Ocampo', '170878'), +('2605', 'Jiutepec', 'MEX', 'Morelos', '170428'), +('2606', 'Papantla', 'MEX', 'Veracruz', '170123'), +('2607', 'Comalcalco', 'MEX', 'Tabasco', '164640'), +('2608', 'Zamora', 'MEX', 'Michoacán de Ocampo', '161191'), +('2609', 'Nogales', 'MEX', 'Sonora', '159103'), +('2610', 'Huimanguillo', 'MEX', 'Tabasco', '158335'), +('2611', 'Cuautla', 'MEX', 'Morelos', '153132'), +('2612', 'Minatitlán', 'MEX', 'Veracruz', '152983'), +('2613', 'Poza Rica de Hidalgo', 'MEX', 'Veracruz', '152678'), +('2614', 'Ciudad Valles', 'MEX', 'San Luis Potosí', '146411'), +('2615', 'Navolato', 'MEX', 'Sinaloa', '145396'), +('2616', 'San Luis Río Colorado', 'MEX', 'Sonora', '145276'), +('2617', 'Pénjamo', 'MEX', 'Guanajuato', '143927'), +('2618', 'San Andrés Tuxtla', 'MEX', 'Veracruz', '142251'), +('2619', 'Guanajuato', 'MEX', 'Guanajuato', '141215'), +('2620', 'Navojoa', 'MEX', 'Sonora', '140495'), +('2621', 'Zitácuaro', 'MEX', 'Michoacán de Ocampo', '137970'), +('2622', 'Boca del Río', 'MEX', 'Veracruz-Llave', '135721'), +('2623', 'Allende', 'MEX', 'Guanajuato', '134645'), +('2624', 'Silao', 'MEX', 'Guanajuato', '134037'), +('2625', 'Macuspana', 'MEX', 'Tabasco', '133795'), +('2626', 'San Juan Bautista Tuxtepec', 'MEX', 'Oaxaca', '133675'), +('2627', 'San Cristóbal de las Casas', 'MEX', 'Chiapas', '132317'), +('2628', 'Valle de Santiago', 'MEX', 'Guanajuato', '130557'), +('2629', 'Guaymas', 'MEX', 'Sonora', '130108'), +('2630', 'Colima', 'MEX', 'Colima', '129454'), +('2631', 'Dolores Hidalgo', 'MEX', 'Guanajuato', '128675'), +('2632', 'Lagos de Moreno', 'MEX', 'Jalisco', '127949'), +('2633', 'Piedras Negras', 'MEX', 'Coahuila de Zaragoza', '127898'), +('2634', 'Altamira', 'MEX', 'Tamaulipas', '127490'), +('2635', 'Túxpam', 'MEX', 'Veracruz', '126475'), +('2636', 'San Pedro Garza García', 'MEX', 'Nuevo León', '126147'), +('2637', 'Cuauhtémoc', 'MEX', 'Chihuahua', '124279'), +('2638', 'Manzanillo', 'MEX', 'Colima', '124014'), +('2639', 'Iguala de la Independencia', 'MEX', 'Guerrero', '123883'), +('2640', 'Zacatecas', 'MEX', 'Zacatecas', '123700'), +('2641', 'Tlajomulco de Zúńiga', 'MEX', 'Jalisco', '123220'), +('2642', 'Tulancingo de Bravo', 'MEX', 'Hidalgo', '121946'), +('2643', 'Zinacantepec', 'MEX', 'México', '121715'), +('2644', 'San Martín Texmelucan', 'MEX', 'Puebla', '121093'), +('2645', 'Tepatitlán de Morelos', 'MEX', 'Jalisco', '118948'), +('2646', 'Martínez de la Torre', 'MEX', 'Veracruz', '118815'), +('2647', 'Orizaba', 'MEX', 'Veracruz', '118488'), +('2648', 'Apatzingán', 'MEX', 'Michoacán de Ocampo', '117849'), +('2649', 'Atlixco', 'MEX', 'Puebla', '117019'), +('2650', 'Delicias', 'MEX', 'Chihuahua', '116132'), +('2651', 'Ixtlahuaca', 'MEX', 'México', '115548'), +('2652', 'El Mante', 'MEX', 'Tamaulipas', '112453'), +('2653', 'Lerdo', 'MEX', 'Durango', '112272'), +('2654', 'Almoloya de Juárez', 'MEX', 'México', '110550'), +('2655', 'Acámbaro', 'MEX', 'Guanajuato', '110487'), +('2656', 'Acuńa', 'MEX', 'Coahuila de Zaragoza', '110388'), +('2657', 'Guadalupe', 'MEX', 'Zacatecas', '108881'), +('2658', 'Huejutla de Reyes', 'MEX', 'Hidalgo', '108017'), +('2659', 'Hidalgo', 'MEX', 'Michoacán de Ocampo', '106198'), +('2660', 'Los Cabos', 'MEX', 'Baja California Sur', '105199'), +('2661', 'Comitán de Domínguez', 'MEX', 'Chiapas', '104986'), +('2662', 'Cunduacán', 'MEX', 'Tabasco', '104164'), +('2663', 'Río Bravo', 'MEX', 'Tamaulipas', '103901'), +('2664', 'Temapache', 'MEX', 'Veracruz', '102824'), +('2665', 'Chilapa de Alvarez', 'MEX', 'Guerrero', '102716'), +('2666', 'Hidalgo del Parral', 'MEX', 'Chihuahua', '100881'), +('2667', 'San Francisco del Rincón', 'MEX', 'Guanajuato', '100149'), +('2668', 'Taxco de Alarcón', 'MEX', 'Guerrero', '99907'), +('2669', 'Zumpango', 'MEX', 'México', '99781'), +('2670', 'San Pedro Cholula', 'MEX', 'Puebla', '99734'), +('2671', 'Lerma', 'MEX', 'México', '99714'), +('2672', 'Tecomán', 'MEX', 'Colima', '99296'), +('2673', 'Las Margaritas', 'MEX', 'Chiapas', '97389'), +('2674', 'Cosoleacaque', 'MEX', 'Veracruz', '97199'), +('2675', 'San Luis de la Paz', 'MEX', 'Guanajuato', '96763'), +('2676', 'José Azueta', 'MEX', 'Guerrero', '95448'), +('2677', 'Santiago Ixcuintla', 'MEX', 'Nayarit', '95311'), +('2678', 'San Felipe', 'MEX', 'Guanajuato', '95305'), +('2679', 'Tejupilco', 'MEX', 'México', '94934'), +('2680', 'Tantoyuca', 'MEX', 'Veracruz', '94709'), +('2681', 'Salvatierra', 'MEX', 'Guanajuato', '94322'), +('2682', 'Tultepec', 'MEX', 'México', '93364'), +('2683', 'Temixco', 'MEX', 'Morelos', '92686'), +('2684', 'Matamoros', 'MEX', 'Coahuila de Zaragoza', '91858'), +('2685', 'Pánuco', 'MEX', 'Veracruz', '90551'), +('2686', 'El Fuerte', 'MEX', 'Sinaloa', '89556'), +('2687', 'Tierra Blanca', 'MEX', 'Veracruz', '89143'), +('2688', 'Weno', 'FSM', 'Chuuk', '22000'), +('2689', 'Palikir', 'FSM', 'Pohnpei', '8600'), +('2690', 'Chisinau', 'MDA', 'Chisinau', '719900'), +('2691', 'Tiraspol', 'MDA', 'Dnjestria', '194300'), +('2692', 'Balti', 'MDA', 'Balti', '153400'), +('2693', 'Bender (Tîghina)', 'MDA', 'Bender (Tîghina)', '125700'), +('2694', 'Monte-Carlo', 'MCO', '–', '13154'), +('2695', 'Monaco-Ville', 'MCO', '–', '1234'), +('2696', 'Ulan Bator', 'MNG', 'Ulaanbaatar', '773700'), +('2697', 'Plymouth', 'MSR', 'Plymouth', '2000'), +('2698', 'Maputo', 'MOZ', 'Maputo', '1018938'), +('2699', 'Matola', 'MOZ', 'Maputo', '424662'), +('2700', 'Beira', 'MOZ', 'Sofala', '397368'), +('2701', 'Nampula', 'MOZ', 'Nampula', '303346'), +('2702', 'Chimoio', 'MOZ', 'Manica', '171056'), +('2703', 'Naçala-Porto', 'MOZ', 'Nampula', '158248'), +('2704', 'Quelimane', 'MOZ', 'Zambézia', '150116'), +('2705', 'Mocuba', 'MOZ', 'Zambézia', '124700'), +('2706', 'Tete', 'MOZ', 'Tete', '101984'), +('2707', 'Xai-Xai', 'MOZ', 'Gaza', '99442'), +('2708', 'Gurue', 'MOZ', 'Zambézia', '99300'), +('2709', 'Maxixe', 'MOZ', 'Inhambane', '93985'), +('2710', 'Rangoon (Yangon)', 'MMR', 'Rangoon [Yangon]', '3361700'), +('2711', 'Mandalay', 'MMR', 'Mandalay', '885300'), +('2712', 'Moulmein (Mawlamyine)', 'MMR', 'Mon', '307900'), +('2713', 'Pegu (Bago)', 'MMR', 'Pegu [Bago]', '190900'), +('2714', 'Bassein (Pathein)', 'MMR', 'Irrawaddy [Ayeyarwad', '183900'), +('2715', 'Monywa', 'MMR', 'Sagaing', '138600'), +('2716', 'Sittwe (Akyab)', 'MMR', 'Rakhine', '137600'), +('2717', 'Taunggyi (Taunggye)', 'MMR', 'Shan', '131500'), +('2718', 'Meikhtila', 'MMR', 'Mandalay', '129700'), +('2719', 'Mergui (Myeik)', 'MMR', 'Tenasserim [Tanintha', '122700'), +('2720', 'Lashio (Lasho)', 'MMR', 'Shan', '107600'), +('2721', 'Prome (Pyay)', 'MMR', 'Pegu [Bago]', '105700'), +('2722', 'Henzada (Hinthada)', 'MMR', 'Irrawaddy [Ayeyarwad', '104700'), +('2723', 'Myingyan', 'MMR', 'Mandalay', '103600'), +('2724', 'Tavoy (Dawei)', 'MMR', 'Tenasserim [Tanintha', '96800'), +('2725', 'Pagakku (Pakokku)', 'MMR', 'Magwe [Magway]', '94800'), +('2726', 'Windhoek', 'NAM', 'Khomas', '169000'), +('2727', 'Yangor', 'NRU', '–', '4050'), +('2728', 'Yaren', 'NRU', '–', '559'), +('2729', 'Kathmandu', 'NPL', 'Central', '591835'), +('2730', 'Biratnagar', 'NPL', 'Eastern', '157764'), +('2731', 'Pokhara', 'NPL', 'Western', '146318'), +('2732', 'Lalitapur', 'NPL', 'Central', '145847'), +('2733', 'Birgunj', 'NPL', 'Central', '90639'), +('2734', 'Managua', 'NIC', 'Managua', '959000'), +('2735', 'León', 'NIC', 'León', '123865'), +('2736', 'Chinandega', 'NIC', 'Chinandega', '97387'), +('2737', 'Masaya', 'NIC', 'Masaya', '88971'), +('2738', 'Niamey', 'NER', 'Niamey', '420000'), +('2739', 'Zinder', 'NER', 'Zinder', '120892'), +('2740', 'Maradi', 'NER', 'Maradi', '112965'), +('2741', 'Lagos', 'NGA', 'Lagos', '1518000'), +('2742', 'Ibadan', 'NGA', 'Oyo & Osun', '1432000'), +('2743', 'Ogbomosho', 'NGA', 'Oyo & Osun', '730000'), +('2744', 'Kano', 'NGA', 'Kano & Jigawa', '674100'), +('2745', 'Oshogbo', 'NGA', 'Oyo & Osun', '476800'), +('2746', 'Ilorin', 'NGA', 'Kwara & Kogi', '475800'), +('2747', 'Abeokuta', 'NGA', 'Ogun', '427400'), +('2748', 'Port Harcourt', 'NGA', 'Rivers & Bayelsa', '410000'), +('2749', 'Zaria', 'NGA', 'Kaduna', '379200'), +('2750', 'Ilesha', 'NGA', 'Oyo & Osun', '378400'), +('2751', 'Onitsha', 'NGA', 'Anambra & Enugu & Eb', '371900'), +('2752', 'Iwo', 'NGA', 'Oyo & Osun', '362000'), +('2753', 'Ado-Ekiti', 'NGA', 'Ondo & Ekiti', '359400'), +('2754', 'Abuja', 'NGA', 'Federal Capital Dist', '350100'), +('2755', 'Kaduna', 'NGA', 'Kaduna', '342200'), +('2756', 'Mushin', 'NGA', 'Lagos', '333200'), +('2757', 'Maiduguri', 'NGA', 'Borno & Yobe', '320000'), +('2758', 'Enugu', 'NGA', 'Anambra & Enugu & Eb', '316100'), +('2759', 'Ede', 'NGA', 'Oyo & Osun', '307100'), +('2760', 'Aba', 'NGA', 'Imo & Abia', '298900'), +('2761', 'Ife', 'NGA', 'Oyo & Osun', '296800'), +('2762', 'Ila', 'NGA', 'Oyo & Osun', '264000'), +('2763', 'Oyo', 'NGA', 'Oyo & Osun', '256400'), +('2764', 'Ikerre', 'NGA', 'Ondo & Ekiti', '244600'), +('2765', 'Benin City', 'NGA', 'Edo & Delta', '229400'), +('2766', 'Iseyin', 'NGA', 'Oyo & Osun', '217300'), +('2767', 'Katsina', 'NGA', 'Katsina', '206500'), +('2768', 'Jos', 'NGA', 'Plateau & Nassarawa', '206300'), +('2769', 'Sokoto', 'NGA', 'Sokoto & Kebbi & Zam', '204900'), +('2770', 'Ilobu', 'NGA', 'Oyo & Osun', '199000'), +('2771', 'Offa', 'NGA', 'Kwara & Kogi', '197200'), +('2772', 'Ikorodu', 'NGA', 'Lagos', '184900'), +('2773', 'Ilawe-Ekiti', 'NGA', 'Ondo & Ekiti', '184500'), +('2774', 'Owo', 'NGA', 'Ondo & Ekiti', '183500'), +('2775', 'Ikirun', 'NGA', 'Oyo & Osun', '181400'), +('2776', 'Shaki', 'NGA', 'Oyo & Osun', '174500'), +('2777', 'Calabar', 'NGA', 'Cross River', '174400'), +('2778', 'Ondo', 'NGA', 'Ondo & Ekiti', '173600'), +('2779', 'Akure', 'NGA', 'Ondo & Ekiti', '162300'), +('2780', 'Gusau', 'NGA', 'Sokoto & Kebbi & Zam', '158000'), +('2781', 'Ijebu-Ode', 'NGA', 'Ogun', '156400'), +('2782', 'Effon-Alaiye', 'NGA', 'Oyo & Osun', '153100'), +('2783', 'Kumo', 'NGA', 'Bauchi & Gombe', '148000'), +('2784', 'Shomolu', 'NGA', 'Lagos', '147700'), +('2785', 'Oka-Akoko', 'NGA', 'Ondo & Ekiti', '142900'), +('2786', 'Ikare', 'NGA', 'Ondo & Ekiti', '140800'), +('2787', 'Sapele', 'NGA', 'Edo & Delta', '139200'), +('2788', 'Deba Habe', 'NGA', 'Bauchi & Gombe', '138600'), +('2789', 'Minna', 'NGA', 'Niger', '136900'), +('2790', 'Warri', 'NGA', 'Edo & Delta', '126100'), +('2791', 'Bida', 'NGA', 'Niger', '125500'), +('2792', 'Ikire', 'NGA', 'Oyo & Osun', '123300'), +('2793', 'Makurdi', 'NGA', 'Benue', '123100'), +('2794', 'Lafia', 'NGA', 'Plateau & Nassarawa', '122500'), +('2795', 'Inisa', 'NGA', 'Oyo & Osun', '119800'), +('2796', 'Shagamu', 'NGA', 'Ogun', '117200'), +('2797', 'Awka', 'NGA', 'Anambra & Enugu & Eb', '111200'), +('2798', 'Gombe', 'NGA', 'Bauchi & Gombe', '107800'), +('2799', 'Igboho', 'NGA', 'Oyo & Osun', '106800'), +('2800', 'Ejigbo', 'NGA', 'Oyo & Osun', '105900'), +('2801', 'Agege', 'NGA', 'Lagos', '105000'), +('2802', 'Ise-Ekiti', 'NGA', 'Ondo & Ekiti', '103400'), +('2803', 'Ugep', 'NGA', 'Cross River', '102600'), +('2804', 'Epe', 'NGA', 'Lagos', '101000'), +('2805', 'Alofi', 'NIU', '–', '682'), +('2806', 'Kingston', 'NFK', '–', '800'), +('2807', 'Oslo', 'NOR', 'Oslo', '508726'), +('2808', 'Bergen', 'NOR', 'Hordaland', '230948'), +('2809', 'Trondheim', 'NOR', 'Sřr-Trřndelag', '150166'), +('2810', 'Stavanger', 'NOR', 'Rogaland', '108848'), +('2811', 'Bćrum', 'NOR', 'Akershus', '101340'), +('2812', 'Abidjan', 'CIV', 'Abidjan', '2500000'), +('2813', 'Bouaké', 'CIV', 'Bouaké', '329850'), +('2814', 'Yamoussoukro', 'CIV', 'Yamoussoukro', '130000'), +('2815', 'Daloa', 'CIV', 'Daloa', '121842'), +('2816', 'Korhogo', 'CIV', 'Korhogo', '109445'), +('2817', 'al-Sib', 'OMN', 'Masqat', '155000'), +('2818', 'Salala', 'OMN', 'Zufar', '131813'), +('2819', 'Bawshar', 'OMN', 'Masqat', '107500'), +('2820', 'Suhar', 'OMN', 'al-Batina', '90814'), +('2821', 'Masqat', 'OMN', 'Masqat', '51969'), +('2822', 'Karachi', 'PAK', 'Sindh', '9269265'), +('2823', 'Lahore', 'PAK', 'Punjab', '5063499'), +('2824', 'Faisalabad', 'PAK', 'Punjab', '1977246'), +('2825', 'Rawalpindi', 'PAK', 'Punjab', '1406214'), +('2826', 'Multan', 'PAK', 'Punjab', '1182441'), +('2827', 'Hyderabad', 'PAK', 'Sindh', '1151274'), +('2828', 'Gujranwala', 'PAK', 'Punjab', '1124749'), +('2829', 'Peshawar', 'PAK', 'Nothwest Border Prov', '988005'), +('2830', 'Quetta', 'PAK', 'Baluchistan', '560307'), +('2831', 'Islamabad', 'PAK', 'Islamabad', '524500'), +('2832', 'Sargodha', 'PAK', 'Punjab', '455360'), +('2833', 'Sialkot', 'PAK', 'Punjab', '417597'), +('2834', 'Bahawalpur', 'PAK', 'Punjab', '403408'), +('2835', 'Sukkur', 'PAK', 'Sindh', '329176'), +('2836', 'Jhang', 'PAK', 'Punjab', '292214'), +('2837', 'Sheikhupura', 'PAK', 'Punjab', '271875'), +('2838', 'Larkana', 'PAK', 'Sindh', '270366'), +('2839', 'Gujrat', 'PAK', 'Punjab', '250121'), +('2840', 'Mardan', 'PAK', 'Nothwest Border Prov', '244511'), +('2841', 'Kasur', 'PAK', 'Punjab', '241649'), +('2842', 'Rahim Yar Khan', 'PAK', 'Punjab', '228479'), +('2843', 'Sahiwal', 'PAK', 'Punjab', '207388'), +('2844', 'Okara', 'PAK', 'Punjab', '200901'), +('2845', 'Wah', 'PAK', 'Punjab', '198400'), +('2846', 'Dera Ghazi Khan', 'PAK', 'Punjab', '188100'), +('2847', 'Mirpur Khas', 'PAK', 'Sind', '184500'), +('2848', 'Nawabshah', 'PAK', 'Sind', '183100'), +('2849', 'Mingora', 'PAK', 'Nothwest Border Prov', '174500'), +('2850', 'Chiniot', 'PAK', 'Punjab', '169300'), +('2851', 'Kamoke', 'PAK', 'Punjab', '151000'), +('2852', 'Mandi Burewala', 'PAK', 'Punjab', '149900'), +('2853', 'Jhelum', 'PAK', 'Punjab', '145800'), +('2854', 'Sadiqabad', 'PAK', 'Punjab', '141500'), +('2855', 'Jacobabad', 'PAK', 'Sind', '137700'), +('2856', 'Shikarpur', 'PAK', 'Sind', '133300'), +('2857', 'Khanewal', 'PAK', 'Punjab', '133000'), +('2858', 'Hafizabad', 'PAK', 'Punjab', '130200'), +('2859', 'Kohat', 'PAK', 'Nothwest Border Prov', '125300'), +('2860', 'Muzaffargarh', 'PAK', 'Punjab', '121600'), +('2861', 'Khanpur', 'PAK', 'Punjab', '117800'), +('2862', 'Gojra', 'PAK', 'Punjab', '115000'), +('2863', 'Bahawalnagar', 'PAK', 'Punjab', '109600'), +('2864', 'Muridke', 'PAK', 'Punjab', '108600'), +('2865', 'Pak Pattan', 'PAK', 'Punjab', '107800'), +('2866', 'Abottabad', 'PAK', 'Nothwest Border Prov', '106000'), +('2867', 'Tando Adam', 'PAK', 'Sind', '103400'), +('2868', 'Jaranwala', 'PAK', 'Punjab', '103300'), +('2869', 'Khairpur', 'PAK', 'Sind', '102200'), +('2870', 'Chishtian Mandi', 'PAK', 'Punjab', '101700'), +('2871', 'Daska', 'PAK', 'Punjab', '101500'), +('2872', 'Dadu', 'PAK', 'Sind', '98600'), +('2873', 'Mandi Bahauddin', 'PAK', 'Punjab', '97300'), +('2874', 'Ahmadpur East', 'PAK', 'Punjab', '96000'), +('2875', 'Kamalia', 'PAK', 'Punjab', '95300'), +('2876', 'Khuzdar', 'PAK', 'Baluchistan', '93100'), +('2877', 'Vihari', 'PAK', 'Punjab', '92300'), +('2878', 'Dera Ismail Khan', 'PAK', 'Nothwest Border Prov', '90400'), +('2879', 'Wazirabad', 'PAK', 'Punjab', '89700'), +('2880', 'Nowshera', 'PAK', 'Nothwest Border Prov', '89400'), +('2881', 'Koror', 'PLW', 'Koror', '12000'), +('2882', 'Ciudad de Panamá', 'PAN', 'Panamá', '471373'), +('2883', 'San Miguelito', 'PAN', 'San Miguelito', '315382'), +('2884', 'Port Moresby', 'PNG', 'National Capital Dis', '247000'), +('2885', 'Asunción', 'PRY', 'Asunción', '557776'), +('2886', 'Ciudad del Este', 'PRY', 'Alto Paraná', '133881'), +('2887', 'San Lorenzo', 'PRY', 'Central', '133395'), +('2888', 'Lambaré', 'PRY', 'Central', '99681'), +('2889', 'Fernando de la Mora', 'PRY', 'Central', '95287'), +('2890', 'Lima', 'PER', 'Lima', '6464693'), +('2891', 'Arequipa', 'PER', 'Arequipa', '762000'), +('2892', 'Trujillo', 'PER', 'La Libertad', '652000'), +('2893', 'Chiclayo', 'PER', 'Lambayeque', '517000'), +('2894', 'Callao', 'PER', 'Callao', '424294'), +('2895', 'Iquitos', 'PER', 'Loreto', '367000'), +('2896', 'Chimbote', 'PER', 'Ancash', '336000'), +('2897', 'Huancayo', 'PER', 'Junín', '327000'), +('2898', 'Piura', 'PER', 'Piura', '325000'), +('2899', 'Cusco', 'PER', 'Cusco', '291000'), +('2900', 'Pucallpa', 'PER', 'Ucayali', '220866'), +('2901', 'Tacna', 'PER', 'Tacna', '215683'), +('2902', 'Ica', 'PER', 'Ica', '194820'), +('2903', 'Sullana', 'PER', 'Piura', '147361'), +('2904', 'Juliaca', 'PER', 'Puno', '142576'), +('2905', 'Huánuco', 'PER', 'Huanuco', '129688'), +('2906', 'Ayacucho', 'PER', 'Ayacucho', '118960'), +('2907', 'Chincha Alta', 'PER', 'Ica', '110016'), +('2908', 'Cajamarca', 'PER', 'Cajamarca', '108009'), +('2909', 'Puno', 'PER', 'Puno', '101578'), +('2910', 'Ventanilla', 'PER', 'Callao', '101056'), +('2911', 'Castilla', 'PER', 'Piura', '90642'), +('2912', 'Adamstown', 'PCN', '–', '42'), +('2913', 'Garapan', 'MNP', 'Saipan', '9200'), +('2914', 'Lisboa', 'PRT', 'Lisboa', '563210'), +('2915', 'Porto', 'PRT', 'Porto', '273060'), +('2916', 'Amadora', 'PRT', 'Lisboa', '122106'), +('2917', 'Coímbra', 'PRT', 'Coímbra', '96100'), +('2918', 'Braga', 'PRT', 'Braga', '90535'), +('2919', 'San Juan', 'PRI', 'San Juan', '434374'), +('2920', 'Bayamón', 'PRI', 'Bayamón', '224044'), +('2921', 'Ponce', 'PRI', 'Ponce', '186475'), +('2922', 'Carolina', 'PRI', 'Carolina', '186076'), +('2923', 'Caguas', 'PRI', 'Caguas', '140502'), +('2924', 'Arecibo', 'PRI', 'Arecibo', '100131'), +('2925', 'Guaynabo', 'PRI', 'Guaynabo', '100053'), +('2926', 'Mayagüez', 'PRI', 'Mayagüez', '98434'), +('2927', 'Toa Baja', 'PRI', 'Toa Baja', '94085'), +('2928', 'Warszawa', 'POL', 'Mazowieckie', '1615369'), +('2929', 'Lódz', 'POL', 'Lodzkie', '800110'), +('2930', 'Kraków', 'POL', 'Malopolskie', '738150'), +('2931', 'Wroclaw', 'POL', 'Dolnoslaskie', '636765'), +('2932', 'Poznan', 'POL', 'Wielkopolskie', '576899'), +('2933', 'Gdansk', 'POL', 'Pomorskie', '458988'), +('2934', 'Szczecin', 'POL', 'Zachodnio-Pomorskie', '416988'), +('2935', 'Bydgoszcz', 'POL', 'Kujawsko-Pomorskie', '386855'), +('2936', 'Lublin', 'POL', 'Lubelskie', '356251'), +('2937', 'Katowice', 'POL', 'Slaskie', '345934'), +('2938', 'Bialystok', 'POL', 'Podlaskie', '283937'), +('2939', 'Czestochowa', 'POL', 'Slaskie', '257812'), +('2940', 'Gdynia', 'POL', 'Pomorskie', '253521'), +('2941', 'Sosnowiec', 'POL', 'Slaskie', '244102'), +('2942', 'Radom', 'POL', 'Mazowieckie', '232262'), +('2943', 'Kielce', 'POL', 'Swietokrzyskie', '212383'), +('2944', 'Gliwice', 'POL', 'Slaskie', '212164'), +('2945', 'Torun', 'POL', 'Kujawsko-Pomorskie', '206158'), +('2946', 'Bytom', 'POL', 'Slaskie', '205560'), +('2947', 'Zabrze', 'POL', 'Slaskie', '200177'), +('2948', 'Bielsko-Biala', 'POL', 'Slaskie', '180307'), +('2949', 'Olsztyn', 'POL', 'Warminsko-Mazurskie', '170904'), +('2950', 'Rzeszów', 'POL', 'Podkarpackie', '162049'), +('2951', 'Ruda Slaska', 'POL', 'Slaskie', '159665'), +('2952', 'Rybnik', 'POL', 'Slaskie', '144582'), +('2953', 'Walbrzych', 'POL', 'Dolnoslaskie', '136923'), +('2954', 'Tychy', 'POL', 'Slaskie', '133178'), +('2955', 'Dabrowa Górnicza', 'POL', 'Slaskie', '131037'), +('2956', 'Plock', 'POL', 'Mazowieckie', '131011'), +('2957', 'Elblag', 'POL', 'Warminsko-Mazurskie', '129782'), +('2958', 'Opole', 'POL', 'Opolskie', '129553'), +('2959', 'Gorzów Wielkopolski', 'POL', 'Lubuskie', '126019'), +('2960', 'Wloclawek', 'POL', 'Kujawsko-Pomorskie', '123373'), +('2961', 'Chorzów', 'POL', 'Slaskie', '121708'), +('2962', 'Tarnów', 'POL', 'Malopolskie', '121494'), +('2963', 'Zielona Góra', 'POL', 'Lubuskie', '118182'), +('2964', 'Koszalin', 'POL', 'Zachodnio-Pomorskie', '112375'), +('2965', 'Legnica', 'POL', 'Dolnoslaskie', '109335'), +('2966', 'Kalisz', 'POL', 'Wielkopolskie', '106641'), +('2967', 'Grudziadz', 'POL', 'Kujawsko-Pomorskie', '102434'), +('2968', 'Slupsk', 'POL', 'Pomorskie', '102370'), +('2969', 'Jastrzebie-Zdrój', 'POL', 'Slaskie', '102294'), +('2970', 'Jaworzno', 'POL', 'Slaskie', '97929'), +('2971', 'Jelenia Góra', 'POL', 'Dolnoslaskie', '93901'), +('2972', 'Malabo', 'GNQ', 'Bioko', '40000'), +('2973', 'Doha', 'QAT', 'Doha', '355000'), +('2974', 'Paris', 'FRA', 'Île-de-France', '2125246'), +('2975', 'Marseille', 'FRA', 'Provence-Alpes-Côte', '798430'), +('2976', 'Lyon', 'FRA', 'Rhône-Alpes', '445452'), +('2977', 'Toulouse', 'FRA', 'Midi-Pyrénées', '390350'), +('2978', 'Nice', 'FRA', 'Provence-Alpes-Côte', '342738'), +('2979', 'Nantes', 'FRA', 'Pays de la Loire', '270251'), +('2980', 'Strasbourg', 'FRA', 'Alsace', '264115'), +('2981', 'Montpellier', 'FRA', 'Languedoc-Roussillon', '225392'), +('2982', 'Bordeaux', 'FRA', 'Aquitaine', '215363'), +('2983', 'Rennes', 'FRA', 'Haute-Normandie', '206229'), +('2984', 'Le Havre', 'FRA', 'Champagne-Ardenne', '190905'), +('2985', 'Reims', 'FRA', 'Nord-Pas-de-Calais', '187206'), +('2986', 'Lille', 'FRA', 'Rhône-Alpes', '184657'), +('2987', 'St-Étienne', 'FRA', 'Bretagne', '180210'), +('2988', 'Toulon', 'FRA', 'Provence-Alpes-Côte', '160639'), +('2989', 'Grenoble', 'FRA', 'Rhône-Alpes', '153317'), +('2990', 'Angers', 'FRA', 'Pays de la Loire', '151279'), +('2991', 'Dijon', 'FRA', 'Bourgogne', '149867'), +('2992', 'Brest', 'FRA', 'Bretagne', '149634'), +('2993', 'Le Mans', 'FRA', 'Pays de la Loire', '146105'), +('2994', 'Clermont-Ferrand', 'FRA', 'Auvergne', '137140'), +('2995', 'Amiens', 'FRA', 'Picardie', '135501'), +('2996', 'Aix-en-Provence', 'FRA', 'Provence-Alpes-Côte', '134222'), +('2997', 'Limoges', 'FRA', 'Limousin', '133968'), +('2998', 'Nîmes', 'FRA', 'Languedoc-Roussillon', '133424'), +('2999', 'Tours', 'FRA', 'Centre', '132820'); + +INSERT INTO city (id, name, countrycode, district, population) VALUES +('3000', 'Villeurbanne', 'FRA', 'Rhône-Alpes', '124215'), +('3001', 'Metz', 'FRA', 'Lorraine', '123776'), +('3002', 'Besançon', 'FRA', 'Franche-Comté', '117733'), +('3003', 'Caen', 'FRA', 'Basse-Normandie', '113987'), +('3004', 'Orléans', 'FRA', 'Centre', '113126'), +('3005', 'Mulhouse', 'FRA', 'Alsace', '110359'), +('3006', 'Rouen', 'FRA', 'Haute-Normandie', '106592'), +('3007', 'Boulogne-Billancourt', 'FRA', 'Île-de-France', '106367'), +('3008', 'Perpignan', 'FRA', 'Languedoc-Roussillon', '105115'), +('3009', 'Nancy', 'FRA', 'Lorraine', '103605'), +('3010', 'Roubaix', 'FRA', 'Nord-Pas-de-Calais', '96984'), +('3011', 'Argenteuil', 'FRA', 'Île-de-France', '93961'), +('3012', 'Tourcoing', 'FRA', 'Nord-Pas-de-Calais', '93540'), +('3013', 'Montreuil', 'FRA', 'Île-de-France', '90674'), +('3014', 'Cayenne', 'GUF', 'Cayenne', '50699'), +('3015', 'Faaa', 'PYF', 'Tahiti', '25888'), +('3016', 'Papeete', 'PYF', 'Tahiti', '25553'), +('3017', 'Saint-Denis', 'REU', 'Saint-Denis', '131480'), +('3018', 'Bucuresti', 'ROM', 'Bukarest', '2016131'), +('3019', 'Iasi', 'ROM', 'Iasi', '348070'), +('3020', 'Constanta', 'ROM', 'Constanta', '342264'), +('3021', 'Cluj-Napoca', 'ROM', 'Cluj', '332498'), +('3022', 'Galati', 'ROM', 'Galati', '330276'), +('3023', 'Timisoara', 'ROM', 'Timis', '324304'), +('3024', 'Brasov', 'ROM', 'Brasov', '314225'), +('3025', 'Craiova', 'ROM', 'Dolj', '313530'), +('3026', 'Ploiesti', 'ROM', 'Prahova', '251348'), +('3027', 'Braila', 'ROM', 'Braila', '233756'), +('3028', 'Oradea', 'ROM', 'Bihor', '222239'), +('3029', 'Bacau', 'ROM', 'Bacau', '209235'), +('3030', 'Pitesti', 'ROM', 'Arges', '187170'), +('3031', 'Arad', 'ROM', 'Arad', '184408'), +('3032', 'Sibiu', 'ROM', 'Sibiu', '169611'), +('3033', 'Târgu Mures', 'ROM', 'Mures', '165153'), +('3034', 'Baia Mare', 'ROM', 'Maramures', '149665'), +('3035', 'Buzau', 'ROM', 'Buzau', '148372'), +('3036', 'Satu Mare', 'ROM', 'Satu Mare', '130059'), +('3037', 'Botosani', 'ROM', 'Botosani', '128730'), +('3038', 'Piatra Neamt', 'ROM', 'Neamt', '125070'), +('3039', 'Râmnicu Vâlcea', 'ROM', 'Vâlcea', '119741'), +('3040', 'Suceava', 'ROM', 'Suceava', '118549'), +('3041', 'Drobeta-Turnu Severin', 'ROM', 'Mehedinti', '117865'), +('3042', 'Târgoviste', 'ROM', 'Dâmbovita', '98980'), +('3043', 'Focsani', 'ROM', 'Vrancea', '98979'), +('3044', 'Târgu Jiu', 'ROM', 'Gorj', '98524'), +('3045', 'Tulcea', 'ROM', 'Tulcea', '96278'), +('3046', 'Resita', 'ROM', 'Caras-Severin', '93976'), +('3047', 'Kigali', 'RWA', 'Kigali', '286000'), +('3048', 'Stockholm', 'SWE', 'Lisboa', '750348'), +('3049', 'Gothenburg [Göteborg]', 'SWE', 'West Götanmaan län', '466990'), +('3050', 'Malmö', 'SWE', 'Skĺne län', '259579'), +('3051', 'Uppsala', 'SWE', 'Uppsala län', '189569'), +('3052', 'Linköping', 'SWE', 'East Götanmaan län', '133168'), +('3053', 'Västerĺs', 'SWE', 'Västmanlands län', '126328'), +('3054', 'Örebro', 'SWE', 'Örebros län', '124207'), +('3055', 'Norrköping', 'SWE', 'East Götanmaan län', '122199'), +('3056', 'Helsingborg', 'SWE', 'Skĺne län', '117737'), +('3057', 'Jönköping', 'SWE', 'Jönköpings län', '117095'), +('3058', 'Umeĺ', 'SWE', 'Västerbottens län', '104512'), +('3059', 'Lund', 'SWE', 'Skĺne län', '98948'), +('3060', 'Borĺs', 'SWE', 'West Götanmaan län', '96883'), +('3061', 'Sundsvall', 'SWE', 'Västernorrlands län', '93126'), +('3062', 'Gävle', 'SWE', 'Gävleborgs län', '90742'), +('3063', 'Jamestown', 'SHN', 'Saint Helena', '1500'), +('3064', 'Basseterre', 'KNA', 'St George Basseterre', '11600'), +('3065', 'Castries', 'LCA', 'Castries', '2301'), +('3066', 'Kingstown', 'VCT', 'St George', '17100'), +('3067', 'Saint-Pierre', 'SPM', 'Saint-Pierre', '5808'), +('3068', 'Berlin', 'DEU', 'Berliini', '3386667'), +('3069', 'Hamburg', 'DEU', 'Hamburg', '1704735'), +('3070', 'Munich [München]', 'DEU', 'Baijeri', '1194560'), +('3071', 'Köln', 'DEU', 'Nordrhein-Westfalen', '962507'), +('3072', 'Frankfurt am Main', 'DEU', 'Hessen', '643821'), +('3073', 'Essen', 'DEU', 'Nordrhein-Westfalen', '599515'), +('3074', 'Dortmund', 'DEU', 'Nordrhein-Westfalen', '590213'), +('3075', 'Stuttgart', 'DEU', 'Baden-Württemberg', '582443'), +('3076', 'Düsseldorf', 'DEU', 'Nordrhein-Westfalen', '568855'), +('3077', 'Bremen', 'DEU', 'Bremen', '540330'), +('3078', 'Duisburg', 'DEU', 'Nordrhein-Westfalen', '519793'), +('3079', 'Hannover', 'DEU', 'Niedersachsen', '514718'), +('3080', 'Leipzig', 'DEU', 'Saksi', '489532'), +('3081', 'Nürnberg', 'DEU', 'Baijeri', '486628'), +('3082', 'Dresden', 'DEU', 'Saksi', '476668'), +('3083', 'Bochum', 'DEU', 'Nordrhein-Westfalen', '392830'), +('3084', 'Wuppertal', 'DEU', 'Nordrhein-Westfalen', '368993'), +('3085', 'Bielefeld', 'DEU', 'Nordrhein-Westfalen', '321125'), +('3086', 'Mannheim', 'DEU', 'Baden-Württemberg', '307730'), +('3087', 'Bonn', 'DEU', 'Nordrhein-Westfalen', '301048'), +('3088', 'Gelsenkirchen', 'DEU', 'Nordrhein-Westfalen', '281979'), +('3089', 'Karlsruhe', 'DEU', 'Baden-Württemberg', '277204'), +('3090', 'Wiesbaden', 'DEU', 'Hessen', '268716'), +('3091', 'Münster', 'DEU', 'Nordrhein-Westfalen', '264670'), +('3092', 'Mönchengladbach', 'DEU', 'Nordrhein-Westfalen', '263697'), +('3093', 'Chemnitz', 'DEU', 'Saksi', '263222'), +('3094', 'Augsburg', 'DEU', 'Baijeri', '254867'), +('3095', 'Halle/Saale', 'DEU', 'Anhalt Sachsen', '254360'), +('3096', 'Braunschweig', 'DEU', 'Niedersachsen', '246322'), +('3097', 'Aachen', 'DEU', 'Nordrhein-Westfalen', '243825'), +('3098', 'Krefeld', 'DEU', 'Nordrhein-Westfalen', '241769'), +('3099', 'Magdeburg', 'DEU', 'Anhalt Sachsen', '235073'), +('3100', 'Kiel', 'DEU', 'Schleswig-Holstein', '233795'), +('3101', 'Oberhausen', 'DEU', 'Nordrhein-Westfalen', '222349'), +('3102', 'Lübeck', 'DEU', 'Schleswig-Holstein', '213326'), +('3103', 'Hagen', 'DEU', 'Nordrhein-Westfalen', '205201'), +('3104', 'Rostock', 'DEU', 'Mecklenburg-Vorpomme', '203279'), +('3105', 'Freiburg im Breisgau', 'DEU', 'Baden-Württemberg', '202455'), +('3106', 'Erfurt', 'DEU', 'Thüringen', '201267'), +('3107', 'Kassel', 'DEU', 'Hessen', '196211'), +('3108', 'Saarbrücken', 'DEU', 'Saarland', '183836'), +('3109', 'Mainz', 'DEU', 'Rheinland-Pfalz', '183134'), +('3110', 'Hamm', 'DEU', 'Nordrhein-Westfalen', '181804'), +('3111', 'Herne', 'DEU', 'Nordrhein-Westfalen', '175661'), +('3112', 'Mülheim an der Ruhr', 'DEU', 'Nordrhein-Westfalen', '173895'), +('3113', 'Solingen', 'DEU', 'Nordrhein-Westfalen', '165583'), +('3114', 'Osnabrück', 'DEU', 'Niedersachsen', '164539'), +('3115', 'Ludwigshafen am Rhein', 'DEU', 'Rheinland-Pfalz', '163771'), +('3116', 'Leverkusen', 'DEU', 'Nordrhein-Westfalen', '160841'), +('3117', 'Oldenburg', 'DEU', 'Niedersachsen', '154125'), +('3118', 'Neuss', 'DEU', 'Nordrhein-Westfalen', '149702'), +('3119', 'Heidelberg', 'DEU', 'Baden-Württemberg', '139672'), +('3120', 'Darmstadt', 'DEU', 'Hessen', '137776'), +('3121', 'Paderborn', 'DEU', 'Nordrhein-Westfalen', '137647'), +('3122', 'Potsdam', 'DEU', 'Brandenburg', '128983'), +('3123', 'Würzburg', 'DEU', 'Baijeri', '127350'), +('3124', 'Regensburg', 'DEU', 'Baijeri', '125236'), +('3125', 'Recklinghausen', 'DEU', 'Nordrhein-Westfalen', '125022'), +('3126', 'Göttingen', 'DEU', 'Niedersachsen', '124775'), +('3127', 'Bremerhaven', 'DEU', 'Bremen', '122735'), +('3128', 'Wolfsburg', 'DEU', 'Niedersachsen', '121954'), +('3129', 'Bottrop', 'DEU', 'Nordrhein-Westfalen', '121097'), +('3130', 'Remscheid', 'DEU', 'Nordrhein-Westfalen', '120125'), +('3131', 'Heilbronn', 'DEU', 'Baden-Württemberg', '119526'), +('3132', 'Pforzheim', 'DEU', 'Baden-Württemberg', '117227'), +('3133', 'Offenbach am Main', 'DEU', 'Hessen', '116627'), +('3134', 'Ulm', 'DEU', 'Baden-Württemberg', '116103'), +('3135', 'Ingolstadt', 'DEU', 'Baijeri', '114826'), +('3136', 'Gera', 'DEU', 'Thüringen', '114718'), +('3137', 'Salzgitter', 'DEU', 'Niedersachsen', '112934'), +('3138', 'Cottbus', 'DEU', 'Brandenburg', '110894'), +('3139', 'Reutlingen', 'DEU', 'Baden-Württemberg', '110343'), +('3140', 'Fürth', 'DEU', 'Baijeri', '109771'), +('3141', 'Siegen', 'DEU', 'Nordrhein-Westfalen', '109225'), +('3142', 'Koblenz', 'DEU', 'Rheinland-Pfalz', '108003'), +('3143', 'Moers', 'DEU', 'Nordrhein-Westfalen', '106837'), +('3144', 'Bergisch Gladbach', 'DEU', 'Nordrhein-Westfalen', '106150'), +('3145', 'Zwickau', 'DEU', 'Saksi', '104146'), +('3146', 'Hildesheim', 'DEU', 'Niedersachsen', '104013'), +('3147', 'Witten', 'DEU', 'Nordrhein-Westfalen', '103384'), +('3148', 'Schwerin', 'DEU', 'Mecklenburg-Vorpomme', '102878'), +('3149', 'Erlangen', 'DEU', 'Baijeri', '100750'), +('3150', 'Kaiserslautern', 'DEU', 'Rheinland-Pfalz', '100025'), +('3151', 'Trier', 'DEU', 'Rheinland-Pfalz', '99891'), +('3152', 'Jena', 'DEU', 'Thüringen', '99779'), +('3153', 'Iserlohn', 'DEU', 'Nordrhein-Westfalen', '99474'), +('3154', 'Gütersloh', 'DEU', 'Nordrhein-Westfalen', '95028'), +('3155', 'Marl', 'DEU', 'Nordrhein-Westfalen', '93735'), +('3156', 'Lünen', 'DEU', 'Nordrhein-Westfalen', '92044'), +('3157', 'Düren', 'DEU', 'Nordrhein-Westfalen', '91092'), +('3158', 'Ratingen', 'DEU', 'Nordrhein-Westfalen', '90951'), +('3159', 'Velbert', 'DEU', 'Nordrhein-Westfalen', '89881'), +('3160', 'Esslingen am Neckar', 'DEU', 'Baden-Württemberg', '89667'), +('3161', 'Honiara', 'SLB', 'Honiara', '50100'), +('3162', 'Lusaka', 'ZMB', 'Lusaka', '1317000'), +('3163', 'Ndola', 'ZMB', 'Copperbelt', '329200'), +('3164', 'Kitwe', 'ZMB', 'Copperbelt', '288600'), +('3165', 'Kabwe', 'ZMB', 'Central', '154300'), +('3166', 'Chingola', 'ZMB', 'Copperbelt', '142400'), +('3167', 'Mufulira', 'ZMB', 'Copperbelt', '123900'), +('3168', 'Luanshya', 'ZMB', 'Copperbelt', '118100'), +('3169', 'Apia', 'WSM', 'Upolu', '35900'), +('3170', 'Serravalle', 'SMR', 'Serravalle/Dogano', '4802'), +('3171', 'San Marino', 'SMR', 'San Marino', '2294'), +('3172', 'Săo Tomé', 'STP', 'Aqua Grande', '49541'), +('3173', 'Riyadh', 'SAU', 'Riyadh', '3324000'), +('3174', 'Jedda', 'SAU', 'Mekka', '2046300'), +('3175', 'Mekka', 'SAU', 'Mekka', '965700'), +('3176', 'Medina', 'SAU', 'Medina', '608300'), +('3177', 'al-Dammam', 'SAU', 'al-Sharqiya', '482300'), +('3178', 'al-Taif', 'SAU', 'Mekka', '416100'), +('3179', 'Tabuk', 'SAU', 'Tabuk', '292600'), +('3180', 'Burayda', 'SAU', 'al-Qasim', '248600'), +('3181', 'al-Hufuf', 'SAU', 'al-Sharqiya', '225800'), +('3182', 'al-Mubarraz', 'SAU', 'al-Sharqiya', '219100'), +('3183', 'Khamis Mushayt', 'SAU', 'Asir', '217900'), +('3184', 'Hail', 'SAU', 'Hail', '176800'), +('3185', 'al-Kharj', 'SAU', 'Riad', '152100'), +('3186', 'al-Khubar', 'SAU', 'al-Sharqiya', '141700'), +('3187', 'Jubayl', 'SAU', 'al-Sharqiya', '140800'), +('3188', 'Hafar al-Batin', 'SAU', 'al-Sharqiya', '137800'), +('3189', 'al-Tuqba', 'SAU', 'al-Sharqiya', '125700'), +('3190', 'Yanbu', 'SAU', 'Medina', '119800'), +('3191', 'Abha', 'SAU', 'Asir', '112300'), +('3192', 'Ara´ar', 'SAU', 'al-Khudud al-Samaliy', '108100'), +('3193', 'al-Qatif', 'SAU', 'al-Sharqiya', '98900'), +('3194', 'al-Hawiya', 'SAU', 'Mekka', '93900'), +('3195', 'Unayza', 'SAU', 'Qasim', '91100'), +('3196', 'Najran', 'SAU', 'Najran', '91000'), +('3197', 'Pikine', 'SEN', 'Cap-Vert', '855287'), +('3198', 'Dakar', 'SEN', 'Cap-Vert', '785071'), +('3199', 'Thičs', 'SEN', 'Thičs', '248000'), +('3200', 'Kaolack', 'SEN', 'Kaolack', '199000'), +('3201', 'Ziguinchor', 'SEN', 'Ziguinchor', '192000'), +('3202', 'Rufisque', 'SEN', 'Cap-Vert', '150000'), +('3203', 'Saint-Louis', 'SEN', 'Saint-Louis', '132400'), +('3204', 'Mbour', 'SEN', 'Thičs', '109300'), +('3205', 'Diourbel', 'SEN', 'Diourbel', '99400'), +('3206', 'Victoria', 'SYC', 'Mahé', '41000'), +('3207', 'Freetown', 'SLE', 'Western', '850000'), +('3208', 'Singapore', 'SGP', '–', '4017733'), +('3209', 'Bratislava', 'SVK', 'Bratislava', '448292'), +('3210', 'Košice', 'SVK', 'Východné Slovensko', '241874'), +('3211', 'Prešov', 'SVK', 'Východné Slovensko', '93977'), +('3212', 'Ljubljana', 'SVN', 'Osrednjeslovenska', '270986'), +('3213', 'Maribor', 'SVN', 'Podravska', '115532'), +('3214', 'Mogadishu', 'SOM', 'Banaadir', '997000'), +('3215', 'Hargeysa', 'SOM', 'Woqooyi Galbeed', '90000'), +('3216', 'Kismaayo', 'SOM', 'Jubbada Hoose', '90000'), +('3217', 'Colombo', 'LKA', 'Western', '645000'), +('3218', 'Dehiwala', 'LKA', 'Western', '203000'), +('3219', 'Moratuwa', 'LKA', 'Western', '190000'), +('3220', 'Jaffna', 'LKA', 'Northern', '149000'), +('3221', 'Kandy', 'LKA', 'Central', '140000'), +('3222', 'Sri Jayawardenepura Kotte', 'LKA', 'Western', '118000'), +('3223', 'Negombo', 'LKA', 'Western', '100000'), +('3224', 'Omdurman', 'SDN', 'Khartum', '1271403'), +('3225', 'Khartum', 'SDN', 'Khartum', '947483'), +('3226', 'Sharq al-Nil', 'SDN', 'Khartum', '700887'), +('3227', 'Port Sudan', 'SDN', 'al-Bahr al-Ahmar', '308195'), +('3228', 'Kassala', 'SDN', 'Kassala', '234622'), +('3229', 'Obeid', 'SDN', 'Kurdufan al-Shamaliy', '229425'), +('3230', 'Nyala', 'SDN', 'Darfur al-Janubiya', '227183'), +('3231', 'Wad Madani', 'SDN', 'al-Jazira', '211362'), +('3232', 'al-Qadarif', 'SDN', 'al-Qadarif', '191164'), +('3233', 'Kusti', 'SDN', 'al-Bahr al-Abyad', '173599'), +('3234', 'al-Fashir', 'SDN', 'Darfur al-Shamaliya', '141884'), +('3235', 'Juba', 'SDN', 'Bahr al-Jabal', '114980'), +('3236', 'Helsinki [Helsingfors]', 'FIN', 'Newmaa', '555474'), +('3237', 'Espoo', 'FIN', 'Newmaa', '213271'), +('3238', 'Tampere', 'FIN', 'Pirkanmaa', '195468'), +('3239', 'Vantaa', 'FIN', 'Newmaa', '178471'), +('3240', 'Turku [Ĺbo]', 'FIN', 'Varsinais-Suomi', '172561'), +('3241', 'Oulu', 'FIN', 'Pohjois-Pohjanmaa', '120753'), +('3242', 'Lahti', 'FIN', 'Päijät-Häme', '96921'), +('3243', 'Paramaribo', 'SUR', 'Paramaribo', '112000'), +('3244', 'Mbabane', 'SWZ', 'Hhohho', '61000'), +('3245', 'Zürich', 'CHE', 'Zürich', '336800'), +('3246', 'Geneve', 'CHE', 'Geneve', '173500'), +('3247', 'Basel', 'CHE', 'Basel-Stadt', '166700'), +('3248', 'Bern', 'CHE', 'Bern', '122700'), +('3249', 'Lausanne', 'CHE', 'Vaud', '114500'), +('3250', 'Damascus', 'SYR', 'Damascus', '1347000'), +('3251', 'Aleppo', 'SYR', 'Aleppo', '1261983'), +('3252', 'Hims', 'SYR', 'Hims', '507404'), +('3253', 'Hama', 'SYR', 'Hama', '343361'), +('3254', 'Latakia', 'SYR', 'Latakia', '264563'), +('3255', 'al-Qamishliya', 'SYR', 'al-Hasaka', '144286'), +('3256', 'Dayr al-Zawr', 'SYR', 'Dayr al-Zawr', '140459'), +('3257', 'Jaramana', 'SYR', 'Damaskos', '138469'), +('3258', 'Duma', 'SYR', 'Damaskos', '131158'), +('3259', 'al-Raqqa', 'SYR', 'al-Raqqa', '108020'), +('3260', 'Idlib', 'SYR', 'Idlib', '91081'), +('3261', 'Dushanbe', 'TJK', 'Karotegin', '524000'), +('3262', 'Khujand', 'TJK', 'Khujand', '161500'), +('3263', 'Taipei', 'TWN', 'Taipei', '2641312'), +('3264', 'Kaohsiung', 'TWN', 'Kaohsiung', '1475505'), +('3265', 'Taichung', 'TWN', 'Taichung', '940589'), +('3266', 'Tainan', 'TWN', 'Tainan', '728060'), +('3267', 'Panchiao', 'TWN', 'Taipei', '523850'), +('3268', 'Chungho', 'TWN', 'Taipei', '392176'), +('3269', 'Keelung (Chilung)', 'TWN', 'Keelung', '385201'), +('3270', 'Sanchung', 'TWN', 'Taipei', '380084'), +('3271', 'Hsinchuang', 'TWN', 'Taipei', '365048'), +('3272', 'Hsinchu', 'TWN', 'Hsinchu', '361958'), +('3273', 'Chungli', 'TWN', 'Taoyuan', '318649'), +('3274', 'Fengshan', 'TWN', 'Kaohsiung', '318562'), +('3275', 'Taoyuan', 'TWN', 'Taoyuan', '316438'), +('3276', 'Chiayi', 'TWN', 'Chiayi', '265109'), +('3277', 'Hsintien', 'TWN', 'Taipei', '263603'), +('3278', 'Changhwa', 'TWN', 'Changhwa', '227715'), +('3279', 'Yungho', 'TWN', 'Taipei', '227700'), +('3280', 'Tucheng', 'TWN', 'Taipei', '224897'), +('3281', 'Pingtung', 'TWN', 'Pingtung', '214727'), +('3282', 'Yungkang', 'TWN', 'Tainan', '193005'), +('3283', 'Pingchen', 'TWN', 'Taoyuan', '188344'), +('3284', 'Tali', 'TWN', 'Taichung', '171940'), +('3285', 'Taiping', 'TWN', '-', '165524'), +('3286', 'Pate', 'TWN', 'Taoyuan', '161700'), +('3287', 'Fengyuan', 'TWN', 'Taichung', '161032'), +('3288', 'Luchou', 'TWN', 'Taipei', '160516'), +('3289', 'Hsichuh', 'TWN', 'Taipei', '154976'), +('3290', 'Shulin', 'TWN', 'Taipei', '151260'), +('3291', 'Yuanlin', 'TWN', 'Changhwa', '126402'), +('3292', 'Yangmei', 'TWN', 'Taoyuan', '126323'), +('3293', 'Taliao', 'TWN', '-', '115897'), +('3294', 'Kueishan', 'TWN', '-', '112195'), +('3295', 'Tanshui', 'TWN', 'Taipei', '111882'), +('3296', 'Taitung', 'TWN', 'Taitung', '111039'), +('3297', 'Hualien', 'TWN', 'Hualien', '108407'), +('3298', 'Nantou', 'TWN', 'Nantou', '104723'), +('3299', 'Lungtan', 'TWN', 'Taipei', '103088'), +('3300', 'Touliu', 'TWN', 'Yünlin', '98900'), +('3301', 'Tsaotun', 'TWN', 'Nantou', '96800'), +('3302', 'Kangshan', 'TWN', 'Kaohsiung', '92200'), +('3303', 'Ilan', 'TWN', 'Ilan', '92000'), +('3304', 'Miaoli', 'TWN', 'Miaoli', '90000'), +('3305', 'Dar es Salaam', 'TZA', 'Dar es Salaam', '1747000'), +('3306', 'Dodoma', 'TZA', 'Dodoma', '189000'), +('3307', 'Mwanza', 'TZA', 'Mwanza', '172300'), +('3308', 'Zanzibar', 'TZA', 'Zanzibar West', '157634'), +('3309', 'Tanga', 'TZA', 'Tanga', '137400'), +('3310', 'Mbeya', 'TZA', 'Mbeya', '130800'), +('3311', 'Morogoro', 'TZA', 'Morogoro', '117800'), +('3312', 'Arusha', 'TZA', 'Arusha', '102500'), +('3313', 'Moshi', 'TZA', 'Kilimanjaro', '96800'), +('3314', 'Tabora', 'TZA', 'Tabora', '92800'), +('3315', 'Křbenhavn', 'DNK', 'Křbenhavn', '495699'), +('3316', 'Ĺrhus', 'DNK', 'Ĺrhus', '284846'), +('3317', 'Odense', 'DNK', 'Fyn', '183912'), +('3318', 'Aalborg', 'DNK', 'Nordjylland', '161161'), +('3319', 'Frederiksberg', 'DNK', 'Frederiksberg', '90327'), +('3320', 'Bangkok', 'THA', 'Bangkok', '6320174'), +('3321', 'Nonthaburi', 'THA', 'Nonthaburi', '292100'), +('3322', 'Nakhon Ratchasima', 'THA', 'Nakhon Ratchasima', '181400'), +('3323', 'Chiang Mai', 'THA', 'Chiang Mai', '171100'), +('3324', 'Udon Thani', 'THA', 'Udon Thani', '158100'), +('3325', 'Hat Yai', 'THA', 'Songkhla', '148632'), +('3326', 'Khon Kaen', 'THA', 'Khon Kaen', '126500'), +('3327', 'Pak Kret', 'THA', 'Nonthaburi', '126055'), +('3328', 'Nakhon Sawan', 'THA', 'Nakhon Sawan', '123800'), +('3329', 'Ubon Ratchathani', 'THA', 'Ubon Ratchathani', '116300'), +('3330', 'Songkhla', 'THA', 'Songkhla', '94900'), +('3331', 'Nakhon Pathom', 'THA', 'Nakhon Pathom', '94100'), +('3332', 'Lomé', 'TGO', 'Maritime', '375000'), +('3333', 'Fakaofo', 'TKL', 'Fakaofo', '300'), +('3334', 'Nuku´alofa', 'TON', 'Tongatapu', '22400'), +('3335', 'Chaguanas', 'TTO', 'Caroni', '56601'), +('3336', 'Port-of-Spain', 'TTO', 'Port-of-Spain', '43396'), +('3337', 'N´Djaména', 'TCD', 'Chari-Baguirmi', '530965'), +('3338', 'Moundou', 'TCD', 'Logone Occidental', '99500'), +('3339', 'Praha', 'CZE', 'Hlavní mesto Praha', '1181126'), +('3340', 'Brno', 'CZE', 'Jizní Morava', '381862'), +('3341', 'Ostrava', 'CZE', 'Severní Morava', '320041'), +('3342', 'Plzen', 'CZE', 'Zapadní Cechy', '166759'), +('3343', 'Olomouc', 'CZE', 'Severní Morava', '102702'), +('3344', 'Liberec', 'CZE', 'Severní Cechy', '99155'), +('3345', 'Ceské Budejovice', 'CZE', 'Jizní Cechy', '98186'), +('3346', 'Hradec Králové', 'CZE', 'Východní Cechy', '98080'), +('3347', 'Ústí nad Labem', 'CZE', 'Severní Cechy', '95491'), +('3348', 'Pardubice', 'CZE', 'Východní Cechy', '91309'), +('3349', 'Tunis', 'TUN', 'Tunis', '690600'), +('3350', 'Sfax', 'TUN', 'Sfax', '257800'), +('3351', 'Ariana', 'TUN', 'Ariana', '197000'), +('3352', 'Ettadhamen', 'TUN', 'Ariana', '178600'), +('3353', 'Sousse', 'TUN', 'Sousse', '145900'), +('3354', 'Kairouan', 'TUN', 'Kairouan', '113100'), +('3355', 'Biserta', 'TUN', 'Biserta', '108900'), +('3356', 'Gabčs', 'TUN', 'Gabčs', '106600'), +('3357', 'Istanbul', 'TUR', 'Istanbul', '8787958'), +('3358', 'Ankara', 'TUR', 'Ankara', '3038159'), +('3359', 'Izmir', 'TUR', 'Izmir', '2130359'), +('3360', 'Adana', 'TUR', 'Adana', '1131198'), +('3361', 'Bursa', 'TUR', 'Bursa', '1095842'), +('3362', 'Gaziantep', 'TUR', 'Gaziantep', '789056'), +('3363', 'Konya', 'TUR', 'Konya', '628364'), +('3364', 'Mersin (Içel)', 'TUR', 'Içel', '587212'), +('3365', 'Antalya', 'TUR', 'Antalya', '564914'), +('3366', 'Diyarbakir', 'TUR', 'Diyarbakir', '479884'), +('3367', 'Kayseri', 'TUR', 'Kayseri', '475657'), +('3368', 'Eskisehir', 'TUR', 'Eskisehir', '470781'), +('3369', 'Sanliurfa', 'TUR', 'Sanliurfa', '405905'), +('3370', 'Samsun', 'TUR', 'Samsun', '339871'), +('3371', 'Malatya', 'TUR', 'Malatya', '330312'), +('3372', 'Gebze', 'TUR', 'Kocaeli', '264170'), +('3373', 'Denizli', 'TUR', 'Denizli', '253848'), +('3374', 'Sivas', 'TUR', 'Sivas', '246642'), +('3375', 'Erzurum', 'TUR', 'Erzurum', '246535'), +('3376', 'Tarsus', 'TUR', 'Adana', '246206'), +('3377', 'Kahramanmaras', 'TUR', 'Kahramanmaras', '245772'), +('3378', 'Elâzig', 'TUR', 'Elâzig', '228815'), +('3379', 'Van', 'TUR', 'Van', '219319'), +('3380', 'Sultanbeyli', 'TUR', 'Istanbul', '211068'), +('3381', 'Izmit (Kocaeli)', 'TUR', 'Kocaeli', '210068'), +('3382', 'Manisa', 'TUR', 'Manisa', '207148'), +('3383', 'Batman', 'TUR', 'Batman', '203793'), +('3384', 'Balikesir', 'TUR', 'Balikesir', '196382'), +('3385', 'Sakarya (Adapazari)', 'TUR', 'Sakarya', '190641'), +('3386', 'Iskenderun', 'TUR', 'Hatay', '153022'), +('3387', 'Osmaniye', 'TUR', 'Osmaniye', '146003'), +('3388', 'Çorum', 'TUR', 'Çorum', '145495'), +('3389', 'Kütahya', 'TUR', 'Kütahya', '144761'), +('3390', 'Hatay (Antakya)', 'TUR', 'Hatay', '143982'), +('3391', 'Kirikkale', 'TUR', 'Kirikkale', '142044'), +('3392', 'Adiyaman', 'TUR', 'Adiyaman', '141529'), +('3393', 'Trabzon', 'TUR', 'Trabzon', '138234'), +('3394', 'Ordu', 'TUR', 'Ordu', '133642'), +('3395', 'Aydin', 'TUR', 'Aydin', '128651'), +('3396', 'Usak', 'TUR', 'Usak', '128162'), +('3397', 'Edirne', 'TUR', 'Edirne', '123383'), +('3398', 'Çorlu', 'TUR', 'Tekirdag', '123300'), +('3399', 'Isparta', 'TUR', 'Isparta', '121911'), +('3400', 'Karabük', 'TUR', 'Karabük', '118285'), +('3401', 'Kilis', 'TUR', 'Kilis', '118245'), +('3402', 'Alanya', 'TUR', 'Antalya', '117300'), +('3403', 'Kiziltepe', 'TUR', 'Mardin', '112000'), +('3404', 'Zonguldak', 'TUR', 'Zonguldak', '111542'), +('3405', 'Siirt', 'TUR', 'Siirt', '107100'), +('3406', 'Viransehir', 'TUR', 'Sanliurfa', '106400'), +('3407', 'Tekirdag', 'TUR', 'Tekirdag', '106077'), +('3408', 'Karaman', 'TUR', 'Karaman', '104200'), +('3409', 'Afyon', 'TUR', 'Afyon', '103984'), +('3410', 'Aksaray', 'TUR', 'Aksaray', '102681'), +('3411', 'Ceyhan', 'TUR', 'Adana', '102412'), +('3412', 'Erzincan', 'TUR', 'Erzincan', '102304'), +('3413', 'Bismil', 'TUR', 'Diyarbakir', '101400'), +('3414', 'Nazilli', 'TUR', 'Aydin', '99900'), +('3415', 'Tokat', 'TUR', 'Tokat', '99500'), +('3416', 'Kars', 'TUR', 'Kars', '93000'), +('3417', 'Inegöl', 'TUR', 'Bursa', '90500'), +('3418', 'Bandirma', 'TUR', 'Balikesir', '90200'), +('3419', 'Ashgabat', 'TKM', 'Ahal', '540600'), +('3420', 'Chärjew', 'TKM', 'Lebap', '189200'), +('3421', 'Dashhowuz', 'TKM', 'Dashhowuz', '141800'), +('3422', 'Mary', 'TKM', 'Mary', '101000'), +('3423', 'Cockburn Town', 'TCA', 'Grand Turk', '4800'), +('3424', 'Funafuti', 'TUV', 'Funafuti', '4600'), +('3425', 'Kampala', 'UGA', 'Central', '890800'), +('3426', 'Kyiv', 'UKR', 'Kiova', '2624000'), +('3427', 'Harkova [Harkiv]', 'UKR', 'Harkova', '1500000'), +('3428', 'Dnipropetrovsk', 'UKR', 'Dnipropetrovsk', '1103000'), +('3429', 'Donetsk', 'UKR', 'Donetsk', '1050000'), +('3430', 'Odesa', 'UKR', 'Odesa', '1011000'), +('3431', 'Zaporizzja', 'UKR', 'Zaporizzja', '848000'), +('3432', 'Lviv', 'UKR', 'Lviv', '788000'), +('3433', 'Kryvyi Rig', 'UKR', 'Dnipropetrovsk', '703000'), +('3434', 'Mykolajiv', 'UKR', 'Mykolajiv', '508000'), +('3435', 'Mariupol', 'UKR', 'Donetsk', '490000'), +('3436', 'Lugansk', 'UKR', 'Lugansk', '469000'), +('3437', 'Vinnytsja', 'UKR', 'Vinnytsja', '391000'), +('3438', 'Makijivka', 'UKR', 'Donetsk', '384000'), +('3439', 'Herson', 'UKR', 'Herson', '353000'), +('3440', 'Sevastopol', 'UKR', 'Krim', '348000'), +('3441', 'Simferopol', 'UKR', 'Krim', '339000'), +('3442', 'Pultava [Poltava]', 'UKR', 'Pultava', '313000'), +('3443', 'Tšernigiv', 'UKR', 'Tšernigiv', '313000'), +('3444', 'Tšerkasy', 'UKR', 'Tšerkasy', '309000'), +('3445', 'Gorlivka', 'UKR', 'Donetsk', '299000'), +('3446', 'Zytomyr', 'UKR', 'Zytomyr', '297000'), +('3447', 'Sumy', 'UKR', 'Sumy', '294000'), +('3448', 'Dniprodzerzynsk', 'UKR', 'Dnipropetrovsk', '270000'), +('3449', 'Kirovograd', 'UKR', 'Kirovograd', '265000'), +('3450', 'Hmelnytskyi', 'UKR', 'Hmelnytskyi', '262000'), +('3451', 'Tšernivtsi', 'UKR', 'Tšernivtsi', '259000'), +('3452', 'Rivne', 'UKR', 'Rivne', '245000'), +('3453', 'Krementšuk', 'UKR', 'Pultava', '239000'), +('3454', 'Ivano-Frankivsk', 'UKR', 'Ivano-Frankivsk', '237000'), +('3455', 'Ternopil', 'UKR', 'Ternopil', '236000'), +('3456', 'Lutsk', 'UKR', 'Volynia', '217000'), +('3457', 'Bila Tserkva', 'UKR', 'Kiova', '215000'), +('3458', 'Kramatorsk', 'UKR', 'Donetsk', '186000'), +('3459', 'Melitopol', 'UKR', 'Zaporizzja', '169000'), +('3460', 'Kertš', 'UKR', 'Krim', '162000'), +('3461', 'Nikopol', 'UKR', 'Dnipropetrovsk', '149000'), +('3462', 'Berdjansk', 'UKR', 'Zaporizzja', '130000'), +('3463', 'Pavlograd', 'UKR', 'Dnipropetrovsk', '127000'), +('3464', 'Sjeverodonetsk', 'UKR', 'Lugansk', '127000'), +('3465', 'Slovjansk', 'UKR', 'Donetsk', '127000'), +('3466', 'Uzgorod', 'UKR', 'Taka-Karpatia', '127000'), +('3467', 'Altševsk', 'UKR', 'Lugansk', '119000'), +('3468', 'Lysytšansk', 'UKR', 'Lugansk', '116000'), +('3469', 'Jevpatorija', 'UKR', 'Krim', '112000'), +('3470', 'Kamjanets-Podilskyi', 'UKR', 'Hmelnytskyi', '109000'), +('3471', 'Jenakijeve', 'UKR', 'Donetsk', '105000'), +('3472', 'Krasnyi Lutš', 'UKR', 'Lugansk', '101000'), +('3473', 'Stahanov', 'UKR', 'Lugansk', '101000'), +('3474', 'Oleksandrija', 'UKR', 'Kirovograd', '99000'), +('3475', 'Konotop', 'UKR', 'Sumy', '96000'), +('3476', 'Kostjantynivka', 'UKR', 'Donetsk', '95000'), +('3477', 'Berdytšiv', 'UKR', 'Zytomyr', '90000'), +('3478', 'Izmajil', 'UKR', 'Odesa', '90000'), +('3479', 'Šostka', 'UKR', 'Sumy', '90000'), +('3480', 'Uman', 'UKR', 'Tšerkasy', '90000'), +('3481', 'Brovary', 'UKR', 'Kiova', '89000'), +('3482', 'Mukatševe', 'UKR', 'Taka-Karpatia', '89000'), +('3483', 'Budapest', 'HUN', 'Budapest', '1811552'), +('3484', 'Debrecen', 'HUN', 'Hajdú-Bihar', '203648'), +('3485', 'Miskolc', 'HUN', 'Borsod-Abaúj-Zemplén', '172357'), +('3486', 'Szeged', 'HUN', 'Csongrád', '158158'), +('3487', 'Pécs', 'HUN', 'Baranya', '157332'), +('3488', 'Györ', 'HUN', 'Györ-Moson-Sopron', '127119'), +('3489', 'Nyiregyháza', 'HUN', 'Szabolcs-Szatmár-Ber', '112419'), +('3490', 'Kecskemét', 'HUN', 'Bács-Kiskun', '105606'), +('3491', 'Székesfehérvár', 'HUN', 'Fejér', '105119'), +('3492', 'Montevideo', 'URY', 'Montevideo', '1236000'), +('3493', 'Nouméa', 'NCL', '–', '76293'), +('3494', 'Auckland', 'NZL', 'Auckland', '381800'), +('3495', 'Christchurch', 'NZL', 'Canterbury', '324200'), +('3496', 'Manukau', 'NZL', 'Auckland', '281800'), +('3497', 'North Shore', 'NZL', 'Auckland', '187700'), +('3498', 'Waitakere', 'NZL', 'Auckland', '170600'), +('3499', 'Wellington', 'NZL', 'Wellington', '166700'), +('3500', 'Dunedin', 'NZL', 'Dunedin', '119600'), +('3501', 'Hamilton', 'NZL', 'Hamilton', '117100'), +('3502', 'Lower Hutt', 'NZL', 'Wellington', '98100'), +('3503', 'Toskent', 'UZB', 'Toskent Shahri', '2117500'), +('3504', 'Namangan', 'UZB', 'Namangan', '370500'), +('3505', 'Samarkand', 'UZB', 'Samarkand', '361800'), +('3506', 'Andijon', 'UZB', 'Andijon', '318600'), +('3507', 'Buhoro', 'UZB', 'Buhoro', '237100'), +('3508', 'Karsi', 'UZB', 'Qashqadaryo', '194100'), +('3509', 'Nukus', 'UZB', 'Karakalpakistan', '194100'), +('3510', 'Kükon', 'UZB', 'Fargona', '190100'), +('3511', 'Fargona', 'UZB', 'Fargona', '180500'), +('3512', 'Circik', 'UZB', 'Toskent', '146400'), +('3513', 'Margilon', 'UZB', 'Fargona', '140800'), +('3514', 'Ürgenc', 'UZB', 'Khorazm', '138900'), +('3515', 'Angren', 'UZB', 'Toskent', '128000'), +('3516', 'Cizah', 'UZB', 'Cizah', '124800'), +('3517', 'Navoi', 'UZB', 'Navoi', '116300'), +('3518', 'Olmalik', 'UZB', 'Toskent', '114900'), +('3519', 'Termiz', 'UZB', 'Surkhondaryo', '109500'), +('3520', 'Minsk', 'BLR', 'Horad Minsk', '1674000'), +('3521', 'Gomel', 'BLR', 'Gomel', '475000'), +('3522', 'Mogiljov', 'BLR', 'Mogiljov', '356000'), +('3523', 'Vitebsk', 'BLR', 'Vitebsk', '340000'), +('3524', 'Grodno', 'BLR', 'Grodno', '302000'), +('3525', 'Brest', 'BLR', 'Brest', '286000'), +('3526', 'Bobruisk', 'BLR', 'Mogiljov', '221000'), +('3527', 'Baranovitši', 'BLR', 'Brest', '167000'), +('3528', 'Borisov', 'BLR', 'Minsk', '151000'), +('3529', 'Pinsk', 'BLR', 'Brest', '130000'), +('3530', 'Orša', 'BLR', 'Vitebsk', '124000'), +('3531', 'Mozyr', 'BLR', 'Gomel', '110000'), +('3532', 'Novopolotsk', 'BLR', 'Vitebsk', '106000'), +('3533', 'Lida', 'BLR', 'Grodno', '101000'), +('3534', 'Soligorsk', 'BLR', 'Minsk', '101000'), +('3535', 'Molodetšno', 'BLR', 'Minsk', '97000'), +('3536', 'Mata-Utu', 'WLF', 'Wallis', '1137'), +('3537', 'Port-Vila', 'VUT', 'Shefa', '33700'), +('3538', 'Cittŕ del Vaticano', 'VAT', '–', '455'), +('3539', 'Caracas', 'VEN', 'Distrito Federal', '1975294'), +('3540', 'Maracaíbo', 'VEN', 'Zulia', '1304776'), +('3541', 'Barquisimeto', 'VEN', 'Lara', '877239'), +('3542', 'Valencia', 'VEN', 'Carabobo', '794246'), +('3543', 'Ciudad Guayana', 'VEN', 'Bolívar', '663713'), +('3544', 'Petare', 'VEN', 'Miranda', '488868'), +('3545', 'Maracay', 'VEN', 'Aragua', '444443'), +('3546', 'Barcelona', 'VEN', 'Anzoátegui', '322267'), +('3547', 'Maturín', 'VEN', 'Monagas', '319726'), +('3548', 'San Cristóbal', 'VEN', 'Táchira', '319373'), +('3549', 'Ciudad Bolívar', 'VEN', 'Bolívar', '301107'), +('3550', 'Cumaná', 'VEN', 'Sucre', '293105'), +('3551', 'Mérida', 'VEN', 'Mérida', '224887'), +('3552', 'Cabimas', 'VEN', 'Zulia', '221329'), +('3553', 'Barinas', 'VEN', 'Barinas', '217831'), +('3554', 'Turmero', 'VEN', 'Aragua', '217499'), +('3555', 'Baruta', 'VEN', 'Miranda', '207290'), +('3556', 'Puerto Cabello', 'VEN', 'Carabobo', '187722'), +('3557', 'Santa Ana de Coro', 'VEN', 'Falcón', '185766'), +('3558', 'Los Teques', 'VEN', 'Miranda', '178784'), +('3559', 'Punto Fijo', 'VEN', 'Falcón', '167215'), +('3560', 'Guarenas', 'VEN', 'Miranda', '165889'), +('3561', 'Acarigua', 'VEN', 'Portuguesa', '158954'), +('3562', 'Puerto La Cruz', 'VEN', 'Anzoátegui', '155700'), +('3563', 'Ciudad Losada', 'VEN', '-', '134501'), +('3564', 'Guacara', 'VEN', 'Carabobo', '131334'), +('3565', 'Valera', 'VEN', 'Trujillo', '130281'), +('3566', 'Guanare', 'VEN', 'Portuguesa', '125621'), +('3567', 'Carúpano', 'VEN', 'Sucre', '119639'), +('3568', 'Catia La Mar', 'VEN', 'Distrito Federal', '117012'), +('3569', 'El Tigre', 'VEN', 'Anzoátegui', '116256'), +('3570', 'Guatire', 'VEN', 'Miranda', '109121'), +('3571', 'Calabozo', 'VEN', 'Guárico', '107146'), +('3572', 'Pozuelos', 'VEN', 'Anzoátegui', '105690'), +('3573', 'Ciudad Ojeda', 'VEN', 'Zulia', '99354'), +('3574', 'Ocumare del Tuy', 'VEN', 'Miranda', '97168'), +('3575', 'Valle de la Pascua', 'VEN', 'Guárico', '95927'), +('3576', 'Araure', 'VEN', 'Portuguesa', '94269'), +('3577', 'San Fernando de Apure', 'VEN', 'Apure', '93809'), +('3578', 'San Felipe', 'VEN', 'Yaracuy', '90940'), +('3579', 'El Limón', 'VEN', 'Aragua', '90000'), +('3580', 'Moscow', 'RUS', 'Moscow (City)', '8389200'), +('3581', 'St Petersburg', 'RUS', 'Pietari', '4694000'), +('3582', 'Novosibirsk', 'RUS', 'Novosibirsk', '1398800'), +('3583', 'Nizni Novgorod', 'RUS', 'Nizni Novgorod', '1357000'), +('3584', 'Jekaterinburg', 'RUS', 'Sverdlovsk', '1266300'), +('3585', 'Samara', 'RUS', 'Samara', '1156100'), +('3586', 'Omsk', 'RUS', 'Omsk', '1148900'), +('3587', 'Kazan', 'RUS', 'Tatarstan', '1101000'), +('3588', 'Ufa', 'RUS', 'Baškortostan', '1091200'), +('3589', 'Tšeljabinsk', 'RUS', 'Tšeljabinsk', '1083200'), +('3590', 'Rostov-na-Donu', 'RUS', 'Rostov-na-Donu', '1012700'), +('3591', 'Perm', 'RUS', 'Perm', '1009700'), +('3592', 'Volgograd', 'RUS', 'Volgograd', '993400'), +('3593', 'Voronez', 'RUS', 'Voronez', '907700'), +('3594', 'Krasnojarsk', 'RUS', 'Krasnojarsk', '875500'), +('3595', 'Saratov', 'RUS', 'Saratov', '874000'), +('3596', 'Toljatti', 'RUS', 'Samara', '722900'), +('3597', 'Uljanovsk', 'RUS', 'Uljanovsk', '667400'), +('3598', 'Izevsk', 'RUS', 'Udmurtia', '652800'), +('3599', 'Krasnodar', 'RUS', 'Krasnodar', '639000'), +('3600', 'Jaroslavl', 'RUS', 'Jaroslavl', '616700'), +('3601', 'Habarovsk', 'RUS', 'Habarovsk', '609400'), +('3602', 'Vladivostok', 'RUS', 'Primorje', '606200'), +('3603', 'Irkutsk', 'RUS', 'Irkutsk', '593700'), +('3604', 'Barnaul', 'RUS', 'Altai', '580100'), +('3605', 'Novokuznetsk', 'RUS', 'Kemerovo', '561600'), +('3606', 'Penza', 'RUS', 'Penza', '532200'), +('3607', 'Rjazan', 'RUS', 'Rjazan', '529900'), +('3608', 'Orenburg', 'RUS', 'Orenburg', '523600'), +('3609', 'Lipetsk', 'RUS', 'Lipetsk', '521000'), +('3610', 'Nabereznyje Tšelny', 'RUS', 'Tatarstan', '514700'), +('3611', 'Tula', 'RUS', 'Tula', '506100'), +('3612', 'Tjumen', 'RUS', 'Tjumen', '503400'), +('3613', 'Kemerovo', 'RUS', 'Kemerovo', '492700'), +('3614', 'Astrahan', 'RUS', 'Astrahan', '486100'), +('3615', 'Tomsk', 'RUS', 'Tomsk', '482100'), +('3616', 'Kirov', 'RUS', 'Kirov', '466200'), +('3617', 'Ivanovo', 'RUS', 'Ivanovo', '459200'), +('3618', 'Tšeboksary', 'RUS', 'Tšuvassia', '459200'), +('3619', 'Brjansk', 'RUS', 'Brjansk', '457400'), +('3620', 'Tver', 'RUS', 'Tver', '454900'), +('3621', 'Kursk', 'RUS', 'Kursk', '443500'), +('3622', 'Magnitogorsk', 'RUS', 'Tšeljabinsk', '427900'), +('3623', 'Kaliningrad', 'RUS', 'Kaliningrad', '424400'), +('3624', 'Nizni Tagil', 'RUS', 'Sverdlovsk', '390900'), +('3625', 'Murmansk', 'RUS', 'Murmansk', '376300'), +('3626', 'Ulan-Ude', 'RUS', 'Burjatia', '370400'), +('3627', 'Kurgan', 'RUS', 'Kurgan', '364700'), +('3628', 'Arkangeli', 'RUS', 'Arkangeli', '361800'), +('3629', 'Sotši', 'RUS', 'Krasnodar', '358600'), +('3630', 'Smolensk', 'RUS', 'Smolensk', '353400'), +('3631', 'Orjol', 'RUS', 'Orjol', '344500'), +('3632', 'Stavropol', 'RUS', 'Stavropol', '343300'), +('3633', 'Belgorod', 'RUS', 'Belgorod', '342000'), +('3634', 'Kaluga', 'RUS', 'Kaluga', '339300'), +('3635', 'Vladimir', 'RUS', 'Vladimir', '337100'), +('3636', 'Mahatškala', 'RUS', 'Dagestan', '332800'), +('3637', 'Tšerepovets', 'RUS', 'Vologda', '324400'), +('3638', 'Saransk', 'RUS', 'Mordva', '314800'), +('3639', 'Tambov', 'RUS', 'Tambov', '312000'), +('3640', 'Vladikavkaz', 'RUS', 'North Ossetia-Alania', '310100'), +('3641', 'Tšita', 'RUS', 'Tšita', '309900'), +('3642', 'Vologda', 'RUS', 'Vologda', '302500'), +('3643', 'Veliki Novgorod', 'RUS', 'Novgorod', '299500'), +('3644', 'Komsomolsk-na-Amure', 'RUS', 'Habarovsk', '291600'), +('3645', 'Kostroma', 'RUS', 'Kostroma', '288100'), +('3646', 'Volzski', 'RUS', 'Volgograd', '286900'), +('3647', 'Taganrog', 'RUS', 'Rostov-na-Donu', '284400'), +('3648', 'Petroskoi', 'RUS', 'Karjala', '282100'), +('3649', 'Bratsk', 'RUS', 'Irkutsk', '277600'), +('3650', 'Dzerzinsk', 'RUS', 'Nizni Novgorod', '277100'), +('3651', 'Surgut', 'RUS', 'Hanti-Mansia', '274900'), +('3652', 'Orsk', 'RUS', 'Orenburg', '273900'), +('3653', 'Sterlitamak', 'RUS', 'Baškortostan', '265200'), +('3654', 'Angarsk', 'RUS', 'Irkutsk', '264700'), +('3655', 'Joškar-Ola', 'RUS', 'Marinmaa', '249200'), +('3656', 'Rybinsk', 'RUS', 'Jaroslavl', '239600'), +('3657', 'Prokopjevsk', 'RUS', 'Kemerovo', '237300'), +('3658', 'Niznevartovsk', 'RUS', 'Hanti-Mansia', '233900'), +('3659', 'Naltšik', 'RUS', 'Kabardi-Balkaria', '233400'), +('3660', 'Syktyvkar', 'RUS', 'Komi', '229700'), +('3661', 'Severodvinsk', 'RUS', 'Arkangeli', '229300'), +('3662', 'Bijsk', 'RUS', 'Altai', '225000'), +('3663', 'Niznekamsk', 'RUS', 'Tatarstan', '223400'), +('3664', 'Blagoveštšensk', 'RUS', 'Amur', '222000'), +('3665', 'Šahty', 'RUS', 'Rostov-na-Donu', '221800'), +('3666', 'Staryi Oskol', 'RUS', 'Belgorod', '213800'), +('3667', 'Zelenograd', 'RUS', 'Moscow (City)', '207100'), +('3668', 'Balakovo', 'RUS', 'Saratov', '206000'), +('3669', 'Novorossijsk', 'RUS', 'Krasnodar', '203300'), +('3670', 'Pihkova', 'RUS', 'Pihkova', '201500'), +('3671', 'Zlatoust', 'RUS', 'Tšeljabinsk', '196900'), +('3672', 'Jakutsk', 'RUS', 'Saha (Jakutia)', '195400'), +('3673', 'Podolsk', 'RUS', 'Moskova', '194300'), +('3674', 'Petropavlovsk-Kamtšatski', 'RUS', 'Kamtšatka', '194100'), +('3675', 'Kamensk-Uralski', 'RUS', 'Sverdlovsk', '190600'), +('3676', 'Engels', 'RUS', 'Saratov', '189000'), +('3677', 'Syzran', 'RUS', 'Samara', '186900'), +('3678', 'Grozny', 'RUS', 'Tšetšenia', '186000'), +('3679', 'Novotšerkassk', 'RUS', 'Rostov-na-Donu', '184400'), +('3680', 'Berezniki', 'RUS', 'Perm', '181900'), +('3681', 'Juzno-Sahalinsk', 'RUS', 'Sahalin', '179200'), +('3682', 'Volgodonsk', 'RUS', 'Rostov-na-Donu', '178200'), +('3683', 'Abakan', 'RUS', 'Hakassia', '169200'), +('3684', 'Maikop', 'RUS', 'Adygea', '167300'), +('3685', 'Miass', 'RUS', 'Tšeljabinsk', '166200'), +('3686', 'Armavir', 'RUS', 'Krasnodar', '164900'), +('3687', 'Ljubertsy', 'RUS', 'Moskova', '163900'), +('3688', 'Rubtsovsk', 'RUS', 'Altai', '162600'), +('3689', 'Kovrov', 'RUS', 'Vladimir', '159900'), +('3690', 'Nahodka', 'RUS', 'Primorje', '157700'), +('3691', 'Ussurijsk', 'RUS', 'Primorje', '157300'), +('3692', 'Salavat', 'RUS', 'Baškortostan', '156800'), +('3693', 'Mytištši', 'RUS', 'Moskova', '155700'), +('3694', 'Kolomna', 'RUS', 'Moskova', '150700'), +('3695', 'Elektrostal', 'RUS', 'Moskova', '147000'), +('3696', 'Murom', 'RUS', 'Vladimir', '142400'), +('3697', 'Kolpino', 'RUS', 'Pietari', '141200'), +('3698', 'Norilsk', 'RUS', 'Krasnojarsk', '140800'), +('3699', 'Almetjevsk', 'RUS', 'Tatarstan', '140700'), +('3700', 'Novomoskovsk', 'RUS', 'Tula', '138100'), +('3701', 'Dimitrovgrad', 'RUS', 'Uljanovsk', '137000'), +('3702', 'Pervouralsk', 'RUS', 'Sverdlovsk', '136100'), +('3703', 'Himki', 'RUS', 'Moskova', '133700'), +('3704', 'Balašiha', 'RUS', 'Moskova', '132900'), +('3705', 'Nevinnomyssk', 'RUS', 'Stavropol', '132600'), +('3706', 'Pjatigorsk', 'RUS', 'Stavropol', '132500'), +('3707', 'Korolev', 'RUS', 'Moskova', '132400'), +('3708', 'Serpuhov', 'RUS', 'Moskova', '132000'), +('3709', 'Odintsovo', 'RUS', 'Moskova', '127400'), +('3710', 'Orehovo-Zujevo', 'RUS', 'Moskova', '124900'), +('3711', 'Kamyšin', 'RUS', 'Volgograd', '124600'), +('3712', 'Novotšeboksarsk', 'RUS', 'Tšuvassia', '123400'), +('3713', 'Tšerkessk', 'RUS', 'Karatšai-Tšerkessia', '121700'), +('3714', 'Atšinsk', 'RUS', 'Krasnojarsk', '121600'), +('3715', 'Magadan', 'RUS', 'Magadan', '121000'), +('3716', 'Mitšurinsk', 'RUS', 'Tambov', '120700'), +('3717', 'Kislovodsk', 'RUS', 'Stavropol', '120400'), +('3718', 'Jelets', 'RUS', 'Lipetsk', '119400'), +('3719', 'Seversk', 'RUS', 'Tomsk', '118600'), +('3720', 'Noginsk', 'RUS', 'Moskova', '117200'), +('3721', 'Velikije Luki', 'RUS', 'Pihkova', '116300'), +('3722', 'Novokuibyševsk', 'RUS', 'Samara', '116200'), +('3723', 'Neftekamsk', 'RUS', 'Baškortostan', '115700'), +('3724', 'Leninsk-Kuznetski', 'RUS', 'Kemerovo', '113800'), +('3725', 'Oktjabrski', 'RUS', 'Baškortostan', '111500'), +('3726', 'Sergijev Posad', 'RUS', 'Moskova', '111100'), +('3727', 'Arzamas', 'RUS', 'Nizni Novgorod', '110700'), +('3728', 'Kiseljovsk', 'RUS', 'Kemerovo', '110000'), +('3729', 'Novotroitsk', 'RUS', 'Orenburg', '109600'), +('3730', 'Obninsk', 'RUS', 'Kaluga', '108300'), +('3731', 'Kansk', 'RUS', 'Krasnojarsk', '107400'), +('3732', 'Glazov', 'RUS', 'Udmurtia', '106300'), +('3733', 'Solikamsk', 'RUS', 'Perm', '106000'), +('3734', 'Sarapul', 'RUS', 'Udmurtia', '105700'), +('3735', 'Ust-Ilimsk', 'RUS', 'Irkutsk', '105200'), +('3736', 'Štšolkovo', 'RUS', 'Moskova', '104900'), +('3737', 'Mezduretšensk', 'RUS', 'Kemerovo', '104400'), +('3738', 'Usolje-Sibirskoje', 'RUS', 'Irkutsk', '103500'), +('3739', 'Elista', 'RUS', 'Kalmykia', '103300'), +('3740', 'Novošahtinsk', 'RUS', 'Rostov-na-Donu', '101900'), +('3741', 'Votkinsk', 'RUS', 'Udmurtia', '101700'), +('3742', 'Kyzyl', 'RUS', 'Tyva', '101100'), +('3743', 'Serov', 'RUS', 'Sverdlovsk', '100400'), +('3744', 'Zelenodolsk', 'RUS', 'Tatarstan', '100200'), +('3745', 'Zeleznodoroznyi', 'RUS', 'Moskova', '100100'), +('3746', 'Kinešma', 'RUS', 'Ivanovo', '100000'), +('3747', 'Kuznetsk', 'RUS', 'Penza', '98200'), +('3748', 'Uhta', 'RUS', 'Komi', '98000'), +('3749', 'Jessentuki', 'RUS', 'Stavropol', '97900'), +('3750', 'Tobolsk', 'RUS', 'Tjumen', '97600'), +('3751', 'Neftejugansk', 'RUS', 'Hanti-Mansia', '97400'), +('3752', 'Bataisk', 'RUS', 'Rostov-na-Donu', '97300'), +('3753', 'Nojabrsk', 'RUS', 'Yamalin Nenetsia', '97300'), +('3754', 'Balašov', 'RUS', 'Saratov', '97100'), +('3755', 'Zeleznogorsk', 'RUS', 'Kursk', '96900'), +('3756', 'Zukovski', 'RUS', 'Moskova', '96500'), +('3757', 'Anzero-Sudzensk', 'RUS', 'Kemerovo', '96100'), +('3758', 'Bugulma', 'RUS', 'Tatarstan', '94100'), +('3759', 'Zeleznogorsk', 'RUS', 'Krasnojarsk', '94000'), +('3760', 'Novouralsk', 'RUS', 'Sverdlovsk', '93300'), +('3761', 'Puškin', 'RUS', 'Pietari', '92900'), +('3762', 'Vorkuta', 'RUS', 'Komi', '92600'), +('3763', 'Derbent', 'RUS', 'Dagestan', '92300'), +('3764', 'Kirovo-Tšepetsk', 'RUS', 'Kirov', '91600'), +('3765', 'Krasnogorsk', 'RUS', 'Moskova', '91000'), +('3766', 'Klin', 'RUS', 'Moskova', '90000'), +('3767', 'Tšaikovski', 'RUS', 'Perm', '90000'), +('3768', 'Novyi Urengoi', 'RUS', 'Yamalin Nenetsia', '89800'), +('3769', 'Ho Chi Minh City', 'VNM', 'Ho Chi Minh City', '3980000'), +('3770', 'Hanoi', 'VNM', 'Hanoi', '1410000'), +('3771', 'Haiphong', 'VNM', 'Haiphong', '783133'), +('3772', 'Da Nang', 'VNM', 'Quang Nam-Da Nang', '382674'), +('3773', 'Bięn Hoa', 'VNM', 'Dong Nai', '282095'), +('3774', 'Nha Trang', 'VNM', 'Khanh Hoa', '221331'), +('3775', 'Hue', 'VNM', 'Thua Thien-Hue', '219149'), +('3776', 'Can Tho', 'VNM', 'Can Tho', '215587'), +('3777', 'Cam Pha', 'VNM', 'Quang Binh', '209086'), +('3778', 'Nam Dinh', 'VNM', 'Nam Ha', '171699'), +('3779', 'Quy Nhon', 'VNM', 'Binh Dinh', '163385'), +('3780', 'Vung Tau', 'VNM', 'Ba Ria-Vung Tau', '145145'), +('3781', 'Rach Gia', 'VNM', 'Kien Giang', '141132'), +('3782', 'Long Xuyen', 'VNM', 'An Giang', '132681'), +('3783', 'Thai Nguyen', 'VNM', 'Bac Thai', '127643'), +('3784', 'Hong Gai', 'VNM', 'Quang Ninh', '127484'), +('3785', 'Phan Thięt', 'VNM', 'Binh Thuan', '114236'), +('3786', 'Cam Ranh', 'VNM', 'Khanh Hoa', '114041'), +('3787', 'Vinh', 'VNM', 'Nghe An', '112455'), +('3788', 'My Tho', 'VNM', 'Tien Giang', '108404'), +('3789', 'Da Lat', 'VNM', 'Lam Dong', '106409'), +('3790', 'Buon Ma Thuot', 'VNM', 'Dac Lac', '97044'), +('3791', 'Tallinn', 'EST', 'Harjumaa', '403981'), +('3792', 'Tartu', 'EST', 'Tartumaa', '101246'), +('3793', 'New York', 'USA', 'New York', '8008278'), +('3794', 'Los Angeles', 'USA', 'California', '3694820'), +('3795', 'Chicago', 'USA', 'Illinois', '2896016'), +('3796', 'Houston', 'USA', 'Texas', '1953631'), +('3797', 'Philadelphia', 'USA', 'Pennsylvania', '1517550'), +('3798', 'Phoenix', 'USA', 'Arizona', '1321045'), +('3799', 'San Diego', 'USA', 'California', '1223400'), +('3800', 'Dallas', 'USA', 'Texas', '1188580'), +('3801', 'San Antonio', 'USA', 'Texas', '1144646'), +('3802', 'Detroit', 'USA', 'Michigan', '951270'), +('3803', 'San Jose', 'USA', 'California', '894943'), +('3804', 'Indianapolis', 'USA', 'Indiana', '791926'), +('3805', 'San Francisco', 'USA', 'California', '776733'), +('3806', 'Jacksonville', 'USA', 'Florida', '735167'), +('3807', 'Columbus', 'USA', 'Ohio', '711470'), +('3808', 'Austin', 'USA', 'Texas', '656562'), +('3809', 'Baltimore', 'USA', 'Maryland', '651154'), +('3810', 'Memphis', 'USA', 'Tennessee', '650100'), +('3811', 'Milwaukee', 'USA', 'Wisconsin', '596974'), +('3812', 'Boston', 'USA', 'Massachusetts', '589141'), +('3813', 'Washington', 'USA', 'District of Columbia', '572059'), +('3814', 'Nashville-Davidson', 'USA', 'Tennessee', '569891'), +('3815', 'El Paso', 'USA', 'Texas', '563662'), +('3816', 'Seattle', 'USA', 'Washington', '563374'), +('3817', 'Denver', 'USA', 'Colorado', '554636'), +('3818', 'Charlotte', 'USA', 'North Carolina', '540828'), +('3819', 'Fort Worth', 'USA', 'Texas', '534694'), +('3820', 'Portland', 'USA', 'Oregon', '529121'), +('3821', 'Oklahoma City', 'USA', 'Oklahoma', '506132'), +('3822', 'Tucson', 'USA', 'Arizona', '486699'), +('3823', 'New Orleans', 'USA', 'Louisiana', '484674'), +('3824', 'Las Vegas', 'USA', 'Nevada', '478434'), +('3825', 'Cleveland', 'USA', 'Ohio', '478403'), +('3826', 'Long Beach', 'USA', 'California', '461522'), +('3827', 'Albuquerque', 'USA', 'New Mexico', '448607'), +('3828', 'Kansas City', 'USA', 'Missouri', '441545'), +('3829', 'Fresno', 'USA', 'California', '427652'), +('3830', 'Virginia Beach', 'USA', 'Virginia', '425257'), +('3831', 'Atlanta', 'USA', 'Georgia', '416474'), +('3832', 'Sacramento', 'USA', 'California', '407018'), +('3833', 'Oakland', 'USA', 'California', '399484'), +('3834', 'Mesa', 'USA', 'Arizona', '396375'), +('3835', 'Tulsa', 'USA', 'Oklahoma', '393049'), +('3836', 'Omaha', 'USA', 'Nebraska', '390007'), +('3837', 'Minneapolis', 'USA', 'Minnesota', '382618'), +('3838', 'Honolulu', 'USA', 'Hawaii', '371657'), +('3839', 'Miami', 'USA', 'Florida', '362470'), +('3840', 'Colorado Springs', 'USA', 'Colorado', '360890'), +('3841', 'Saint Louis', 'USA', 'Missouri', '348189'), +('3842', 'Wichita', 'USA', 'Kansas', '344284'), +('3843', 'Santa Ana', 'USA', 'California', '337977'), +('3844', 'Pittsburgh', 'USA', 'Pennsylvania', '334563'), +('3845', 'Arlington', 'USA', 'Texas', '332969'), +('3846', 'Cincinnati', 'USA', 'Ohio', '331285'), +('3847', 'Anaheim', 'USA', 'California', '328014'), +('3848', 'Toledo', 'USA', 'Ohio', '313619'), +('3849', 'Tampa', 'USA', 'Florida', '303447'), +('3850', 'Buffalo', 'USA', 'New York', '292648'), +('3851', 'Saint Paul', 'USA', 'Minnesota', '287151'), +('3852', 'Corpus Christi', 'USA', 'Texas', '277454'), +('3853', 'Aurora', 'USA', 'Colorado', '276393'), +('3854', 'Raleigh', 'USA', 'North Carolina', '276093'), +('3855', 'Newark', 'USA', 'New Jersey', '273546'), +('3856', 'Lexington-Fayette', 'USA', 'Kentucky', '260512'), +('3857', 'Anchorage', 'USA', 'Alaska', '260283'), +('3858', 'Louisville', 'USA', 'Kentucky', '256231'), +('3859', 'Riverside', 'USA', 'California', '255166'), +('3860', 'Saint Petersburg', 'USA', 'Florida', '248232'), +('3861', 'Bakersfield', 'USA', 'California', '247057'), +('3862', 'Stockton', 'USA', 'California', '243771'), +('3863', 'Birmingham', 'USA', 'Alabama', '242820'), +('3864', 'Jersey City', 'USA', 'New Jersey', '240055'), +('3865', 'Norfolk', 'USA', 'Virginia', '234403'), +('3866', 'Baton Rouge', 'USA', 'Louisiana', '227818'), +('3867', 'Hialeah', 'USA', 'Florida', '226419'), +('3868', 'Lincoln', 'USA', 'Nebraska', '225581'), +('3869', 'Greensboro', 'USA', 'North Carolina', '223891'), +('3870', 'Plano', 'USA', 'Texas', '222030'), +('3871', 'Rochester', 'USA', 'New York', '219773'), +('3872', 'Glendale', 'USA', 'Arizona', '218812'), +('3873', 'Akron', 'USA', 'Ohio', '217074'), +('3874', 'Garland', 'USA', 'Texas', '215768'), +('3875', 'Madison', 'USA', 'Wisconsin', '208054'), +('3876', 'Fort Wayne', 'USA', 'Indiana', '205727'), +('3877', 'Fremont', 'USA', 'California', '203413'), +('3878', 'Scottsdale', 'USA', 'Arizona', '202705'), +('3879', 'Montgomery', 'USA', 'Alabama', '201568'), +('3880', 'Shreveport', 'USA', 'Louisiana', '200145'), +('3881', 'Augusta-Richmond County', 'USA', 'Georgia', '199775'), +('3882', 'Lubbock', 'USA', 'Texas', '199564'), +('3883', 'Chesapeake', 'USA', 'Virginia', '199184'), +('3884', 'Mobile', 'USA', 'Alabama', '198915'), +('3885', 'Des Moines', 'USA', 'Iowa', '198682'), +('3886', 'Grand Rapids', 'USA', 'Michigan', '197800'), +('3887', 'Richmond', 'USA', 'Virginia', '197790'), +('3888', 'Yonkers', 'USA', 'New York', '196086'), +('3889', 'Spokane', 'USA', 'Washington', '195629'), +('3890', 'Glendale', 'USA', 'California', '194973'), +('3891', 'Tacoma', 'USA', 'Washington', '193556'), +('3892', 'Irving', 'USA', 'Texas', '191615'), +('3893', 'Huntington Beach', 'USA', 'California', '189594'), +('3894', 'Modesto', 'USA', 'California', '188856'), +('3895', 'Durham', 'USA', 'North Carolina', '187035'), +('3896', 'Columbus', 'USA', 'Georgia', '186291'), +('3897', 'Orlando', 'USA', 'Florida', '185951'), +('3898', 'Boise City', 'USA', 'Idaho', '185787'), +('3899', 'Winston-Salem', 'USA', 'North Carolina', '185776'), +('3900', 'San Bernardino', 'USA', 'California', '185401'), +('3901', 'Jackson', 'USA', 'Mississippi', '184256'), +('3902', 'Little Rock', 'USA', 'Arkansas', '183133'), +('3903', 'Salt Lake City', 'USA', 'Utah', '181743'), +('3904', 'Reno', 'USA', 'Nevada', '180480'), +('3905', 'Newport News', 'USA', 'Virginia', '180150'), +('3906', 'Chandler', 'USA', 'Arizona', '176581'), +('3907', 'Laredo', 'USA', 'Texas', '176576'), +('3908', 'Henderson', 'USA', 'Nevada', '175381'), +('3909', 'Arlington', 'USA', 'Virginia', '174838'), +('3910', 'Knoxville', 'USA', 'Tennessee', '173890'), +('3911', 'Amarillo', 'USA', 'Texas', '173627'), +('3912', 'Providence', 'USA', 'Rhode Island', '173618'), +('3913', 'Chula Vista', 'USA', 'California', '173556'), +('3914', 'Worcester', 'USA', 'Massachusetts', '172648'), +('3915', 'Oxnard', 'USA', 'California', '170358'), +('3916', 'Dayton', 'USA', 'Ohio', '166179'), +('3917', 'Garden Grove', 'USA', 'California', '165196'), +('3918', 'Oceanside', 'USA', 'California', '161029'), +('3919', 'Tempe', 'USA', 'Arizona', '158625'), +('3920', 'Huntsville', 'USA', 'Alabama', '158216'), +('3921', 'Ontario', 'USA', 'California', '158007'), +('3922', 'Chattanooga', 'USA', 'Tennessee', '155554'), +('3923', 'Fort Lauderdale', 'USA', 'Florida', '152397'), +('3924', 'Springfield', 'USA', 'Massachusetts', '152082'), +('3925', 'Springfield', 'USA', 'Missouri', '151580'), +('3926', 'Santa Clarita', 'USA', 'California', '151088'), +('3927', 'Salinas', 'USA', 'California', '151060'), +('3928', 'Tallahassee', 'USA', 'Florida', '150624'), +('3929', 'Rockford', 'USA', 'Illinois', '150115'), +('3930', 'Pomona', 'USA', 'California', '149473'), +('3931', 'Metairie', 'USA', 'Louisiana', '149428'), +('3932', 'Paterson', 'USA', 'New Jersey', '149222'), +('3933', 'Overland Park', 'USA', 'Kansas', '149080'), +('3934', 'Santa Rosa', 'USA', 'California', '147595'), +('3935', 'Syracuse', 'USA', 'New York', '147306'), +('3936', 'Kansas City', 'USA', 'Kansas', '146866'), +('3937', 'Hampton', 'USA', 'Virginia', '146437'), +('3938', 'Lakewood', 'USA', 'Colorado', '144126'), +('3939', 'Vancouver', 'USA', 'Washington', '143560'), +('3940', 'Irvine', 'USA', 'California', '143072'), +('3941', 'Aurora', 'USA', 'Illinois', '142990'), +('3942', 'Moreno Valley', 'USA', 'California', '142381'), +('3943', 'Pasadena', 'USA', 'California', '141674'), +('3944', 'Hayward', 'USA', 'California', '140030'), +('3945', 'Brownsville', 'USA', 'Texas', '139722'), +('3946', 'Bridgeport', 'USA', 'Connecticut', '139529'), +('3947', 'Hollywood', 'USA', 'Florida', '139357'), +('3948', 'Warren', 'USA', 'Michigan', '138247'), +('3949', 'Torrance', 'USA', 'California', '137946'), +('3950', 'Eugene', 'USA', 'Oregon', '137893'), +('3951', 'Pembroke Pines', 'USA', 'Florida', '137427'), +('3952', 'Salem', 'USA', 'Oregon', '136924'), +('3953', 'Pasadena', 'USA', 'Texas', '133936'), +('3954', 'Escondido', 'USA', 'California', '133559'), +('3955', 'Sunnyvale', 'USA', 'California', '131760'), +('3956', 'Savannah', 'USA', 'Georgia', '131510'), +('3957', 'Fontana', 'USA', 'California', '128929'), +('3958', 'Orange', 'USA', 'California', '128821'), +('3959', 'Naperville', 'USA', 'Illinois', '128358'), +('3960', 'Alexandria', 'USA', 'Virginia', '128283'), +('3961', 'Rancho Cucamonga', 'USA', 'California', '127743'), +('3962', 'Grand Prairie', 'USA', 'Texas', '127427'), +('3963', 'East Los Angeles', 'USA', 'California', '126379'), +('3964', 'Fullerton', 'USA', 'California', '126003'), +('3965', 'Corona', 'USA', 'California', '124966'), +('3966', 'Flint', 'USA', 'Michigan', '124943'), +('3967', 'Paradise', 'USA', 'Nevada', '124682'), +('3968', 'Mesquite', 'USA', 'Texas', '124523'), +('3969', 'Sterling Heights', 'USA', 'Michigan', '124471'), +('3970', 'Sioux Falls', 'USA', 'South Dakota', '123975'), +('3971', 'New Haven', 'USA', 'Connecticut', '123626'), +('3972', 'Topeka', 'USA', 'Kansas', '122377'), +('3973', 'Concord', 'USA', 'California', '121780'), +('3974', 'Evansville', 'USA', 'Indiana', '121582'), +('3975', 'Hartford', 'USA', 'Connecticut', '121578'), +('3976', 'Fayetteville', 'USA', 'North Carolina', '121015'), +('3977', 'Cedar Rapids', 'USA', 'Iowa', '120758'), +('3978', 'Elizabeth', 'USA', 'New Jersey', '120568'), +('3979', 'Lansing', 'USA', 'Michigan', '119128'), +('3980', 'Lancaster', 'USA', 'California', '118718'), +('3981', 'Fort Collins', 'USA', 'Colorado', '118652'), +('3982', 'Coral Springs', 'USA', 'Florida', '117549'), +('3983', 'Stamford', 'USA', 'Connecticut', '117083'), +('3984', 'Thousand Oaks', 'USA', 'California', '117005'), +('3985', 'Vallejo', 'USA', 'California', '116760'), +('3986', 'Palmdale', 'USA', 'California', '116670'), +('3987', 'Columbia', 'USA', 'South Carolina', '116278'), +('3988', 'El Monte', 'USA', 'California', '115965'), +('3989', 'Abilene', 'USA', 'Texas', '115930'), +('3990', 'North Las Vegas', 'USA', 'Nevada', '115488'), +('3991', 'Ann Arbor', 'USA', 'Michigan', '114024'), +('3992', 'Beaumont', 'USA', 'Texas', '113866'), +('3993', 'Waco', 'USA', 'Texas', '113726'), +('3994', 'Macon', 'USA', 'Georgia', '113336'), +('3995', 'Independence', 'USA', 'Missouri', '113288'), +('3996', 'Peoria', 'USA', 'Illinois', '112936'), +('3997', 'Inglewood', 'USA', 'California', '112580'), +('3998', 'Springfield', 'USA', 'Illinois', '111454'), +('3999', 'Simi Valley', 'USA', 'California', '111351'); + +INSERT INTO city (id, name, countrycode, district, population) VALUES +('4000', 'Lafayette', 'USA', 'Louisiana', '110257'), +('4001', 'Gilbert', 'USA', 'Arizona', '109697'), +('4002', 'Carrollton', 'USA', 'Texas', '109576'), +('4003', 'Bellevue', 'USA', 'Washington', '109569'), +('4004', 'West Valley City', 'USA', 'Utah', '108896'), +('4005', 'Clarksville', 'USA', 'Tennessee', '108787'), +('4006', 'Costa Mesa', 'USA', 'California', '108724'), +('4007', 'Peoria', 'USA', 'Arizona', '108364'), +('4008', 'South Bend', 'USA', 'Indiana', '107789'), +('4009', 'Downey', 'USA', 'California', '107323'), +('4010', 'Waterbury', 'USA', 'Connecticut', '107271'), +('4011', 'Manchester', 'USA', 'New Hampshire', '107006'), +('4012', 'Allentown', 'USA', 'Pennsylvania', '106632'), +('4013', 'McAllen', 'USA', 'Texas', '106414'), +('4014', 'Joliet', 'USA', 'Illinois', '106221'), +('4015', 'Lowell', 'USA', 'Massachusetts', '105167'), +('4016', 'Provo', 'USA', 'Utah', '105166'), +('4017', 'West Covina', 'USA', 'California', '105080'), +('4018', 'Wichita Falls', 'USA', 'Texas', '104197'), +('4019', 'Erie', 'USA', 'Pennsylvania', '103717'), +('4020', 'Daly City', 'USA', 'California', '103621'), +('4021', 'Citrus Heights', 'USA', 'California', '103455'), +('4022', 'Norwalk', 'USA', 'California', '103298'), +('4023', 'Gary', 'USA', 'Indiana', '102746'), +('4024', 'Berkeley', 'USA', 'California', '102743'), +('4025', 'Santa Clara', 'USA', 'California', '102361'), +('4026', 'Green Bay', 'USA', 'Wisconsin', '102313'), +('4027', 'Cape Coral', 'USA', 'Florida', '102286'), +('4028', 'Arvada', 'USA', 'Colorado', '102153'), +('4029', 'Pueblo', 'USA', 'Colorado', '102121'), +('4030', 'Sandy', 'USA', 'Utah', '101853'), +('4031', 'Athens-Clarke County', 'USA', 'Georgia', '101489'), +('4032', 'Cambridge', 'USA', 'Massachusetts', '101355'), +('4033', 'Westminster', 'USA', 'Colorado', '100940'), +('4034', 'San Buenaventura', 'USA', 'California', '100916'), +('4035', 'Portsmouth', 'USA', 'Virginia', '100565'), +('4036', 'Livonia', 'USA', 'Michigan', '100545'), +('4037', 'Burbank', 'USA', 'California', '100316'), +('4038', 'Clearwater', 'USA', 'Florida', '99936'), +('4039', 'Midland', 'USA', 'Texas', '98293'), +('4040', 'Davenport', 'USA', 'Iowa', '98256'), +('4041', 'Mission Viejo', 'USA', 'California', '98049'), +('4042', 'Miami Beach', 'USA', 'Florida', '97855'), +('4043', 'Sunrise Manor', 'USA', 'Nevada', '95362'), +('4044', 'New Bedford', 'USA', 'Massachusetts', '94780'), +('4045', 'El Cajon', 'USA', 'California', '94578'), +('4046', 'Norman', 'USA', 'Oklahoma', '94193'), +('4047', 'Richmond', 'USA', 'California', '94100'), +('4048', 'Albany', 'USA', 'New York', '93994'), +('4049', 'Brockton', 'USA', 'Massachusetts', '93653'), +('4050', 'Roanoke', 'USA', 'Virginia', '93357'), +('4051', 'Billings', 'USA', 'Montana', '92988'), +('4052', 'Compton', 'USA', 'California', '92864'), +('4053', 'Gainesville', 'USA', 'Florida', '92291'), +('4054', 'Fairfield', 'USA', 'California', '92256'), +('4055', 'Arden-Arcade', 'USA', 'California', '92040'), +('4056', 'San Mateo', 'USA', 'California', '91799'), +('4057', 'Visalia', 'USA', 'California', '91762'), +('4058', 'Boulder', 'USA', 'Colorado', '91238'), +('4059', 'Cary', 'USA', 'North Carolina', '91213'), +('4060', 'Santa Monica', 'USA', 'California', '91084'), +('4061', 'Fall River', 'USA', 'Massachusetts', '90555'), +('4062', 'Kenosha', 'USA', 'Wisconsin', '89447'), +('4063', 'Elgin', 'USA', 'Illinois', '89408'), +('4064', 'Odessa', 'USA', 'Texas', '89293'), +('4065', 'Carson', 'USA', 'California', '89089'), +('4066', 'Charleston', 'USA', 'South Carolina', '89063'), +('4067', 'Charlotte Amalie', 'VIR', 'St Thomas', '13000'), +('4068', 'Harare', 'ZWE', 'Harare', '1410000'), +('4069', 'Bulawayo', 'ZWE', 'Bulawayo', '621742'), +('4070', 'Chitungwiza', 'ZWE', 'Harare', '274912'), +('4071', 'Mount Darwin', 'ZWE', 'Harare', '164362'), +('4072', 'Mutare', 'ZWE', 'Manicaland', '131367'), +('4073', 'Gweru', 'ZWE', 'Midlands', '128037'), +('4074', 'Gaza', 'PSE', 'Gaza', '353632'), +('4075', 'Khan Yunis', 'PSE', 'Khan Yunis', '123175'), +('4076', 'Hebron', 'PSE', 'Hebron', '119401'), +('4077', 'Jabaliya', 'PSE', 'North Gaza', '113901'), +('4078', 'Nablus', 'PSE', 'Nablus', '100231'), +('4079', 'Rafah', 'PSE', 'Rafah', '92020'); + +-- +-- Data for Name: country; Type: TABLE DATA; Schema: public; Owner: chriskl +-- +INSERT INTO country (code, name, continent, region, surfacearea, indepyear, population, lifeexpectancy, gnp, gnpold, localname, governmentform, headofstate, capital, code2) VALUES +('AFG', 'Afghanistan', 'Asia', 'Southern and Central Asia', '652090', '1919', '22720000', '45.900002', '5976.00', NULL, 'Afganistan/Afqanestan', 'Islamic Emirate', 'Mohammad Omar', '1', 'AF'), +('NLD', 'Netherlands', 'Europe', 'Western Europe', '41526', '1581', '15864000', '78.300003', '371362.00', '360478.00', 'Nederland', 'Constitutional Monarchy', 'Beatrix', '5', 'NL'), +('ANT', 'Netherlands Antilles', 'North America', 'Caribbean', '800', NULL, '217000', '74.699997', '1941.00', NULL, 'Nederlandse Antillen', 'Nonmetropolitan Territory of The Netherlands', 'Beatrix', '33', 'AN'), +('ALB', 'Albania', 'Europe', 'Southern Europe', '28748', '1912', '3401200', '71.599998', '3205.00', '2500.00', 'Shqipëria', 'Republic', 'Rexhep Mejdani', '34', 'AL'), +('DZA', 'Algeria', 'Africa', 'Northern Africa', '2381741', '1962', '31471000', '69.699997', '49982.00', '46966.00', 'Al-Jaza’ir/Algérie', 'Republic', 'Abdelaziz Bouteflika', '35', 'DZ'), +('ASM', 'American Samoa', 'Oceania', 'Polynesia', '199', NULL, '68000', '75.099998', '334.00', NULL, 'Amerika Samoa', 'US Territory', 'George W. Bush', '54', 'AS'), +('AND', 'Andorra', 'Europe', 'Southern Europe', '468', '1278', '78000', '83.5', '1630.00', NULL, 'Andorra', 'Parliamentary Coprincipality', '', '55', 'AD'), +('AGO', 'Angola', 'Africa', 'Central Africa', '1246700', '1975', '12878000', '38.299999', '6648.00', '7984.00', 'Angola', 'Republic', 'José Eduardo dos Santos', '56', 'AO'), +('AIA', 'Anguilla', 'North America', 'Caribbean', '96', NULL, '8000', '76.099998', '63.20', NULL, 'Anguilla', 'Dependent Territory of the UK', 'Elisabeth II', '62', 'AI'), +('ATG', 'Antigua and Barbuda', 'North America', 'Caribbean', '442', '1981', '68000', '70.5', '612.00', '584.00', 'Antigua and Barbuda', 'Constitutional Monarchy', 'Elisabeth II', '63', 'AG'), +('ARE', 'United Arab Emirates', 'Asia', 'Middle East', '83600', '1971', '2441000', '74.099998', '37966.00', '36846.00', 'Al-Imarat al-´Arabiya al-Muttahida', 'Emirate Federation', 'Zayid bin Sultan al-Nahayan', '65', 'AE'), +('ARG', 'Argentina', 'South America', 'South America', '2780400', '1816', '37032000', '75.099998', '340238.00', '323310.00', 'Argentina', 'Federal Republic', 'Fernando de la Rúa', '69', 'AR'), +('ARM', 'Armenia', 'Asia', 'Middle East', '29800', '1991', '3520000', '66.400002', '1813.00', '1627.00', 'Hajastan', 'Republic', 'Robert Kotšarjan', '126', 'AM'), +('ABW', 'Aruba', 'North America', 'Caribbean', '193', NULL, '103000', '78.400002', '828.00', '793.00', 'Aruba', 'Nonmetropolitan Territory of The Netherlands', 'Beatrix', '129', 'AW'), +('AUS', 'Australia', 'Oceania', 'Australia and New Zealand', '7741220', '1901', '18886000', '79.800003', '351182.00', '392911.00', 'Australia', 'Constitutional Monarchy, Federation', 'Elisabeth II', '135', 'AU'), +('AZE', 'Azerbaijan', 'Asia', 'Middle East', '86600', '1991', '7734000', '62.900002', '4127.00', '4100.00', 'Azärbaycan', 'Federal Republic', 'Heydär Äliyev', '144', 'AZ'), +('BHS', 'Bahamas', 'North America', 'Caribbean', '13878', '1973', '307000', '71.099998', '3527.00', '3347.00', 'The Bahamas', 'Constitutional Monarchy', 'Elisabeth II', '148', 'BS'), +('BHR', 'Bahrain', 'Asia', 'Middle East', '694', '1971', '617000', '73', '6366.00', '6097.00', 'Al-Bahrayn', 'Monarchy (Emirate)', 'Hamad ibn Isa al-Khalifa', '149', 'BH'), +('BGD', 'Bangladesh', 'Asia', 'Southern and Central Asia', '143998', '1971', '129155000', '60.200001', '32852.00', '31966.00', 'Bangladesh', 'Republic', 'Shahabuddin Ahmad', '150', 'BD'), +('BRB', 'Barbados', 'North America', 'Caribbean', '430', '1966', '270000', '73', '2223.00', '2186.00', 'Barbados', 'Constitutional Monarchy', 'Elisabeth II', '174', 'BB'), +('BEL', 'Belgium', 'Europe', 'Western Europe', '30518', '1830', '10239000', '77.800003', '249704.00', '243948.00', 'België/Belgique', 'Constitutional Monarchy, Federation', 'Albert II', '179', 'BE'), +('BLZ', 'Belize', 'North America', 'Central America', '22696', '1981', '241000', '70.900002', '630.00', '616.00', 'Belize', 'Constitutional Monarchy', 'Elisabeth II', '185', 'BZ'), +('BEN', 'Benin', 'Africa', 'Western Africa', '112622', '1960', '6097000', '50.200001', '2357.00', '2141.00', 'Bénin', 'Republic', 'Mathieu Kérékou', '187', 'BJ'), +('BMU', 'Bermuda', 'North America', 'North America', '53', NULL, '65000', '76.900002', '2328.00', '2190.00', 'Bermuda', 'Dependent Territory of the UK', 'Elisabeth II', '191', 'BM'), +('BTN', 'Bhutan', 'Asia', 'Southern and Central Asia', '47000', '1910', '2124000', '52.400002', '372.00', '383.00', 'Druk-Yul', 'Monarchy', 'Jigme Singye Wangchuk', '192', 'BT'), +('BOL', 'Bolivia', 'South America', 'South America', '1098581', '1825', '8329000', '63.700001', '8571.00', '7967.00', 'Bolivia', 'Republic', 'Hugo Bánzer Suárez', '194', 'BO'), +('BIH', 'Bosnia and Herzegovina', 'Europe', 'Southern Europe', '51197', '1992', '3972000', '71.5', '2841.00', NULL, 'Bosna i Hercegovina', 'Federal Republic', 'Ante Jelavic', '201', 'BA'), +('BWA', 'Botswana', 'Africa', 'Southern Africa', '581730', '1966', '1622000', '39.299999', '4834.00', '4935.00', 'Botswana', 'Republic', 'Festus G. Mogae', '204', 'BW'), +('BRA', 'Brazil', 'South America', 'South America', '8547403', '1822', '170115000', '62.900002', '776739.00', '804108.00', 'Brasil', 'Federal Republic', 'Fernando Henrique Cardoso', '211', 'BR'), +('GBR', 'United Kingdom', 'Europe', 'British Islands', '242900', '1066', '59623400', '77.699997', '1378330.00', '1296830.00', 'United Kingdom', 'Constitutional Monarchy', 'Elisabeth II', '456', 'GB'), +('VGB', 'Virgin Islands, British', 'North America', 'Caribbean', '151', NULL, '21000', '75.400002', '612.00', '573.00', 'British Virgin Islands', 'Dependent Territory of the UK', 'Elisabeth II', '537', 'VG'), +('BRN', 'Brunei', 'Asia', 'Southeast Asia', '5765', '1984', '328000', '73.599998', '11705.00', '12460.00', 'Brunei Darussalam', 'Monarchy (Sultanate)', 'Haji Hassan al-Bolkiah', '538', 'BN'), +('BGR', 'Bulgaria', 'Europe', 'Eastern Europe', '110994', '1908', '8190900', '70.900002', '12178.00', '10169.00', 'Balgarija', 'Republic', 'Petar Stojanov', '539', 'BG'), +('BFA', 'Burkina Faso', 'Africa', 'Western Africa', '274000', '1960', '11937000', '46.700001', '2425.00', '2201.00', 'Burkina Faso', 'Republic', 'Blaise Compaoré', '549', 'BF'), +('BDI', 'Burundi', 'Africa', 'Eastern Africa', '27834', '1962', '6695000', '46.200001', '903.00', '982.00', 'Burundi/Uburundi', 'Republic', 'Pierre Buyoya', '552', 'BI'), +('CYM', 'Cayman Islands', 'North America', 'Caribbean', '264', NULL, '38000', '78.900002', '1263.00', '1186.00', 'Cayman Islands', 'Dependent Territory of the UK', 'Elisabeth II', '553', 'KY'), +('CHL', 'Chile', 'South America', 'South America', '756626', '1810', '15211000', '75.699997', '72949.00', '75780.00', 'Chile', 'Republic', 'Ricardo Lagos Escobar', '554', 'CL'), +('COK', 'Cook Islands', 'Oceania', 'Polynesia', '236', NULL, '20000', '71.099998', '100.00', NULL, 'The Cook Islands', 'Nonmetropolitan Territory of New Zealand', 'Elisabeth II', '583', 'CK'), +('CRI', 'Costa Rica', 'North America', 'Central America', '51100', '1821', '4023000', '75.800003', '10226.00', '9757.00', 'Costa Rica', 'Republic', 'Miguel Ángel Rodríguez Echeverría', '584', 'CR'), +('DJI', 'Djibouti', 'Africa', 'Eastern Africa', '23200', '1977', '638000', '50.799999', '382.00', '373.00', 'Djibouti/Jibuti', 'Republic', 'Ismail Omar Guelleh', '585', 'DJ'), +('DMA', 'Dominica', 'North America', 'Caribbean', '751', '1978', '71000', '73.400002', '256.00', '243.00', 'Dominica', 'Republic', 'Vernon Shaw', '586', 'DM'), +('DOM', 'Dominican Republic', 'North America', 'Caribbean', '48511', '1844', '8495000', '73.199997', '15846.00', '15076.00', 'República Dominicana', 'Republic', 'Hipólito Mejía Domínguez', '587', 'DO'), +('ECU', 'Ecuador', 'South America', 'South America', '283561', '1822', '12646000', '71.099998', '19770.00', '19769.00', 'Ecuador', 'Republic', 'Gustavo Noboa Bejarano', '594', 'EC'), +('EGY', 'Egypt', 'Africa', 'Northern Africa', '1001449', '1922', '68470000', '63.299999', '82710.00', '75617.00', 'Misr', 'Republic', 'Hosni Mubarak', '608', 'EG'), +('SLV', 'El Salvador', 'North America', 'Central America', '21041', '1841', '6276000', '69.699997', '11863.00', '11203.00', 'El Salvador', 'Republic', 'Francisco Guillermo Flores Pérez', '645', 'SV'), +('ERI', 'Eritrea', 'Africa', 'Eastern Africa', '117600', '1993', '3850000', '55.799999', '650.00', '755.00', 'Ertra', 'Republic', 'Isayas Afewerki [Isaias Afwerki]', '652', 'ER'), +('ESP', 'Spain', 'Europe', 'Southern Europe', '505992', '1492', '39441700', '78.800003', '553233.00', '532031.00', 'Espańa', 'Constitutional Monarchy', 'Juan Carlos I', '653', 'ES'), +('ZAF', 'South Africa', 'Africa', 'Southern Africa', '1221037', '1910', '40377000', '51.099998', '116729.00', '129092.00', 'South Africa', 'Republic', 'Thabo Mbeki', '716', 'ZA'), +('ETH', 'Ethiopia', 'Africa', 'Eastern Africa', '1104300', '-1000', '62565000', '45.200001', '6353.00', '6180.00', 'YeItyop´iya', 'Republic', 'Negasso Gidada', '756', 'ET'), +('FLK', 'Falkland Islands', 'South America', 'South America', '12173', NULL, '2000', NULL, '0.00', NULL, 'Falkland Islands', 'Dependent Territory of the UK', 'Elisabeth II', '763', 'FK'), +('FJI', 'Fiji Islands', 'Oceania', 'Melanesia', '18274', '1970', '817000', '67.900002', '1536.00', '2149.00', 'Fiji Islands', 'Republic', 'Josefa Iloilo', '764', 'FJ'), +('PHL', 'Philippines', 'Asia', 'Southeast Asia', '300000', '1946', '75967000', '67.5', '65107.00', '82239.00', 'Pilipinas', 'Republic', 'Gloria Macapagal-Arroyo', '766', 'PH'), +('FRO', 'Faroe Islands', 'Europe', 'Nordic Countries', '1399', NULL, '43000', '78.400002', '0.00', NULL, 'Fřroyar', 'Part of Denmark', 'Margrethe II', '901', 'FO'), +('GAB', 'Gabon', 'Africa', 'Central Africa', '267668', '1960', '1226000', '50.099998', '5493.00', '5279.00', 'Le Gabon', 'Republic', 'Omar Bongo', '902', 'GA'), +('GMB', 'Gambia', 'Africa', 'Western Africa', '11295', '1965', '1305000', '53.200001', '320.00', '325.00', 'The Gambia', 'Republic', 'Yahya Jammeh', '904', 'GM'), +('GEO', 'Georgia', 'Asia', 'Middle East', '69700', '1991', '4968000', '64.5', '6064.00', '5924.00', 'Sakartvelo', 'Republic', 'Eduard Ševardnadze', '905', 'GE'), +('GHA', 'Ghana', 'Africa', 'Western Africa', '238533', '1957', '20212000', '57.400002', '7137.00', '6884.00', 'Ghana', 'Republic', 'John Kufuor', '910', 'GH'), +('GIB', 'Gibraltar', 'Europe', 'Southern Europe', '6', NULL, '25000', '79', '258.00', NULL, 'Gibraltar', 'Dependent Territory of the UK', 'Elisabeth II', '915', 'GI'), +('GRD', 'Grenada', 'North America', 'Caribbean', '344', '1974', '94000', '64.5', '318.00', NULL, 'Grenada', 'Constitutional Monarchy', 'Elisabeth II', '916', 'GD'), +('GRL', 'Greenland', 'North America', 'North America', '2166090', NULL, '56000', '68.099998', '0.00', NULL, 'Kalaallit Nunaat/Grřnland', 'Part of Denmark', 'Margrethe II', '917', 'GL'), +('GLP', 'Guadeloupe', 'North America', 'Caribbean', '1705', NULL, '456000', '77', '3501.00', NULL, 'Guadeloupe', 'Overseas Department of France', 'Jacques Chirac', '919', 'GP'), +('GUM', 'Guam', 'Oceania', 'Micronesia', '549', NULL, '168000', '77.800003', '1197.00', '1136.00', 'Guam', 'US Territory', 'George W. Bush', '921', 'GU'), +('GTM', 'Guatemala', 'North America', 'Central America', '108889', '1821', '11385000', '66.199997', '19008.00', '17797.00', 'Guatemala', 'Republic', 'Alfonso Portillo Cabrera', '922', 'GT'), +('GIN', 'Guinea', 'Africa', 'Western Africa', '245857', '1958', '7430000', '45.599998', '2352.00', '2383.00', 'Guinée', 'Republic', 'Lansana Conté', '926', 'GN'), +('GNB', 'Guinea-Bissau', 'Africa', 'Western Africa', '36125', '1974', '1213000', '49', '293.00', '272.00', 'Guiné-Bissau', 'Republic', 'Kumba Ialá', '927', 'GW'), +('GUY', 'Guyana', 'South America', 'South America', '214969', '1966', '861000', '64', '722.00', '743.00', 'Guyana', 'Republic', 'Bharrat Jagdeo', '928', 'GY'), +('HTI', 'Haiti', 'North America', 'Caribbean', '27750', '1804', '8222000', '49.200001', '3459.00', '3107.00', 'Haďti/Dayti', 'Republic', 'Jean-Bertrand Aristide', '929', 'HT'), +('HND', 'Honduras', 'North America', 'Central America', '112088', '1838', '6485000', '69.900002', '5333.00', '4697.00', 'Honduras', 'Republic', 'Carlos Roberto Flores Facussé', '933', 'HN'), +('HKG', 'Hong Kong', 'Asia', 'Eastern Asia', '1075', NULL, '6782000', '79.5', '166448.00', '173610.00', 'Xianggang/Hong Kong', 'Special Administrative Region of China', 'Jiang Zemin', '937', 'HK'), +('SJM', 'Svalbard and Jan Mayen', 'Europe', 'Nordic Countries', '62422', NULL, '3200', NULL, '0.00', NULL, 'Svalbard og Jan Mayen', 'Dependent Territory of Norway', 'Harald V', '938', 'SJ'), +('IDN', 'Indonesia', 'Asia', 'Southeast Asia', '1904569', '1945', '212107000', '68', '84982.00', '215002.00', 'Indonesia', 'Republic', 'Abdurrahman Wahid', '939', 'ID'), +('IND', 'India', 'Asia', 'Southern and Central Asia', '3287263', '1947', '1013662000', '62.5', '447114.00', '430572.00', 'Bharat/India', 'Federal Republic', 'Kocheril Raman Narayanan', '1109', 'IN'), +('IRQ', 'Iraq', 'Asia', 'Middle East', '438317', '1932', '23115000', '66.5', '11500.00', NULL, 'Al-´Iraq', 'Republic', 'Saddam Hussein al-Takriti', '1365', 'IQ'), +('IRN', 'Iran', 'Asia', 'Southern and Central Asia', '1648195', '1906', '67702000', '69.699997', '195746.00', '160151.00', 'Iran', 'Islamic Republic', 'Ali Mohammad Khatami-Ardakani', '1380', 'IR'), +('IRL', 'Ireland', 'Europe', 'British Islands', '70273', '1921', '3775100', '76.800003', '75921.00', '73132.00', 'Ireland/Éire', 'Republic', 'Mary McAleese', '1447', 'IE'), +('ISL', 'Iceland', 'Europe', 'Nordic Countries', '103000', '1944', '279000', '79.400002', '8255.00', '7474.00', 'Ísland', 'Republic', 'Ólafur Ragnar Grímsson', '1449', 'IS'), +('ISR', 'Israel', 'Asia', 'Middle East', '21056', '1948', '6217000', '78.599998', '97477.00', '98577.00', 'Yisra’el/Isra’il', 'Republic', 'Moshe Katzav', '1450', 'IL'), +('ITA', 'Italy', 'Europe', 'Southern Europe', '301316', '1861', '57680000', '79', '1161755.00', '1145372.00', 'Italia', 'Republic', 'Carlo Azeglio Ciampi', '1464', 'IT'), +('TMP', 'East Timor', 'Asia', 'Southeast Asia', '14874', NULL, '885000', '46', '0.00', NULL, 'Timor Timur', 'Administrated by the UN', 'José Alexandre Gusmăo', '1522', 'TP'), +('AUT', 'Austria', 'Europe', 'Western Europe', '83859', '1918', '8091800', '77.699997', '211860.00', '206025.00', 'Österreich', 'Federal Republic', 'Thomas Klestil', '1523', 'AT'), +('JAM', 'Jamaica', 'North America', 'Caribbean', '10990', '1962', '2583000', '75.199997', '6871.00', '6722.00', 'Jamaica', 'Constitutional Monarchy', 'Elisabeth II', '1530', 'JM'), +('JPN', 'Japan', 'Asia', 'Eastern Asia', '377829', '-660', '126714000', '80.699997', '3787042.00', '4192638.00', 'Nihon/Nippon', 'Constitutional Monarchy', 'Akihito', '1532', 'JP'), +('YEM', 'Yemen', 'Asia', 'Middle East', '527968', '1918', '18112000', '59.799999', '6041.00', '5729.00', 'Al-Yaman', 'Republic', 'Ali Abdallah Salih', '1780', 'YE'), +('JOR', 'Jordan', 'Asia', 'Middle East', '88946', '1946', '5083000', '77.400002', '7526.00', '7051.00', 'Al-Urdunn', 'Constitutional Monarchy', 'Abdullah II', '1786', 'JO'), +('CXR', 'Christmas Island', 'Oceania', 'Australia and New Zealand', '135', NULL, '2500', NULL, '0.00', NULL, 'Christmas Island', 'Territory of Australia', 'Elisabeth II', '1791', 'CX'), +('YUG', 'Yugoslavia', 'Europe', 'Southern Europe', '102173', '1918', '10640000', '72.400002', '17000.00', NULL, 'Jugoslavija', 'Federal Republic', 'Vojislav Koštunica', '1792', 'YU'), +('KHM', 'Cambodia', 'Asia', 'Southeast Asia', '181035', '1953', '11168000', '56.5', '5121.00', '5670.00', 'Kâmpuchéa', 'Constitutional Monarchy', 'Norodom Sihanouk', '1800', 'KH'), +('CMR', 'Cameroon', 'Africa', 'Central Africa', '475442', '1960', '15085000', '54.799999', '9174.00', '8596.00', 'Cameroun/Cameroon', 'Republic', 'Paul Biya', '1804', 'CM'), +('CAN', 'Canada', 'North America', 'North America', '9970610', '1867', '31147000', '79.400002', '598862.00', '625626.00', 'Canada', 'Constitutional Monarchy, Federation', 'Elisabeth II', '1822', 'CA'), +('CPV', 'Cape Verde', 'Africa', 'Western Africa', '4033', '1975', '428000', '68.900002', '435.00', '420.00', 'Cabo Verde', 'Republic', 'António Mascarenhas Monteiro', '1859', 'CV'), +('KAZ', 'Kazakstan', 'Asia', 'Southern and Central Asia', '2724900', '1991', '16223000', '63.200001', '24375.00', '23383.00', 'Qazaqstan', 'Republic', 'Nursultan Nazarbajev', '1864', 'KZ'), +('KEN', 'Kenya', 'Africa', 'Eastern Africa', '580367', '1963', '30080000', '48', '9217.00', '10241.00', 'Kenya', 'Republic', 'Daniel arap Moi', '1881', 'KE'), +('CAF', 'Central African Republic', 'Africa', 'Central Africa', '622984', '1960', '3615000', '44', '1054.00', '993.00', 'Centrafrique/Bę-Afrîka', 'Republic', 'Ange-Félix Patassé', '1889', 'CF'), +('CHN', 'China', 'Asia', 'Eastern Asia', '9572900', '-1523', '1277558000', '71.400002', '982268.00', '917719.00', 'Zhongquo', 'People''sRepublic', 'Jiang Zemin', '1891', 'CN'), +('KGZ', 'Kyrgyzstan', 'Asia', 'Southern and Central Asia', '199900', '1991', '4699000', '63.400002', '1626.00', '1767.00', 'Kyrgyzstan', 'Republic', 'Askar Akajev', '2253', 'KG'), +('KIR', 'Kiribati', 'Oceania', 'Micronesia', '726', '1979', '83000', '59.799999', '40.70', NULL, 'Kiribati', 'Republic', 'Teburoro Tito', '2256', 'KI'), +('COL', 'Colombia', 'South America', 'South America', '1138914', '1810', '42321000', '70.300003', '102896.00', '105116.00', 'Colombia', 'Republic', 'Andrés Pastrana Arango', '2257', 'CO'), +('COM', 'Comoros', 'Africa', 'Eastern Africa', '1862', '1975', '578000', '60', '4401.00', '4361.00', 'Komori/Comores', 'Republic', 'Azali Assoumani', '2295', 'KM'), +('COG', 'Congo', 'Africa', 'Central Africa', '342000', '1960', '2943000', '47.400002', '2108.00', '2287.00', 'Congo', 'Republic', 'Denis Sassou-Nguesso', '2296', 'CG'), +('COD', 'Congo, The Democratic Republic of the', 'Africa', 'Central Africa', '2344858', '1960', '51654000', '48.799999', '6964.00', '2474.00', 'République Démocratique du Congo', 'Republic', 'Joseph Kabila', '2298', 'CD'), +('CCK', 'Cocos (Keeling) Islands', 'Oceania', 'Australia and New Zealand', '14', NULL, '600', NULL, '0.00', NULL, 'Cocos (Keeling) Islands', 'Territory of Australia', 'Elisabeth II', '2317', 'CC'), +('PRK', 'North Korea', 'Asia', 'Eastern Asia', '120538', '1948', '24039000', '70.699997', '5332.00', NULL, 'Choson Minjujuui In´min Konghwaguk (Bukhan)', 'Socialistic Republic', 'Kim Jong-il', '2318', 'KP'), +('KOR', 'South Korea', 'Asia', 'Eastern Asia', '99434', '1948', '46844000', '74.400002', '320749.00', '442544.00', 'Taehan Min’guk (Namhan)', 'Republic', 'Kim Dae-jung', '2331', 'KR'), +('GRC', 'Greece', 'Europe', 'Southern Europe', '131626', '1830', '10545700', '78.400002', '120724.00', '119946.00', 'Elláda', 'Republic', 'Kostis Stefanopoulos', '2401', 'GR'), +('HRV', 'Croatia', 'Europe', 'Southern Europe', '56538', '1991', '4473000', '73.699997', '20208.00', '19300.00', 'Hrvatska', 'Republic', 'Štipe Mesic', '2409', 'HR'), +('CUB', 'Cuba', 'North America', 'Caribbean', '110861', '1902', '11201000', '76.199997', '17843.00', '18862.00', 'Cuba', 'Socialistic Republic', 'Fidel Castro Ruz', '2413', 'CU'), +('KWT', 'Kuwait', 'Asia', 'Middle East', '17818', '1961', '1972000', '76.099998', '27037.00', '30373.00', 'Al-Kuwayt', 'Constitutional Monarchy (Emirate)', 'Jabir al-Ahmad al-Jabir al-Sabah', '2429', 'KW'), +('CYP', 'Cyprus', 'Asia', 'Middle East', '9251', '1960', '754700', '76.699997', '9333.00', '8246.00', 'Kýpros/Kibris', 'Republic', 'Glafkos Klerides', '2430', 'CY'), +('LAO', 'Laos', 'Asia', 'Southeast Asia', '236800', '1953', '5433000', '53.099998', '1292.00', '1746.00', 'Lao', 'Republic', 'Khamtay Siphandone', '2432', 'LA'), +('LVA', 'Latvia', 'Europe', 'Baltic Countries', '64589', '1991', '2424200', '68.400002', '6398.00', '5639.00', 'Latvija', 'Republic', 'Vaira Vike-Freiberga', '2434', 'LV'), +('LSO', 'Lesotho', 'Africa', 'Southern Africa', '30355', '1966', '2153000', '50.799999', '1061.00', '1161.00', 'Lesotho', 'Constitutional Monarchy', 'Letsie III', '2437', 'LS'), +('LBN', 'Lebanon', 'Asia', 'Middle East', '10400', '1941', '3282000', '71.300003', '17121.00', '15129.00', 'Lubnan', 'Republic', 'Émile Lahoud', '2438', 'LB'), +('LBR', 'Liberia', 'Africa', 'Western Africa', '111369', '1847', '3154000', '51', '2012.00', NULL, 'Liberia', 'Republic', 'Charles Taylor', '2440', 'LR'), +('LBY', 'Libyan Arab Jamahiriya', 'Africa', 'Northern Africa', '1759540', '1951', '5605000', '75.5', '44806.00', '40562.00', 'Libiya', 'Socialistic State', 'Muammar al-Qadhafi', '2441', 'LY'), +('LIE', 'Liechtenstein', 'Europe', 'Western Europe', '160', '1806', '32300', '78.800003', '1119.00', '1084.00', 'Liechtenstein', 'Constitutional Monarchy', 'Hans-Adam II', '2446', 'LI'), +('LTU', 'Lithuania', 'Europe', 'Baltic Countries', '65301', '1991', '3698500', '69.099998', '10692.00', '9585.00', 'Lietuva', 'Republic', 'Valdas Adamkus', '2447', 'LT'), +('LUX', 'Luxembourg', 'Europe', 'Western Europe', '2586', '1867', '435700', '77.099998', '16321.00', '15519.00', 'Luxembourg/Lëtzebuerg', 'Constitutional Monarchy', 'Henri', '2452', 'LU'), +('ESH', 'Western Sahara', 'Africa', 'Northern Africa', '266000', NULL, '293000', '49.799999', '60.00', NULL, 'As-Sahrawiya', 'Occupied by Marocco', 'Mohammed Abdel Aziz', '2453', 'EH'), +('MAC', 'Macao', 'Asia', 'Eastern Asia', '18', NULL, '473000', '81.599998', '5749.00', '5940.00', 'Macau/Aomen', 'Special Administrative Region of China', 'Jiang Zemin', '2454', 'MO'), +('MDG', 'Madagascar', 'Africa', 'Eastern Africa', '587041', '1960', '15942000', '55', '3750.00', '3545.00', 'Madagasikara/Madagascar', 'Federal Republic', 'Didier Ratsiraka', '2455', 'MG'), +('MKD', 'Macedonia', 'Europe', 'Southern Europe', '25713', '1991', '2024000', '73.800003', '1694.00', '1915.00', 'Makedonija', 'Republic', 'Boris Trajkovski', '2460', 'MK'), +('MWI', 'Malawi', 'Africa', 'Eastern Africa', '118484', '1964', '10925000', '37.599998', '1687.00', '2527.00', 'Malawi', 'Republic', 'Bakili Muluzi', '2462', 'MW'), +('MDV', 'Maldives', 'Asia', 'Southern and Central Asia', '298', '1965', '286000', '62.200001', '199.00', NULL, 'Dhivehi Raajje/Maldives', 'Republic', 'Maumoon Abdul Gayoom', '2463', 'MV'), +('MYS', 'Malaysia', 'Asia', 'Southeast Asia', '329758', '1957', '22244000', '70.800003', '69213.00', '97884.00', 'Malaysia', 'Constitutional Monarchy, Federation', 'Salahuddin Abdul Aziz Shah Alhaj', '2464', 'MY'), +('MLI', 'Mali', 'Africa', 'Western Africa', '1240192', '1960', '11234000', '46.700001', '2642.00', '2453.00', 'Mali', 'Republic', 'Alpha Oumar Konaré', '2482', 'ML'), +('MLT', 'Malta', 'Europe', 'Southern Europe', '316', '1964', '380200', '77.900002', '3512.00', '3338.00', 'Malta', 'Republic', 'Guido de Marco', '2484', 'MT'), +('MAR', 'Morocco', 'Africa', 'Northern Africa', '446550', '1956', '28351000', '69.099998', '36124.00', '33514.00', 'Al-Maghrib', 'Constitutional Monarchy', 'Mohammed VI', '2486', 'MA'), +('MHL', 'Marshall Islands', 'Oceania', 'Micronesia', '181', '1990', '64000', '65.5', '97.00', NULL, 'Marshall Islands/Majol', 'Republic', 'Kessai Note', '2507', 'MH'), +('MTQ', 'Martinique', 'North America', 'Caribbean', '1102', NULL, '395000', '78.300003', '2731.00', '2559.00', 'Martinique', 'Overseas Department of France', 'Jacques Chirac', '2508', 'MQ'), +('MRT', 'Mauritania', 'Africa', 'Western Africa', '1025520', '1960', '2670000', '50.799999', '998.00', '1081.00', 'Muritaniya/Mauritanie', 'Republic', 'Maaouiya Ould Sid´Ahmad Taya', '2509', 'MR'), +('MUS', 'Mauritius', 'Africa', 'Eastern Africa', '2040', '1968', '1158000', '71', '4251.00', '4186.00', 'Mauritius', 'Republic', 'Cassam Uteem', '2511', 'MU'), +('MYT', 'Mayotte', 'Africa', 'Eastern Africa', '373', NULL, '149000', '59.5', '0.00', NULL, 'Mayotte', 'Territorial Collectivity of France', 'Jacques Chirac', '2514', 'YT'), +('MEX', 'Mexico', 'North America', 'Central America', '1958201', '1810', '98881000', '71.5', '414972.00', '401461.00', 'México', 'Federal Republic', 'Vicente Fox Quesada', '2515', 'MX'), +('FSM', 'Micronesia, Federated States of', 'Oceania', 'Micronesia', '702', '1990', '119000', '68.599998', '212.00', NULL, 'Micronesia', 'Federal Republic', 'Leo A. Falcam', '2689', 'FM'), +('MDA', 'Moldova', 'Europe', 'Eastern Europe', '33851', '1991', '4380000', '64.5', '1579.00', '1872.00', 'Moldova', 'Republic', 'Vladimir Voronin', '2690', 'MD'), +('MCO', 'Monaco', 'Europe', 'Western Europe', '1.5', '1861', '34000', '78.800003', '776.00', NULL, 'Monaco', 'Constitutional Monarchy', 'Rainier III', '2695', 'MC'), +('MNG', 'Mongolia', 'Asia', 'Eastern Asia', '1566500', '1921', '2662000', '67.300003', '1043.00', '933.00', 'Mongol Uls', 'Republic', 'Natsagiin Bagabandi', '2696', 'MN'), +('MSR', 'Montserrat', 'North America', 'Caribbean', '102', NULL, '11000', '78', '109.00', NULL, 'Montserrat', 'Dependent Territory of the UK', 'Elisabeth II', '2697', 'MS'), +('MOZ', 'Mozambique', 'Africa', 'Eastern Africa', '801590', '1975', '19680000', '37.5', '2891.00', '2711.00', 'Moçambique', 'Republic', 'Joaquím A. Chissano', '2698', 'MZ'), +('MMR', 'Myanmar', 'Asia', 'Southeast Asia', '676578', '1948', '45611000', '54.900002', '180375.00', '171028.00', 'Myanma Pye', 'Republic', 'kenraali Than Shwe', '2710', 'MM'), +('NAM', 'Namibia', 'Africa', 'Southern Africa', '824292', '1990', '1726000', '42.5', '3101.00', '3384.00', 'Namibia', 'Republic', 'Sam Nujoma', '2726', 'NA'), +('NRU', 'Nauru', 'Oceania', 'Micronesia', '21', '1968', '12000', '60.799999', '197.00', NULL, 'Naoero/Nauru', 'Republic', 'Bernard Dowiyogo', '2728', 'NR'), +('NPL', 'Nepal', 'Asia', 'Southern and Central Asia', '147181', '1769', '23930000', '57.799999', '4768.00', '4837.00', 'Nepal', 'Constitutional Monarchy', 'Gyanendra Bir Bikram', '2729', 'NP'), +('NIC', 'Nicaragua', 'North America', 'Central America', '130000', '1838', '5074000', '68.699997', '1988.00', '2023.00', 'Nicaragua', 'Republic', 'Arnoldo Alemán Lacayo', '2734', 'NI'), +('NER', 'Niger', 'Africa', 'Western Africa', '1267000', '1960', '10730000', '41.299999', '1706.00', '1580.00', 'Niger', 'Republic', 'Mamadou Tandja', '2738', 'NE'), +('NGA', 'Nigeria', 'Africa', 'Western Africa', '923768', '1960', '111506000', '51.599998', '65707.00', '58623.00', 'Nigeria', 'Federal Republic', 'Olusegun Obasanjo', '2754', 'NG'), +('NIU', 'Niue', 'Oceania', 'Polynesia', '260', NULL, '2000', NULL, '0.00', NULL, 'Niue', 'Nonmetropolitan Territory of New Zealand', 'Elisabeth II', '2805', 'NU'), +('NFK', 'Norfolk Island', 'Oceania', 'Australia and New Zealand', '36', NULL, '2000', NULL, '0.00', NULL, 'Norfolk Island', 'Territory of Australia', 'Elisabeth II', '2806', 'NF'), +('NOR', 'Norway', 'Europe', 'Nordic Countries', '323877', '1905', '4478500', '78.699997', '145895.00', '153370.00', 'Norge', 'Constitutional Monarchy', 'Harald V', '2807', 'NO'), +('CIV', 'Côte d’Ivoire', 'Africa', 'Western Africa', '322463', '1960', '14786000', '45.200001', '11345.00', '10285.00', 'Côte d’Ivoire', 'Republic', 'Laurent Gbagbo', '2814', 'CI'), +('OMN', 'Oman', 'Asia', 'Middle East', '309500', '1951', '2542000', '71.800003', '16904.00', '16153.00', '´Uman', 'Monarchy (Sultanate)', 'Qabus ibn Sa´id', '2821', 'OM'), +('PAK', 'Pakistan', 'Asia', 'Southern and Central Asia', '796095', '1947', '156483000', '61.099998', '61289.00', '58549.00', 'Pakistan', 'Republic', 'Mohammad Rafiq Tarar', '2831', 'PK'), +('PLW', 'Palau', 'Oceania', 'Micronesia', '459', '1994', '19000', '68.599998', '105.00', NULL, 'Belau/Palau', 'Republic', 'Kuniwo Nakamura', '2881', 'PW'), +('PAN', 'Panama', 'North America', 'Central America', '75517', '1903', '2856000', '75.5', '9131.00', '8700.00', 'Panamá', 'Republic', 'Mireya Elisa Moscoso Rodríguez', '2882', 'PA'), +('PNG', 'Papua New Guinea', 'Oceania', 'Melanesia', '462840', '1975', '4807000', '63.099998', '4988.00', '6328.00', 'Papua New Guinea/Papua Niugini', 'Constitutional Monarchy', 'Elisabeth II', '2884', 'PG'), +('PRY', 'Paraguay', 'South America', 'South America', '406752', '1811', '5496000', '73.699997', '8444.00', '9555.00', 'Paraguay', 'Republic', 'Luis Ángel González Macchi', '2885', 'PY'), +('PER', 'Peru', 'South America', 'South America', '1285216', '1821', '25662000', '70', '64140.00', '65186.00', 'Perú/Piruw', 'Republic', 'Valentin Paniagua Corazao', '2890', 'PE'), +('PCN', 'Pitcairn', 'Oceania', 'Polynesia', '49', NULL, '50', NULL, '0.00', NULL, 'Pitcairn', 'Dependent Territory of the UK', 'Elisabeth II', '2912', 'PN'), +('MNP', 'Northern Mariana Islands', 'Oceania', 'Micronesia', '464', NULL, '78000', '75.5', '0.00', NULL, 'Northern Mariana Islands', 'Commonwealth of the US', 'George W. Bush', '2913', 'MP'), +('PRT', 'Portugal', 'Europe', 'Southern Europe', '91982', '1143', '9997600', '75.800003', '105954.00', '102133.00', 'Portugal', 'Republic', 'Jorge Sampăio', '2914', 'PT'), +('PRI', 'Puerto Rico', 'North America', 'Caribbean', '8875', NULL, '3869000', '75.599998', '34100.00', '32100.00', 'Puerto Rico', 'Commonwealth of the US', 'George W. Bush', '2919', 'PR'), +('POL', 'Poland', 'Europe', 'Eastern Europe', '323250', '1918', '38653600', '73.199997', '151697.00', '135636.00', 'Polska', 'Republic', 'Aleksander Kwasniewski', '2928', 'PL'), +('GNQ', 'Equatorial Guinea', 'Africa', 'Central Africa', '28051', '1968', '453000', '53.599998', '283.00', '542.00', 'Guinea Ecuatorial', 'Republic', 'Teodoro Obiang Nguema Mbasogo', '2972', 'GQ'), +('QAT', 'Qatar', 'Asia', 'Middle East', '11000', '1971', '599000', '72.400002', '9472.00', '8920.00', 'Qatar', 'Monarchy', 'Hamad ibn Khalifa al-Thani', '2973', 'QA'), +('FRA', 'France', 'Europe', 'Western Europe', '551500', '843', '59225700', '78.800003', '1424285.00', '1392448.00', 'France', 'Republic', 'Jacques Chirac', '2974', 'FR'), +('GUF', 'French Guiana', 'South America', 'South America', '90000', NULL, '181000', '76.099998', '681.00', NULL, 'Guyane française', 'Overseas Department of France', 'Jacques Chirac', '3014', 'GF'), +('PYF', 'French Polynesia', 'Oceania', 'Polynesia', '4000', NULL, '235000', '74.800003', '818.00', '781.00', 'Polynésie française', 'Nonmetropolitan Territory of France', 'Jacques Chirac', '3016', 'PF'), +('REU', 'Réunion', 'Africa', 'Eastern Africa', '2510', NULL, '699000', '72.699997', '8287.00', '7988.00', 'Réunion', 'Overseas Department of France', 'Jacques Chirac', '3017', 'RE'), +('ROM', 'Romania', 'Europe', 'Eastern Europe', '238391', '1878', '22455500', '69.900002', '38158.00', '34843.00', 'România', 'Republic', 'Ion Iliescu', '3018', 'RO'), +('RWA', 'Rwanda', 'Africa', 'Eastern Africa', '26338', '1962', '7733000', '39.299999', '2036.00', '1863.00', 'Rwanda/Urwanda', 'Republic', 'Paul Kagame', '3047', 'RW'), +('SWE', 'Sweden', 'Europe', 'Nordic Countries', '449964', '836', '8861400', '79.599998', '226492.00', '227757.00', 'Sverige', 'Constitutional Monarchy', 'Carl XVI Gustaf', '3048', 'SE'), +('SHN', 'Saint Helena', 'Africa', 'Western Africa', '314', NULL, '6000', '76.800003', '0.00', NULL, 'Saint Helena', 'Dependent Territory of the UK', 'Elisabeth II', '3063', 'SH'), +('KNA', 'Saint Kitts and Nevis', 'North America', 'Caribbean', '261', '1983', '38000', '70.699997', '299.00', NULL, 'Saint Kitts and Nevis', 'Constitutional Monarchy', 'Elisabeth II', '3064', 'KN'), +('LCA', 'Saint Lucia', 'North America', 'Caribbean', '622', '1979', '154000', '72.300003', '571.00', NULL, 'Saint Lucia', 'Constitutional Monarchy', 'Elisabeth II', '3065', 'LC'), +('VCT', 'Saint Vincent and the Grenadines', 'North America', 'Caribbean', '388', '1979', '114000', '72.300003', '285.00', NULL, 'Saint Vincent and the Grenadines', 'Constitutional Monarchy', 'Elisabeth II', '3066', 'VC'), +('SPM', 'Saint Pierre and Miquelon', 'North America', 'North America', '242', NULL, '7000', '77.599998', '0.00', NULL, 'Saint-Pierre-et-Miquelon', 'Territorial Collectivity of France', 'Jacques Chirac', '3067', 'PM'), +('DEU', 'Germany', 'Europe', 'Western Europe', '357022', '1955', '82164700', '77.400002', '2133367.00', '2102826.00', 'Deutschland', 'Federal Republic', 'Johannes Rau', '3068', 'DE'), +('SLB', 'Solomon Islands', 'Oceania', 'Melanesia', '28896', '1978', '444000', '71.300003', '182.00', '220.00', 'Solomon Islands', 'Constitutional Monarchy', 'Elisabeth II', '3161', 'SB'), +('ZMB', 'Zambia', 'Africa', 'Eastern Africa', '752618', '1964', '9169000', '37.200001', '3377.00', '3922.00', 'Zambia', 'Republic', 'Frederick Chiluba', '3162', 'ZM'), +('WSM', 'Samoa', 'Oceania', 'Polynesia', '2831', '1962', '180000', '69.199997', '141.00', '157.00', 'Samoa', 'Parlementary Monarchy', 'Malietoa Tanumafili II', '3169', 'WS'), +('SMR', 'San Marino', 'Europe', 'Southern Europe', '61', '885', '27000', '81.099998', '510.00', NULL, 'San Marino', 'Republic', '', '3171', 'SM'), +('STP', 'Sao Tome and Principe', 'Africa', 'Central Africa', '964', '1975', '147000', '65.300003', '6.00', NULL, 'Săo Tomé e Príncipe', 'Republic', 'Miguel Trovoada', '3172', 'ST'), +('SAU', 'Saudi Arabia', 'Asia', 'Middle East', '2149690', '1932', '21607000', '67.800003', '137635.00', '146171.00', 'Al-´Arabiya as-Sa´udiya', 'Monarchy', 'Fahd ibn Abdul-Aziz al-Sa´ud', '3173', 'SA'), +('SEN', 'Senegal', 'Africa', 'Western Africa', '196722', '1960', '9481000', '62.200001', '4787.00', '4542.00', 'Sénégal/Sounougal', 'Republic', 'Abdoulaye Wade', '3198', 'SN'), +('SYC', 'Seychelles', 'Africa', 'Eastern Africa', '455', '1976', '77000', '70.400002', '536.00', '539.00', 'Sesel/Seychelles', 'Republic', 'France-Albert René', '3206', 'SC'), +('SLE', 'Sierra Leone', 'Africa', 'Western Africa', '71740', '1961', '4854000', '45.299999', '746.00', '858.00', 'Sierra Leone', 'Republic', 'Ahmed Tejan Kabbah', '3207', 'SL'), +('SGP', 'Singapore', 'Asia', 'Southeast Asia', '618', '1965', '3567000', '80.099998', '86503.00', '96318.00', 'Singapore/Singapura/Xinjiapo/Singapur', 'Republic', 'Sellapan Rama Nathan', '3208', 'SG'), +('SVK', 'Slovakia', 'Europe', 'Eastern Europe', '49012', '1993', '5398700', '73.699997', '20594.00', '19452.00', 'Slovensko', 'Republic', 'Rudolf Schuster', '3209', 'SK'), +('SVN', 'Slovenia', 'Europe', 'Southern Europe', '20256', '1991', '1987800', '74.900002', '19756.00', '18202.00', 'Slovenija', 'Republic', 'Milan Kucan', '3212', 'SI'), +('SOM', 'Somalia', 'Africa', 'Eastern Africa', '637657', '1960', '10097000', '46.200001', '935.00', NULL, 'Soomaaliya', 'Republic', 'Abdiqassim Salad Hassan', '3214', 'SO'), +('LKA', 'Sri Lanka', 'Asia', 'Southern and Central Asia', '65610', '1948', '18827000', '71.800003', '15706.00', '15091.00', 'Sri Lanka/Ilankai', 'Republic', 'Chandrika Kumaratunga', '3217', 'LK'), +('SDN', 'Sudan', 'Africa', 'Northern Africa', '2505813', '1956', '29490000', '56.599998', '10162.00', NULL, 'As-Sudan', 'Islamic Republic', 'Omar Hassan Ahmad al-Bashir', '3225', 'SD'), +('FIN', 'Finland', 'Europe', 'Nordic Countries', '338145', '1917', '5171300', '77.400002', '121914.00', '119833.00', 'Suomi', 'Republic', 'Tarja Halonen', '3236', 'FI'), +('SUR', 'Suriname', 'South America', 'South America', '163265', '1975', '417000', '71.400002', '870.00', '706.00', 'Suriname', 'Republic', 'Ronald Venetiaan', '3243', 'SR'), +('SWZ', 'Swaziland', 'Africa', 'Southern Africa', '17364', '1968', '1008000', '40.400002', '1206.00', '1312.00', 'kaNgwane', 'Monarchy', 'Mswati III', '3244', 'SZ'), +('CHE', 'Switzerland', 'Europe', 'Western Europe', '41284', '1499', '7160400', '79.599998', '264478.00', '256092.00', 'Schweiz/Suisse/Svizzera/Svizra', 'Federation', 'Adolf Ogi', '3248', 'CH'), +('SYR', 'Syria', 'Asia', 'Middle East', '185180', '1941', '16125000', '68.5', '65984.00', '64926.00', 'Suriya', 'Republic', 'Bashar al-Assad', '3250', 'SY'), +('TJK', 'Tajikistan', 'Asia', 'Southern and Central Asia', '143100', '1991', '6188000', '64.099998', '1990.00', '1056.00', 'Toçikiston', 'Republic', 'Emomali Rahmonov', '3261', 'TJ'), +('TWN', 'Taiwan', 'Asia', 'Eastern Asia', '36188', '1945', '22256000', '76.400002', '256254.00', '263451.00', 'T’ai-wan', 'Republic', 'Chen Shui-bian', '3263', 'TW'), +('TZA', 'Tanzania', 'Africa', 'Eastern Africa', '883749', '1961', '33517000', '52.299999', '8005.00', '7388.00', 'Tanzania', 'Republic', 'Benjamin William Mkapa', '3306', 'TZ'), +('DNK', 'Denmark', 'Europe', 'Nordic Countries', '43094', '800', '5330000', '76.5', '174099.00', '169264.00', 'Danmark', 'Constitutional Monarchy', 'Margrethe II', '3315', 'DK'), +('THA', 'Thailand', 'Asia', 'Southeast Asia', '513115', '1350', '61399000', '68.599998', '116416.00', '153907.00', 'Prathet Thai', 'Constitutional Monarchy', 'Bhumibol Adulyadej', '3320', 'TH'), +('TGO', 'Togo', 'Africa', 'Western Africa', '56785', '1960', '4629000', '54.700001', '1449.00', '1400.00', 'Togo', 'Republic', 'Gnassingbé Eyadéma', '3332', 'TG'), +('TKL', 'Tokelau', 'Oceania', 'Polynesia', '12', NULL, '2000', NULL, '0.00', NULL, 'Tokelau', 'Nonmetropolitan Territory of New Zealand', 'Elisabeth II', '3333', 'TK'), +('TON', 'Tonga', 'Oceania', 'Polynesia', '650', '1970', '99000', '67.900002', '146.00', '170.00', 'Tonga', 'Monarchy', 'Taufa''ahau Tupou IV', '3334', 'TO'), +('TTO', 'Trinidad and Tobago', 'North America', 'Caribbean', '5130', '1962', '1295000', '68', '6232.00', '5867.00', 'Trinidad and Tobago', 'Republic', 'Arthur N. R. Robinson', '3336', 'TT'), +('TCD', 'Chad', 'Africa', 'Central Africa', '1284000', '1960', '7651000', '50.5', '1208.00', '1102.00', 'Tchad/Tshad', 'Republic', 'Idriss Déby', '3337', 'TD'), +('CZE', 'Czech Republic', 'Europe', 'Eastern Europe', '78866', '1993', '10278100', '74.5', '55017.00', '52037.00', '¸esko', 'Republic', 'Václav Havel', '3339', 'CZ'), +('TUN', 'Tunisia', 'Africa', 'Northern Africa', '163610', '1956', '9586000', '73.699997', '20026.00', '18898.00', 'Tunis/Tunisie', 'Republic', 'Zine al-Abidine Ben Ali', '3349', 'TN'), +('TUR', 'Turkey', 'Asia', 'Middle East', '774815', '1923', '66591000', '71', '210721.00', '189122.00', 'Türkiye', 'Republic', 'Ahmet Necdet Sezer', '3358', 'TR'), +('TKM', 'Turkmenistan', 'Asia', 'Southern and Central Asia', '488100', '1991', '4459000', '60.900002', '4397.00', '2000.00', 'Türkmenostan', 'Republic', 'Saparmurad Nijazov', '3419', 'TM'), +('TCA', 'Turks and Caicos Islands', 'North America', 'Caribbean', '430', NULL, '17000', '73.300003', '96.00', NULL, 'The Turks and Caicos Islands', 'Dependent Territory of the UK', 'Elisabeth II', '3423', 'TC'), +('TUV', 'Tuvalu', 'Oceania', 'Polynesia', '26', '1978', '12000', '66.300003', '6.00', NULL, 'Tuvalu', 'Constitutional Monarchy', 'Elisabeth II', '3424', 'TV'), +('UGA', 'Uganda', 'Africa', 'Eastern Africa', '241038', '1962', '21778000', '42.900002', '6313.00', '6887.00', 'Uganda', 'Republic', 'Yoweri Museveni', '3425', 'UG'), +('UKR', 'Ukraine', 'Europe', 'Eastern Europe', '603700', '1991', '50456000', '66', '42168.00', '49677.00', 'Ukrajina', 'Republic', 'Leonid Kutšma', '3426', 'UA'), +('HUN', 'Hungary', 'Europe', 'Eastern Europe', '93030', '1918', '10043200', '71.400002', '48267.00', '45914.00', 'Magyarország', 'Republic', 'Ferenc Mádl', '3483', 'HU'), +('URY', 'Uruguay', 'South America', 'South America', '175016', '1828', '3337000', '75.199997', '20831.00', '19967.00', 'Uruguay', 'Republic', 'Jorge Batlle Ibáńez', '3492', 'UY'), +('NCL', 'New Caledonia', 'Oceania', 'Melanesia', '18575', NULL, '214000', '72.800003', '3563.00', NULL, 'Nouvelle-Calédonie', 'Nonmetropolitan Territory of France', 'Jacques Chirac', '3493', 'NC'), +('NZL', 'New Zealand', 'Oceania', 'Australia and New Zealand', '270534', '1907', '3862000', '77.800003', '54669.00', '64960.00', 'New Zealand/Aotearoa', 'Constitutional Monarchy', 'Elisabeth II', '3499', 'NZ'), +('UZB', 'Uzbekistan', 'Asia', 'Southern and Central Asia', '447400', '1991', '24318000', '63.700001', '14194.00', '21300.00', 'Uzbekiston', 'Republic', 'Islam Karimov', '3503', 'UZ'), +('BLR', 'Belarus', 'Europe', 'Eastern Europe', '207600', '1991', '10236000', '68', '13714.00', NULL, 'Belarus', 'Republic', 'Aljaksandr Lukašenka', '3520', 'BY'), +('WLF', 'Wallis and Futuna', 'Oceania', 'Polynesia', '200', NULL, '15000', NULL, '0.00', NULL, 'Wallis-et-Futuna', 'Nonmetropolitan Territory of France', 'Jacques Chirac', '3536', 'WF'), +('VUT', 'Vanuatu', 'Oceania', 'Melanesia', '12189', '1980', '190000', '60.599998', '261.00', '246.00', 'Vanuatu', 'Republic', 'John Bani', '3537', 'VU'), +('VAT', 'Holy See (Vatican City State)', 'Europe', 'Southern Europe', '0.40000001', '1929', '1000', NULL, '9.00', NULL, 'Santa Sede/Cittŕ del Vaticano', 'Independent Church State', 'Johannes Paavali II', '3538', 'VA'), +('VEN', 'Venezuela', 'South America', 'South America', '912050', '1811', '24170000', '73.099998', '95023.00', '88434.00', 'Venezuela', 'Federal Republic', 'Hugo Chávez Frías', '3539', 'VE'), +('RUS', 'Russian Federation', 'Europe', 'Eastern Europe', '17075400', '1991', '146934000', '67.199997', '276608.00', '442989.00', 'Rossija', 'Federal Republic', 'Vladimir Putin', '3580', 'RU'), +('VNM', 'Vietnam', 'Asia', 'Southeast Asia', '331689', '1945', '79832000', '69.300003', '21929.00', '22834.00', 'Vięt Nam', 'Socialistic Republic', 'Trân Duc Luong', '3770', 'VN'), +('EST', 'Estonia', 'Europe', 'Baltic Countries', '45227', '1991', '1439200', '69.5', '5328.00', '3371.00', 'Eesti', 'Republic', 'Lennart Meri', '3791', 'EE'), +('USA', 'United States', 'North America', 'North America', '9363520', '1776', '278357000', '77.099998', '8510700.00', '8110900.00', 'United States', 'Federal Republic', 'George W. Bush', '3813', 'US'), +('VIR', 'Virgin Islands, U.S.', 'North America', 'Caribbean', '347', NULL, '93000', '78.099998', '0.00', NULL, 'Virgin Islands of the United States', 'US Territory', 'George W. Bush', '4067', 'VI'), +('ZWE', 'Zimbabwe', 'Africa', 'Eastern Africa', '390757', '1980', '11669000', '37.799999', '5951.00', '8670.00', 'Zimbabwe', 'Republic', 'Robert G. Mugabe', '4068', 'ZW'), +('PSE', 'Palestine', 'Asia', 'Middle East', '6257', NULL, '3101000', '71.400002', '4173.00', NULL, 'Filastin', 'Autonomous Area', 'Yasser (Yasir) Arafat', '4074', 'PS'), +('ATA', 'Antarctica', 'Antarctica', 'Antarctica', '13120000', NULL, '0', NULL, '0.00', NULL, '–', 'Co-administrated', '', NULL, 'AQ'), +('BVT', 'Bouvet Island', 'Antarctica', 'Antarctica', '59', NULL, '0', NULL, '0.00', NULL, 'Bouvetřya', 'Dependent Territory of Norway', 'Harald V', NULL, 'BV'), +('IOT', 'British Indian Ocean Territory', 'Africa', 'Eastern Africa', '78', NULL, '0', NULL, '0.00', NULL, 'British Indian Ocean Territory', 'Dependent Territory of the UK', 'Elisabeth II', NULL, 'IO'), +('SGS', 'South Georgia and the South Sandwich Islands', 'Antarctica', 'Antarctica', '3903', NULL, '0', NULL, '0.00', NULL, 'South Georgia and the South Sandwich Islands', 'Dependent Territory of the UK', 'Elisabeth II', NULL, 'GS'), +('HMD', 'Heard Island and McDonald Islands', 'Antarctica', 'Antarctica', '359', NULL, '0', NULL, '0.00', NULL, 'Heard and McDonald Islands', 'Territory of Australia', 'Elisabeth II', NULL, 'HM'), +('ATF', 'French Southern territories', 'Antarctica', 'Antarctica', '7780', NULL, '0', NULL, '0.00', NULL, 'Terres australes françaises', 'Nonmetropolitan Territory of France', 'Jacques Chirac', NULL, 'TF'), +('UMI', 'United States Minor Outlying Islands', 'Oceania', 'Micronesia/Caribbean', '16', NULL, '0', NULL, '0.00', NULL, 'United States Minor Outlying Islands', 'Dependent Territory of the US', 'George W. Bush', NULL, 'UM'); + +-- +-- Data for Name: countrylanguage; Type: TABLE DATA; Schema: public; Owner: chriskl +-- +INSERT INTO countrylanguage (countrycode, language, isofficial, percentage) VALUES +('AFG', 'Pashto', 1, '52.400002'), +('NLD', 'Dutch', 1, '95.599998'), +('ANT', 'Papiamento', 1, '86.199997'), +('ALB', 'Albaniana', 1, '97.900002'), +('DZA', 'Arabic', 1, '86'), +('ASM', 'Samoan', 1, '90.599998'), +('AND', 'Spanish', 0, '44.599998'), +('AGO', 'Ovimbundu', 0, '37.200001'), +('AIA', 'English', 1, '0'), +('ATG', 'Creole English', 0, '95.699997'), +('ARE', 'Arabic', 1, '42'), +('ARG', 'Spanish', 1, '96.800003'), +('ARM', 'Armenian', 1, '93.400002'), +('ABW', 'Papiamento', 0, '76.699997'), +('AUS', 'English', 1, '81.199997'), +('AZE', 'Azerbaijani', 1, '89'), +('BHS', 'Creole English', 0, '89.699997'), +('BHR', 'Arabic', 1, '67.699997'), +('BGD', 'Bengali', 1, '97.699997'), +('BRB', 'Bajan', 0, '95.099998'), +('BEL', 'Dutch', 1, '59.200001'), +('BLZ', 'English', 1, '50.799999'), +('BEN', 'Fon', 0, '39.799999'), +('BMU', 'English', 1, '100'), +('BTN', 'Dzongkha', 1, '50'), +('BOL', 'Spanish', 1, '87.699997'), +('BIH', 'Serbo-Croatian', 1, '99.199997'), +('BWA', 'Tswana', 0, '75.5'), +('BRA', 'Portuguese', 1, '97.5'), +('GBR', 'English', 1, '97.300003'), +('VGB', 'English', 1, '0'), +('BRN', 'Malay', 1, '45.5'), +('BGR', 'Bulgariana', 1, '83.199997'), +('BFA', 'Mossi', 0, '50.200001'), +('BDI', 'Kirundi', 1, '98.099998'), +('CYM', 'English', 1, '0'), +('CHL', 'Spanish', 1, '89.699997'), +('COK', 'Maori', 1, '0'), +('CRI', 'Spanish', 1, '97.5'), +('DJI', 'Somali', 0, '43.900002'), +('DMA', 'Creole English', 0, '100'), +('DOM', 'Spanish', 1, '98'), +('ECU', 'Spanish', 1, '93'), +('EGY', 'Arabic', 1, '98.800003'), +('SLV', 'Spanish', 1, '100'), +('ERI', 'Tigrinja', 1, '49.099998'), +('ESP', 'Spanish', 1, '74.400002'), +('ZAF', 'Zulu', 1, '22.700001'), +('ETH', 'Oromo', 0, '31'), +('FLK', 'English', 1, '0'), +('FJI', 'Fijian', 1, '50.799999'), +('PHL', 'Pilipino', 1, '29.299999'), +('FRO', 'Faroese', 1, '100'), +('GAB', 'Fang', 0, '35.799999'), +('GMB', 'Malinke', 0, '34.099998'), +('GEO', 'Georgiana', 1, '71.699997'), +('GHA', 'Akan', 0, '52.400002'), +('GIB', 'English', 1, '88.900002'), +('GRD', 'Creole English', 0, '100'), +('GRL', 'Greenlandic', 1, '87.5'), +('GLP', 'Creole French', 0, '95'), +('GUM', 'English', 1, '37.5'), +('GTM', 'Spanish', 1, '64.699997'), +('GIN', 'Ful', 0, '38.599998'), +('GNB', 'Crioulo', 0, '36.400002'), +('GUY', 'Creole English', 0, '96.400002'), +('HTI', 'Haiti Creole', 0, '100'), +('HND', 'Spanish', 1, '97.199997'), +('HKG', 'Canton Chinese', 0, '88.699997'), +('SJM', 'Norwegian', 1, '0'), +('IDN', 'Javanese', 0, '39.400002'), +('IND', 'Hindi', 1, '39.900002'), +('IRQ', 'Arabic', 1, '77.199997'), +('IRN', 'Persian', 1, '45.700001'), +('IRL', 'English', 1, '98.400002'), +('ISL', 'Icelandic', 1, '95.699997'), +('ISR', 'Hebrew', 1, '63.099998'), +('ITA', 'Italian', 1, '94.099998'), +('TMP', 'Sunda', 0, '0'), +('AUT', 'German', 1, '92'), +('JAM', 'Creole English', 0, '94.199997'), +('JPN', 'Japanese', 1, '99.099998'), +('YEM', 'Arabic', 1, '99.599998'), +('JOR', 'Arabic', 1, '97.900002'), +('CXR', 'Chinese', 0, '0'), +('YUG', 'Serbo-Croatian', 1, '75.199997'), +('KHM', 'Khmer', 1, '88.599998'), +('CMR', 'Fang', 0, '19.700001'), +('CAN', 'English', 1, '60.400002'), +('CPV', 'Crioulo', 0, '100'), +('KAZ', 'Kazakh', 1, '46'), +('KEN', 'Kikuyu', 0, '20.9'), +('CAF', 'Gbaya', 0, '23.799999'), +('CHN', 'Chinese', 1, '92'), +('KGZ', 'Kirgiz', 1, '59.700001'), +('KIR', 'Kiribati', 1, '98.900002'), +('COL', 'Spanish', 1, '99'), +('COM', 'Comorian', 1, '75'), +('COG', 'Kongo', 0, '51.5'), +('COD', 'Luba', 0, '18'), +('CCK', 'Malay', 0, '0'), +('PRK', 'Korean', 1, '99.900002'), +('KOR', 'Korean', 1, '99.900002'), +('GRC', 'Greek', 1, '98.5'), +('HRV', 'Serbo-Croatian', 1, '95.900002'), +('CUB', 'Spanish', 1, '100'), +('KWT', 'Arabic', 1, '78.099998'), +('CYP', 'Greek', 1, '74.099998'), +('LAO', 'Lao', 1, '67.199997'), +('LVA', 'Latvian', 1, '55.099998'), +('LSO', 'Sotho', 1, '85'), +('LBN', 'Arabic', 1, '93'), +('LBR', 'Kpelle', 0, '19.5'), +('LBY', 'Arabic', 1, '96'), +('LIE', 'German', 1, '89'), +('LTU', 'Lithuanian', 1, '81.599998'), +('LUX', 'Luxembourgish', 1, '64.400002'), +('ESH', 'Arabic', 1, '100'), +('MAC', 'Canton Chinese', 0, '85.599998'), +('MDG', 'Malagasy', 1, '98.900002'), +('MKD', 'Macedonian', 1, '66.5'), +('MWI', 'Chichewa', 1, '58.299999'), +('MDV', 'Dhivehi', 1, '100'), +('MYS', 'Malay', 1, '58.400002'), +('MLI', 'Bambara', 0, '31.799999'), +('MLT', 'Maltese', 1, '95.800003'), +('MAR', 'Arabic', 1, '65'), +('MHL', 'Marshallese', 1, '96.800003'), +('MTQ', 'Creole French', 0, '96.599998'), +('MRT', 'Hassaniya', 0, '81.699997'), +('MUS', 'Creole French', 0, '70.599998'), +('MYT', 'Mahoré', 0, '41.900002'), +('MEX', 'Spanish', 1, '92.099998'), +('FSM', 'Trukese', 0, '41.599998'), +('MDA', 'Romanian', 1, '61.900002'), +('MCO', 'French', 1, '41.900002'), +('MNG', 'Mongolian', 1, '78.800003'), +('MSR', 'English', 1, '0'), +('MOZ', 'Makua', 0, '27.799999'), +('MMR', 'Burmese', 1, '69'), +('NAM', 'Ovambo', 0, '50.700001'), +('NRU', 'Nauru', 1, '57.5'), +('NPL', 'Nepali', 1, '50.400002'), +('NIC', 'Spanish', 1, '97.599998'), +('NER', 'Hausa', 0, '53.099998'), +('NGA', 'Joruba', 0, '21.4'), +('NIU', 'Niue', 0, '0'), +('NFK', 'English', 1, '0'), +('NOR', 'Norwegian', 1, '96.599998'), +('CIV', 'Akan', 0, '30'), +('OMN', 'Arabic', 1, '76.699997'), +('PAK', 'Punjabi', 0, '48.200001'), +('PLW', 'Palau', 1, '82.199997'), +('PAN', 'Spanish', 1, '76.800003'), +('PNG', 'Papuan Languages', 0, '78.099998'), +('PRY', 'Spanish', 1, '55.099998'), +('PER', 'Spanish', 1, '79.800003'), +('PCN', 'Pitcairnese', 0, '0'), +('MNP', 'Philippene Languages', 0, '34.099998'), +('PRT', 'Portuguese', 1, '99'), +('PRI', 'Spanish', 1, '51.299999'), +('POL', 'Polish', 1, '97.599998'), +('GNQ', 'Fang', 0, '84.800003'), +('QAT', 'Arabic', 1, '40.700001'), +('FRA', 'French', 1, '93.599998'), +('GUF', 'Creole French', 0, '94.300003'), +('PYF', 'Tahitian', 0, '46.400002'), +('REU', 'Creole French', 0, '91.5'), +('ROM', 'Romanian', 1, '90.699997'), +('RWA', 'Rwanda', 1, '100'), +('SWE', 'Swedish', 1, '89.5'), +('SHN', 'English', 1, '0'), +('KNA', 'Creole English', 0, '100'), +('LCA', 'Creole French', 0, '80'), +('VCT', 'Creole English', 0, '99.099998'), +('SPM', 'French', 1, '0'), +('DEU', 'German', 1, '91.300003'), +('SLB', 'Malenasian Languages', 0, '85.599998'), +('ZMB', 'Bemba', 0, '29.700001'), +('WSM', 'Samoan-English', 0, '52'), +('SMR', 'Italian', 1, '100'), +('STP', 'Crioulo', 0, '86.300003'), +('SAU', 'Arabic', 1, '95'), +('SEN', 'Wolof', 1, '48.099998'), +('SYC', 'Seselwa', 0, '91.300003'), +('SLE', 'Mende', 0, '34.799999'), +('SGP', 'Chinese', 1, '77.099998'), +('SVK', 'Slovak', 1, '85.599998'), +('SVN', 'Slovene', 1, '87.900002'), +('SOM', 'Somali', 1, '98.300003'), +('LKA', 'Singali', 1, '60.299999'), +('SDN', 'Arabic', 1, '49.400002'), +('FIN', 'Finnish', 1, '92.699997'), +('SUR', 'Sranantonga', 0, '81'), +('SWZ', 'Swazi', 1, '89.900002'), +('CHE', 'German', 1, '63.599998'), +('SYR', 'Arabic', 1, '90'), +('TJK', 'Tadzhik', 1, '62.200001'), +('TWN', 'Min', 0, '66.699997'), +('TZA', 'Nyamwesi', 0, '21.1'), +('DNK', 'Danish', 1, '93.5'), +('THA', 'Thai', 1, '52.599998'), +('TGO', 'Ewe', 1, '23.200001'), +('TKL', 'Tokelau', 0, '0'), +('TON', 'Tongan', 1, '98.300003'), +('TTO', 'English', 0, '93.5'), +('TCD', 'Sara', 0, '27.700001'), +('CZE', 'Czech', 1, '81.199997'), +('TUN', 'Arabic', 1, '69.900002'), +('TUR', 'Turkish', 1, '87.599998'), +('TKM', 'Turkmenian', 1, '76.699997'), +('TCA', 'English', 1, '0'), +('TUV', 'Tuvalu', 1, '92.5'), +('UGA', 'Ganda', 0, '18.1'), +('UKR', 'Ukrainian', 1, '64.699997'), +('HUN', 'Hungarian', 1, '98.5'), +('URY', 'Spanish', 1, '95.699997'), +('NCL', 'Malenasian Languages', 0, '45.400002'), +('NZL', 'English', 1, '87'), +('UZB', 'Uzbek', 1, '72.599998'), +('BLR', 'Belorussian', 1, '65.599998'), +('WLF', 'Wallis', 0, '0'), +('VUT', 'Bislama', 1, '56.599998'), +('VAT', 'Italian', 1, '0'), +('VEN', 'Spanish', 1, '96.900002'), +('RUS', 'Russian', 1, '86.599998'), +('VNM', 'Vietnamese', 1, '86.800003'), +('EST', 'Estonian', 1, '65.300003'), +('USA', 'English', 1, '86.199997'), +('VIR', 'English', 1, '81.699997'), +('UMI', 'English', 1, '0'), +('ZWE', 'Shona', 0, '72.099998'), +('PSE', 'Arabic', 0, '95.900002'), +('AFG', 'Dari', 1, '32.099998'), +('NLD', 'Fries', 0, '3.7'), +('ANT', 'English', 0, '7.8000002'), +('ALB', 'Greek', 0, '1.8'), +('DZA', 'Berberi', 0, '14'), +('ASM', 'English', 1, '3.0999999'), +('AND', 'Catalan', 1, '32.299999'), +('AGO', 'Mbundu', 0, '21.6'), +('ATG', 'English', 1, '0'), +('ARE', 'Hindi', 0, '0'), +('ARG', 'Italian', 0, '1.7'), +('ARM', 'Azerbaijani', 0, '2.5999999'), +('ABW', 'English', 0, '9.5'), +('AUS', 'Italian', 0, '2.2'), +('AZE', 'Russian', 0, '3'), +('BHS', 'Creole French', 0, '10.3'), +('BHR', 'English', 0, '0'), +('BGD', 'Chakma', 0, '0.40000001'), +('BRB', 'English', 1, '0'), +('BEL', 'French', 1, '32.599998'), +('BLZ', 'Spanish', 0, '31.6'), +('BEN', 'Joruba', 0, '12.2'), +('BTN', 'Nepali', 0, '34.799999'), +('BOL', 'Ketšua', 1, '8.1000004'), +('BWA', 'Shona', 0, '12.3'), +('BRA', 'German', 0, '0.5'), +('GBR', 'Kymri', 0, '0.89999998'), +('BRN', 'Malay-English', 0, '28.799999'), +('BGR', 'Turkish', 0, '9.3999996'), +('BFA', 'Ful', 0, '9.6999998'), +('BDI', 'French', 1, '0'), +('CHL', 'Araucan', 0, '9.6000004'), +('COK', 'English', 0, '0'), +('CRI', 'Creole English', 0, '2'), +('DJI', 'Afar', 0, '34.799999'), +('DMA', 'Creole French', 0, '0'), +('DOM', 'Creole French', 0, '2'), +('ECU', 'Ketšua', 0, '7'), +('EGY', 'Sinaberberi', 0, '0'), +('SLV', 'Nahua', 0, '0'), +('ERI', 'Tigre', 0, '31.700001'), +('ESP', 'Catalan', 0, '16.9'), +('ZAF', 'Xhosa', 1, '17.700001'), +('ETH', 'Amhara', 0, '30'), +('FJI', 'Hindi', 0, '43.700001'), +('PHL', 'Cebuano', 0, '23.299999'), +('FRO', 'Danish', 1, '0'), +('GAB', 'Punu-sira-nzebi', 0, '17.1'), +('GMB', 'Ful', 0, '16.200001'), +('GEO', 'Russian', 0, '8.8000002'), +('GHA', 'Mossi', 0, '15.8'), +('GIB', 'Arabic', 0, '7.4000001'), +('GRL', 'Danish', 1, '12.5'), +('GLP', 'French', 1, '0'), +('GUM', 'Chamorro', 1, '29.6'), +('GTM', 'Quiché', 0, '10.1'), +('GIN', 'Malinke', 0, '23.200001'), +('GNB', 'Ful', 0, '16.6'), +('GUY', 'Caribbean', 0, '2.2'), +('HTI', 'French', 1, '0'), +('HND', 'Garifuna', 0, '1.3'), +('HKG', 'English', 1, '2.2'), +('SJM', 'Russian', 0, '0'), +('IDN', 'Sunda', 0, '15.8'), +('IND', 'Bengali', 0, '8.1999998'), +('IRQ', 'Kurdish', 0, '19'), +('IRN', 'Azerbaijani', 0, '16.799999'), +('IRL', 'Irish', 1, '1.6'), +('ISL', 'English', 0, '0'), +('ISR', 'Arabic', 1, '18'), +('ITA', 'Sardinian', 0, '2.7'), +('TMP', 'Portuguese', 1, '0'), +('AUT', 'Serbo-Croatian', 0, '2.2'), +('JAM', 'Hindi', 0, '1.9'), +('JPN', 'Korean', 0, '0.5'), +('YEM', 'Soqutri', 0, '0'), +('JOR', 'Circassian', 0, '1'), +('CXR', 'English', 1, '0'), +('YUG', 'Albaniana', 0, '16.5'), +('KHM', 'Vietnamese', 0, '5.5'), +('CMR', 'Bamileke-bamum', 0, '18.6'), +('CAN', 'French', 1, '23.4'), +('CPV', 'Portuguese', 1, '0'), +('KAZ', 'Russian', 0, '34.700001'), +('KEN', 'Luhya', 0, '13.8'), +('CAF', 'Banda', 0, '23.5'), +('CHN', 'Zhuang', 0, '1.4'), +('KGZ', 'Russian', 1, '16.200001'), +('KIR', 'Tuvalu', 0, '0.5'), +('COL', 'Chibcha', 0, '0.40000001'), +('COM', 'Comorian-French', 0, '12.9'), +('COG', 'Teke', 0, '17.299999'), +('COD', 'Kongo', 0, '16'), +('CCK', 'English', 1, '0'), +('PRK', 'Chinese', 0, '0.1'), +('KOR', 'Chinese', 0, '0.1'), +('GRC', 'Turkish', 0, '0.89999998'), +('HRV', 'Slovene', 0, '0'), +('KWT', 'English', 0, '0'), +('CYP', 'Turkish', 1, '22.4'), +('LAO', 'Mon-khmer', 0, '16.5'), +('LVA', 'Russian', 0, '32.5'), +('LSO', 'Zulu', 0, '15'), +('LBN', 'Armenian', 0, '5.9000001'), +('LBR', 'Bassa', 0, '13.7'), +('LBY', 'Berberi', 0, '1'), +('LIE', 'Italian', 0, '2.5'), +('LTU', 'Russian', 0, '8.1000004'), +('LUX', 'Portuguese', 0, '13'), +('MAC', 'Portuguese', 1, '2.3'), +('MDG', 'French', 1, '0'), +('MKD', 'Albaniana', 0, '22.9'), +('MWI', 'Lomwe', 0, '18.4'), +('MDV', 'English', 0, '0'), +('MYS', 'Chinese', 0, '9'), +('MLI', 'Ful', 0, '13.9'), +('MLT', 'English', 1, '2.0999999'), +('MAR', 'Berberi', 0, '33'), +('MHL', 'English', 1, '0'), +('MTQ', 'French', 1, '0'), +('MRT', 'Wolof', 0, '6.5999999'), +('MUS', 'Bhojpuri', 0, '21.1'), +('MYT', 'French', 1, '20.299999'), +('MEX', 'Náhuatl', 0, '1.8'), +('FSM', 'Pohnpei', 0, '23.799999'), +('MDA', 'Russian', 0, '23.200001'), +('MCO', 'Monegasque', 0, '16.1'), +('MNG', 'Kazakh', 0, '5.9000001'), +('MOZ', 'Tsonga', 0, '12.4'), +('MMR', 'Shan', 0, '8.5'), +('NAM', 'Nama', 0, '12.4'), +('NRU', 'Kiribati', 0, '17.9'), +('NPL', 'Maithili', 0, '11.9'), +('NIC', 'Miskito', 0, '1.6'), +('NER', 'Songhai-zerma', 0, '21.200001'), +('NGA', 'Hausa', 0, '21.1'), +('NIU', 'English', 1, '0'), +('NOR', 'English', 0, '0.5'), +('CIV', 'Gur', 0, '11.7'), +('OMN', 'Balochi', 0, '0'), +('PAK', 'Pashto', 0, '13.1'), +('PLW', 'Philippene Languages', 0, '9.1999998'), +('PAN', 'Creole English', 0, '14'), +('PNG', 'Malenasian Languages', 0, '20'), +('PRY', 'Guaraní', 1, '40.099998'), +('PER', 'Ketšua', 1, '16.4'), +('MNP', 'Chamorro', 0, '30'), +('PRI', 'English', 0, '47.400002'), +('POL', 'German', 0, '1.3'), +('GNQ', 'Bubi', 0, '8.6999998'), +('QAT', 'Urdu', 0, '0'), +('FRA', 'Arabic', 0, '2.5'), +('GUF', 'Indian Languages', 0, '1.9'), +('PYF', 'French', 1, '40.799999'), +('REU', 'Chinese', 0, '2.8'), +('ROM', 'Hungarian', 0, '7.1999998'), +('RWA', 'French', 1, '0'), +('SWE', 'Finnish', 0, '2.4000001'), +('KNA', 'English', 1, '0'), +('LCA', 'English', 1, '20'), +('VCT', 'English', 1, '0'), +('DEU', 'Turkish', 0, '2.5999999'), +('SLB', 'Papuan Languages', 0, '8.6000004'), +('ZMB', 'Tongan', 0, '11'), +('WSM', 'Samoan', 1, '47.5'), +('STP', 'French', 0, '0.69999999'), +('SEN', 'Ful', 0, '21.700001'), +('SYC', 'English', 1, '3.8'), +('SLE', 'Temne', 0, '31.799999'), +('SGP', 'Malay', 1, '14.1'), +('SVK', 'Hungarian', 0, '10.5'), +('SVN', 'Serbo-Croatian', 0, '7.9000001'), +('SOM', 'Arabic', 1, '0'), +('LKA', 'Tamil', 1, '19.6'), +('SDN', 'Dinka', 0, '11.5'), +('FIN', 'Swedish', 1, '5.6999998'), +('SUR', 'Hindi', 0, '0'), +('SWZ', 'Zulu', 0, '2'), +('CHE', 'French', 1, '19.200001'), +('SYR', 'Kurdish', 0, '9'), +('TJK', 'Uzbek', 0, '23.200001'), +('TWN', 'Mandarin Chinese', 1, '20.1'), +('TZA', 'Swahili', 1, '8.8000002'), +('DNK', 'Turkish', 0, '0.80000001'), +('THA', 'Lao', 0, '26.9'), +('TGO', 'Kabyé', 1, '13.8'), +('TKL', 'English', 1, '0'), +('TON', 'English', 1, '0'), +('TTO', 'Hindi', 0, '3.4000001'), +('TCD', 'Arabic', 1, '12.3'), +('CZE', 'Moravian', 0, '12.9'), +('TUN', 'Arabic-French', 0, '26.299999'), +('TUR', 'Kurdish', 0, '10.6'), +('TKM', 'Uzbek', 0, '9.1999998'), +('TUV', 'Kiribati', 0, '7.5'), +('UGA', 'Nkole', 0, '10.7'), +('UKR', 'Russian', 0, '32.900002'), +('HUN', 'Romani', 0, '0.5'), +('NCL', 'French', 1, '34.299999'), +('NZL', 'Maori', 0, '4.3000002'), +('UZB', 'Russian', 0, '10.9'), +('BLR', 'Russian', 1, '32'), +('WLF', 'Futuna', 0, '0'), +('VUT', 'English', 1, '28.299999'), +('VEN', 'Goajiro', 0, '0.40000001'), +('RUS', 'Tatar', 0, '3.2'), +('VNM', 'Tho', 0, '1.8'), +('EST', 'Russian', 0, '27.799999'), +('USA', 'Spanish', 0, '7.5'), +('VIR', 'Spanish', 0, '13.3'), +('ZWE', 'Ndebele', 0, '16.200001'), +('PSE', 'Hebrew', 0, '4.0999999'), +('AFG', 'Uzbek', 0, '8.8000002'), +('NLD', 'Arabic', 0, '0.89999998'), +('ANT', 'Dutch', 1, '0'), +('ALB', 'Macedonian', 0, '0.1'), +('ASM', 'Tongan', 0, '3.0999999'), +('AND', 'Portuguese', 0, '10.8'), +('AGO', 'Kongo', 0, '13.2'), +('ARG', 'Indian Languages', 0, '0.30000001'), +('ABW', 'Spanish', 0, '7.4000001'), +('AUS', 'Greek', 0, '1.6'), +('AZE', 'Lezgian', 0, '2.3'), +('BGD', 'Marma', 0, '0.2'), +('BEL', 'Italian', 0, '2.4000001'), +('BLZ', 'Maya Languages', 0, '9.6000004'), +('BEN', 'Adja', 0, '11.1'), +('BTN', 'Asami', 0, '15.2'), +('BOL', 'Aimará', 1, '3.2'), +('BWA', 'San', 0, '3.5'), +('BRA', 'Italian', 0, '0.40000001'), +('GBR', 'Gaeli', 0, '0.1'), +('BRN', 'Chinese', 0, '9.3000002'), +('BGR', 'Romani', 0, '3.7'), +('BFA', 'Gurma', 0, '5.6999998'), +('BDI', 'Swahili', 0, '0'), +('CHL', 'Aimará', 0, '0.5'), +('CRI', 'Chibcha', 0, '0.30000001'), +('DJI', 'Arabic', 1, '10.6'), +('ERI', 'Afar', 0, '4.3000002'), +('ESP', 'Galecian', 0, '6.4000001'), +('ZAF', 'Afrikaans', 1, '14.3'), +('ETH', 'Tigrinja', 0, '7.1999998'), +('PHL', 'Ilocano', 0, '9.3000002'), +('GAB', 'Mpongwe', 0, '14.6'), +('GMB', 'Wolof', 0, '12.6'), +('GEO', 'Armenian', 0, '6.8000002'), +('GHA', 'Ewe', 0, '11.9'), +('GUM', 'Philippene Languages', 0, '19.700001'), +('GTM', 'Cakchiquel', 0, '8.8999996'), +('GIN', 'Susu', 0, '11'), +('GNB', 'Balante', 0, '14.6'), +('GUY', 'Arawakan', 0, '1.4'), +('HND', 'Creole English', 0, '0.2'), +('HKG', 'Fukien', 0, '1.9'), +('IDN', 'Malay', 1, '12.1'), +('IND', 'Telugu', 0, '7.8000002'), +('IRQ', 'Azerbaijani', 0, '1.7'), +('IRN', 'Kurdish', 0, '9.1000004'), +('ISR', 'Russian', 0, '8.8999996'), +('ITA', 'Friuli', 0, '1.2'), +('AUT', 'Turkish', 0, '1.5'), +('JPN', 'Chinese', 0, '0.2'), +('JOR', 'Armenian', 0, '1'), +('YUG', 'Hungarian', 0, '3.4000001'), +('KHM', 'Chinese', 0, '3.0999999'), +('CMR', 'Duala', 0, '10.9'), +('CAN', 'Chinese', 0, '2.5'), +('KAZ', 'Ukrainian', 0, '5'), +('KEN', 'Luo', 0, '12.8'), +('CAF', 'Mandjia', 0, '14.8'), +('CHN', 'Mantšu', 0, '0.89999998'), +('KGZ', 'Uzbek', 0, '14.1'), +('COL', 'Creole English', 0, '0.1'), +('COM', 'Comorian-madagassi', 0, '5.5'), +('COG', 'Mboshi', 0, '11.4'), +('COD', 'Mongo', 0, '13.5'), +('LAO', 'Thai', 0, '7.8000002'), +('LVA', 'Belorussian', 0, '4.0999999'), +('LSO', 'English', 1, '0'), +('LBN', 'French', 0, '0'), +('LBR', 'Grebo', 0, '8.8999996'), +('LIE', 'Turkish', 0, '2.5'), +('LTU', 'Polish', 0, '7'), +('LUX', 'Italian', 0, '4.5999999'), +('MAC', 'Mandarin Chinese', 0, '1.2'), +('MKD', 'Turkish', 0, '4'), +('MWI', 'Yao', 0, '13.2'), +('MYS', 'Tamil', 0, '3.9000001'), +('MLI', 'Senufo and Minianka', 0, '12'), +('MRT', 'Tukulor', 0, '5.4000001'), +('MUS', 'French', 0, '3.4000001'), +('MYT', 'Malagasy', 0, '16.1'), +('MEX', 'Yucatec', 0, '1.1'), +('FSM', 'Mortlock', 0, '7.5999999'), +('MDA', 'Ukrainian', 0, '8.6000004'), +('MCO', 'Italian', 0, '16.1'), +('MNG', 'Dorbet', 0, '2.7'), +('MOZ', 'Sena', 0, '9.3999996'), +('MMR', 'Karen', 0, '6.1999998'), +('NAM', 'Kavango', 0, '9.6999998'), +('NRU', 'Chinese', 0, '8.5'), +('NPL', 'Bhojpuri', 0, '7.5'), +('NIC', 'Creole English', 0, '0.5'), +('NER', 'Tamashek', 0, '10.4'), +('NGA', 'Ibo', 0, '18.1'), +('NOR', 'Danish', 0, '0.40000001'), +('CIV', 'Malinke', 0, '11.4'), +('PAK', 'Sindhi', 0, '11.8'), +('PLW', 'English', 1, '3.2'), +('PAN', 'Guaymí', 0, '5.3000002'), +('PRY', 'Portuguese', 0, '3.2'), +('PER', 'Aimará', 1, '2.3'), +('MNP', 'Chinese', 0, '7.0999999'), +('POL', 'Ukrainian', 0, '0.60000002'), +('FRA', 'Portuguese', 0, '1.2'), +('PYF', 'Chinese', 0, '2.9000001'), +('REU', 'Comorian', 0, '2.8'), +('ROM', 'Romani', 1, '0.69999999'), +('SWE', 'Southern Slavic Languages', 0, '1.3'), +('DEU', 'Southern Slavic Languages', 0, '1.4'), +('SLB', 'Polynesian Languages', 0, '3.8'), +('ZMB', 'Nyanja', 0, '7.8000002'), +('WSM', 'English', 1, '0.60000002'), +('SEN', 'Serer', 0, '12.5'), +('SYC', 'French', 1, '1.3'), +('SLE', 'Limba', 0, '8.3000002'), +('SGP', 'Tamil', 1, '7.4000001'), +('SVK', 'Romani', 0, '1.7'), +('SVN', 'Hungarian', 0, '0.5'), +('LKA', 'Mixed Languages', 0, '19.6'), +('SDN', 'Nubian Languages', 0, '8.1000004'), +('FIN', 'Russian', 0, '0.40000001'), +('CHE', 'Italian', 1, '7.6999998'), +('TJK', 'Russian', 0, '9.6999998'), +('TWN', 'Hakka', 0, '11'), +('TZA', 'Hehet', 0, '6.9000001'), +('DNK', 'Arabic', 0, '0.69999999'), +('THA', 'Chinese', 0, '12.1'), +('TGO', 'Watyi', 0, '10.3'), +('TTO', 'Creole English', 0, '2.9000001'), +('TCD', 'Mayo-kebbi', 0, '11.5'), +('CZE', 'Slovak', 0, '3.0999999'), +('TUN', 'Arabic-French-English', 0, '3.2'), +('TUR', 'Arabic', 0, '1.4'), +('TKM', 'Russian', 0, '6.6999998'), +('TUV', 'English', 1, '0'), +('UGA', 'Kiga', 0, '8.3000002'), +('UKR', 'Romanian', 0, '0.69999999'), +('HUN', 'German', 0, '0.40000001'), +('NCL', 'Polynesian Languages', 0, '11.6'), +('UZB', 'Tadzhik', 0, '4.4000001'), +('BLR', 'Ukrainian', 0, '1.3'), +('VUT', 'French', 1, '14.2'), +('VEN', 'Warrau', 0, '0.1'), +('RUS', 'Ukrainian', 0, '1.3'), +('VNM', 'Thai', 0, '1.6'), +('EST', 'Ukrainian', 0, '2.8'), +('USA', 'French', 0, '0.69999999'), +('VIR', 'French', 0, '2.5'), +('ZWE', 'English', 1, '2.2'), +('AFG', 'Turkmenian', 0, '1.9'), +('NLD', 'Turkish', 0, '0.80000001'), +('AND', 'French', 0, '6.1999998'), +('AGO', 'Luimbe-nganguela', 0, '5.4000001'), +('ABW', 'Dutch', 1, '5.3000002'), +('AUS', 'Canton Chinese', 0, '1.1'), +('AZE', 'Armenian', 0, '2'), +('BGD', 'Garo', 0, '0.1'), +('BEL', 'Arabic', 0, '1.6'), +('BLZ', 'Garifuna', 0, '6.8000002'), +('BEN', 'Aizo', 0, '8.6999998'), +('BOL', 'Guaraní', 0, '0.1'), +('BWA', 'Khoekhoe', 0, '2.5'), +('BRA', 'Japanese', 0, '0.40000001'), +('BRN', 'English', 0, '3.0999999'), +('BGR', 'Macedonian', 0, '2.5999999'), +('BFA', 'Busansi', 0, '3.5'), +('CHL', 'Rapa nui', 0, '0.2'), +('CRI', 'Chinese', 0, '0.2'), +('ERI', 'Hadareb', 0, '3.8'), +('ESP', 'Basque', 0, '1.6'), +('ZAF', 'Northsotho', 0, '9.1000004'), +('ETH', 'Gurage', 0, '4.6999998'), +('PHL', 'Hiligaynon', 0, '9.1000004'), +('GAB', 'Mbete', 0, '13.8'), +('GMB', 'Diola', 0, '9.1999998'), +('GEO', 'Azerbaijani', 0, '5.5'), +('GHA', 'Ga-adangme', 0, '7.8000002'), +('GUM', 'Korean', 0, '3.3'), +('GTM', 'Kekchí', 0, '4.9000001'), +('GIN', 'Kissi', 0, '6'), +('GNB', 'Portuguese', 1, '8.1000004'), +('HND', 'Miskito', 0, '0.2'), +('HKG', 'Hakka', 0, '1.6'), +('IDN', 'Madura', 0, '4.3000002'), +('IND', 'Marathi', 0, '7.4000001'), +('IRQ', 'Assyrian', 0, '0.80000001'), +('IRN', 'Gilaki', 0, '5.3000002'), +('ITA', 'French', 0, '0.5'), +('AUT', 'Hungarian', 0, '0.40000001'), +('JPN', 'English', 0, '0.1'), +('YUG', 'Romani', 0, '1.4'), +('KHM', 'Tšam', 0, '2.4000001'), +('CMR', 'Ful', 0, '9.6000004'), +('CAN', 'Italian', 0, '1.7'), +('KAZ', 'German', 0, '3.0999999'), +('KEN', 'Kamba', 0, '11.2'), +('CAF', 'Ngbaka', 0, '7.5'), +('CHN', 'Hui', 0, '0.80000001'), +('KGZ', 'Ukrainian', 0, '1.7'), +('COL', 'Arawakan', 0, '0.1'), +('COM', 'Comorian-Arabic', 0, '1.6'), +('COG', 'Mbete', 0, '4.8000002'), +('COD', 'Rwanda', 0, '10.3'), +('LAO', 'Lao-Soung', 0, '5.1999998'), +('LVA', 'Ukrainian', 0, '2.9000001'), +('LBR', 'Gio', 0, '7.9000001'), +('LTU', 'Belorussian', 0, '1.4'), +('LUX', 'French', 1, '4.1999998'), +('MAC', 'English', 0, '0.5'), +('MKD', 'Romani', 0, '2.3'), +('MWI', 'Ngoni', 0, '6.6999998'), +('MYS', 'Iban', 0, '2.8'), +('MLI', 'Soninke', 0, '8.6999998'), +('MRT', 'Soninke', 0, '2.7'), +('MUS', 'Hindi', 0, '1.2'), +('MEX', 'Zapotec', 0, '0.60000002'), +('FSM', 'Kosrean', 0, '7.3000002'), +('MDA', 'Gagauzi', 0, '3.2'), +('MCO', 'English', 0, '6.5'), +('MNG', 'Bajad', 0, '1.9'), +('MOZ', 'Lomwe', 0, '7.8000002'), +('MMR', 'Rakhine', 0, '4.5'), +('NAM', 'Afrikaans', 0, '9.5'), +('NRU', 'Tuvalu', 0, '8.5'), +('NPL', 'Tharu', 0, '5.4000001'), +('NIC', 'Sumo', 0, '0.2'), +('NER', 'Ful', 0, '9.6999998'), +('NGA', 'Ful', 0, '11.3'), +('NOR', 'Swedish', 0, '0.30000001'), +('CIV', 'Kru', 0, '10.5'), +('PAK', 'Saraiki', 0, '9.8000002'), +('PLW', 'Chinese', 0, '1.6'), +('PAN', 'Cuna', 0, '2'), +('PRY', 'German', 0, '0.89999998'), +('MNP', 'Korean', 0, '6.5'), +('POL', 'Belorussian', 0, '0.5'), +('FRA', 'Italian', 0, '0.40000001'), +('REU', 'Malagasy', 0, '1.4'), +('ROM', 'German', 0, '0.40000001'), +('SWE', 'Arabic', 0, '0.80000001'), +('DEU', 'Italian', 0, '0.69999999'), +('ZMB', 'Lozi', 0, '6.4000001'), +('SEN', 'Diola', 0, '5'), +('SLE', 'Kono-vai', 0, '5.0999999'), +('SVK', 'Czech and Moravian', 0, '1.1'), +('SDN', 'Beja', 0, '6.4000001'), +('FIN', 'Estonian', 0, '0.2'), +('CHE', 'Romansh', 1, '0.60000002'), +('TWN', 'Ami', 0, '0.60000002'), +('TZA', 'Haya', 0, '5.9000001'), +('DNK', 'German', 0, '0.5'), +('THA', 'Malay', 0, '3.5999999'), +('TGO', 'Kotokoli', 0, '5.6999998'), +('TCD', 'Kanem-bornu', 0, '9'), +('CZE', 'Polish', 0, '0.60000002'), +('TKM', 'Kazakh', 0, '2'), +('UGA', 'Soga', 0, '8.1999998'), +('UKR', 'Bulgariana', 0, '0.30000001'), +('HUN', 'Serbo-Croatian', 0, '0.2'), +('UZB', 'Kazakh', 0, '3.8'), +('BLR', 'Polish', 0, '0.60000002'), +('RUS', 'Chuvash', 0, '0.89999998'), +('VNM', 'Muong', 0, '1.5'), +('EST', 'Belorussian', 0, '1.4'), +('USA', 'German', 0, '0.69999999'), +('ZWE', 'Nyanja', 0, '2.2'), +('AFG', 'Balochi', 0, '0.89999998'), +('AGO', 'Nyaneka-nkhumbi', 0, '5.4000001'), +('AUS', 'Arabic', 0, '1'), +('BGD', 'Khasi', 0, '0.1'), +('BEL', 'German', 1, '1'), +('BEN', 'Bariba', 0, '8.6999998'), +('BWA', 'Ndebele', 0, '1.3'), +('BRA', 'Indian Languages', 0, '0.2'), +('BFA', 'Dagara', 0, '3.0999999'), +('ERI', 'Bilin', 0, '3'), +('ZAF', 'English', 1, '8.5'), +('ETH', 'Somali', 0, '4.0999999'), +('PHL', 'Bicol', 0, '5.6999998'), +('GMB', 'Soninke', 0, '7.5999999'), +('GEO', 'Osseetti', 0, '2.4000001'), +('GHA', 'Gurma', 0, '3.3'), +('GUM', 'Japanese', 0, '2'), +('GTM', 'Mam', 0, '2.7'), +('GIN', 'Kpelle', 0, '4.5999999'), +('GNB', 'Malinke', 0, '6.9000001'), +('HKG', 'Chiu chau', 0, '1.4'), +('IDN', 'Minangkabau', 0, '2.4000001'), +('IND', 'Tamil', 0, '6.3000002'), +('IRQ', 'Persian', 0, '0.80000001'), +('IRN', 'Luri', 0, '4.3000002'), +('ITA', 'German', 0, '0.5'), +('AUT', 'Slovene', 0, '0.40000001'), +('JPN', 'Philippene Languages', 0, '0.1'), +('YUG', 'Slovak', 0, '0.69999999'), +('CMR', 'Tikar', 0, '7.4000001'), +('CAN', 'German', 0, '1.6'), +('KAZ', 'Uzbek', 0, '2.3'), +('KEN', 'Kalenjin', 0, '10.8'), +('CAF', 'Sara', 0, '6.4000001'), +('CHN', 'Miao', 0, '0.69999999'), +('KGZ', 'Tatar', 0, '1.3'), +('COL', 'Caribbean', 0, '0.1'), +('COM', 'Comorian-Swahili', 0, '0.5'), +('COG', 'Punu', 0, '2.9000001'), +('COD', 'Zande', 0, '6.0999999'), +('LVA', 'Polish', 0, '2.0999999'), +('LBR', 'Kru', 0, '7.1999998'), +('LTU', 'Ukrainian', 0, '1.1'), +('LUX', 'German', 1, '2.3'), +('MKD', 'Serbo-Croatian', 0, '2'), +('MYS', 'English', 0, '1.6'), +('MLI', 'Tamashek', 0, '7.3000002'), +('MRT', 'Ful', 0, '1.2'), +('MUS', 'Tamil', 0, '0.80000001'), +('MEX', 'Mixtec', 0, '0.60000002'), +('FSM', 'Yap', 0, '5.8000002'), +('MDA', 'Bulgariana', 0, '1.6'), +('MNG', 'Buryat', 0, '1.7'), +('MOZ', 'Shona', 0, '6.5'), +('MMR', 'Mon', 0, '2.4000001'), +('NAM', 'Herero', 0, '8'), +('NRU', 'English', 1, '7.5'), +('NPL', 'Tamang', 0, '4.9000001'), +('NER', 'Kanuri', 0, '4.4000001'), +('NGA', 'Ibibio', 0, '5.5999999'), +('NOR', 'Saame', 0, '0'), +('CIV', '[South]Mande', 0, '7.6999998'), +('PAK', 'Urdu', 1, '7.5999999'), +('PAN', 'Embera', 0, '0.60000002'), +('MNP', 'English', 1, '4.8000002'), +('FRA', 'Spanish', 0, '0.40000001'), +('REU', 'Tamil', 0, '0'), +('ROM', 'Ukrainian', 0, '0.30000001'), +('SWE', 'Spanish', 0, '0.60000002'), +('DEU', 'Greek', 0, '0.40000001'), +('ZMB', 'Chewa', 0, '5.6999998'), +('SEN', 'Malinke', 0, '3.8'), +('SLE', 'Bullom-sherbro', 0, '3.8'), +('SVK', 'Ukrainian and Russian', 0, '0.60000002'), +('SDN', 'Nuer', 0, '4.9000001'), +('FIN', 'Saame', 0, '0'), +('TWN', 'Atayal', 0, '0.40000001'), +('TZA', 'Makonde', 0, '5.9000001'), +('DNK', 'English', 0, '0.30000001'), +('THA', 'Khmer', 0, '1.3'), +('TGO', 'Ane', 0, '5.6999998'), +('TCD', 'Ouaddai', 0, '8.6999998'), +('CZE', 'German', 0, '0.5'), +('UGA', 'Teso', 0, '6'), +('UKR', 'Hungarian', 0, '0.30000001'), +('HUN', 'Romanian', 0, '0.1'), +('UZB', 'Karakalpak', 0, '2'), +('RUS', 'Bashkir', 0, '0.69999999'), +('VNM', 'Chinese', 0, '1.4'), +('EST', 'Finnish', 0, '0.69999999'), +('USA', 'Italian', 0, '0.60000002'), +('AGO', 'Chokwe', 0, '4.1999998'), +('AUS', 'Vietnamese', 0, '0.80000001'), +('BGD', 'Santhali', 0, '0.1'), +('BEL', 'Turkish', 0, '0.89999998'), +('BEN', 'Somba', 0, '6.6999998'), +('BFA', 'Dyula', 0, '2.5999999'), +('ERI', 'Saho', 0, '3'), +('ZAF', 'Tswana', 0, '8.1000004'), +('ETH', 'Sidamo', 0, '3.2'), +('PHL', 'Waray-waray', 0, '3.8'), +('GEO', 'Abhyasi', 0, '1.7'), +('GHA', 'Joruba', 0, '1.3'), +('GIN', 'Yalunka', 0, '2.9000001'), +('GNB', 'Mandyako', 0, '4.9000001'), +('IDN', 'Batakki', 0, '2.2'), +('IND', 'Urdu', 0, '5.0999999'), +('IRN', 'Mazandarani', 0, '3.5999999'), +('ITA', 'Albaniana', 0, '0.2'), +('AUT', 'Polish', 0, '0.2'), +('JPN', 'Ainu', 0, '0'), +('YUG', 'Macedonian', 0, '0.5'), +('CMR', 'Mandara', 0, '5.6999998'), +('CAN', 'Polish', 0, '0.69999999'), +('KAZ', 'Tatar', 0, '2'), +('KEN', 'Gusii', 0, '6.0999999'), +('CAF', 'Mbum', 0, '6.4000001'), +('CHN', 'Uighur', 0, '0.60000002'), +('KGZ', 'Kazakh', 0, '0.80000001'), +('COG', 'Sango', 0, '2.5999999'), +('COD', 'Ngala and Bangi', 0, '5.8000002'), +('LVA', 'Lithuanian', 0, '1.2'), +('LBR', 'Mano', 0, '7.1999998'), +('MYS', 'Dusun', 0, '1.1'), +('MLI', 'Songhai', 0, '6.9000001'), +('MRT', 'Zenaga', 0, '1.2'), +('MUS', 'Marathi', 0, '0.69999999'), +('MEX', 'Otomí', 0, '0.40000001'), +('FSM', 'Wolea', 0, '3.7'), +('MNG', 'Dariganga', 0, '1.4'), +('MOZ', 'Tswa', 0, '6'), +('MMR', 'Chin', 0, '2.2'), +('NAM', 'Caprivi', 0, '4.6999998'), +('NPL', 'Newari', 0, '3.7'), +('NGA', 'Kanuri', 0, '4.0999999'), +('PAK', 'Balochi', 0, '3'), +('PAN', 'Arabic', 0, '0.60000002'), +('MNP', 'Carolinian', 0, '4.8000002'), +('FRA', 'Turkish', 0, '0.40000001'), +('ROM', 'Serbo-Croatian', 0, '0.1'), +('SWE', 'Norwegian', 0, '0.5'), +('DEU', 'Polish', 0, '0.30000001'), +('ZMB', 'Nsenga', 0, '4.3000002'), +('SEN', 'Soninke', 0, '1.3'), +('SLE', 'Ful', 0, '3.8'), +('SDN', 'Zande', 0, '2.7'), +('TWN', 'Paiwan', 0, '0.30000001'), +('TZA', 'Nyakusa', 0, '5.4000001'), +('DNK', 'Swedish', 0, '0.30000001'), +('THA', 'Kuy', 0, '1.1'), +('TGO', 'Moba', 0, '5.4000001'), +('TCD', 'Hadjarai', 0, '6.6999998'), +('CZE', 'Silesiana', 0, '0.40000001'), +('UGA', 'Lango', 0, '5.9000001'), +('UKR', 'Belorussian', 0, '0.30000001'), +('HUN', 'Slovak', 0, '0.1'), +('UZB', 'Tatar', 0, '1.8'), +('RUS', 'Chechen', 0, '0.60000002'), +('VNM', 'Khmer', 0, '1.4'), +('USA', 'Chinese', 0, '0.60000002'), +('AGO', 'Luvale', 0, '3.5999999'), +('AUS', 'Serbo-Croatian', 0, '0.60000002'), +('BGD', 'Tripuri', 0, '0.1'), +('BEN', 'Ful', 0, '5.5999999'), +('ZAF', 'Southsotho', 0, '7.5999999'), +('ETH', 'Walaita', 0, '2.8'), +('PHL', 'Pampango', 0, '3'), +('GIN', 'Loma', 0, '2.3'), +('IDN', 'Bugi', 0, '2.2'), +('IND', 'Gujarati', 0, '4.8000002'), +('IRN', 'Balochi', 0, '2.3'), +('ITA', 'Slovene', 0, '0.2'), +('AUT', 'Czech', 0, '0.2'), +('CMR', 'Maka', 0, '4.9000001'), +('CAN', 'Spanish', 0, '0.69999999'), +('KEN', 'Meru', 0, '5.5'), +('CHN', 'Yi', 0, '0.60000002'), +('KGZ', 'Tadzhik', 0, '0.80000001'), +('COD', 'Rundi', 0, '3.8'), +('LBR', 'Loma', 0, '5.8000002'), +('MOZ', 'Chuabo', 0, '5.6999998'), +('MMR', 'Kachin', 0, '1.4'), +('NAM', 'San', 0, '1.9'), +('NPL', 'Hindi', 0, '3'), +('NGA', 'Edo', 0, '3.3'), +('PAK', 'Hindko', 0, '2.4000001'), +('SLE', 'Kuranko', 0, '3.4000001'), +('SDN', 'Bari', 0, '2.5'), +('TZA', 'Chaga and Pare', 0, '4.9000001'), +('DNK', 'Norwegian', 0, '0.30000001'), +('TGO', 'Naudemba', 0, '4.0999999'), +('TCD', 'Tandjile', 0, '6.5'), +('CZE', 'Romani', 0, '0.30000001'), +('UGA', 'Lugbara', 0, '4.6999998'), +('UKR', 'Polish', 0, '0.1'), +('RUS', 'Mordva', 0, '0.5'), +('VNM', 'Nung', 0, '1.1'), +('USA', 'Tagalog', 0, '0.40000001'), +('AGO', 'Ambo', 0, '2.4000001'), +('AUS', 'German', 0, '0.60000002'), +('ZAF', 'Tsonga', 0, '4.3000002'), +('PHL', 'Pangasinan', 0, '1.8'), +('IDN', 'Banja', 0, '1.8'), +('IND', 'Kannada', 0, '3.9000001'), +('IRN', 'Arabic', 0, '2.2'), +('ITA', 'Romani', 0, '0.2'), +('AUT', 'Romanian', 0, '0.2'), +('CMR', 'Masana', 0, '3.9000001'), +('CAN', 'Portuguese', 0, '0.69999999'), +('KEN', 'Nyika', 0, '4.8000002'), +('CHN', 'Tujia', 0, '0.5'), +('COD', 'Teke', 0, '2.7'), +('LBR', 'Malinke', 0, '5.0999999'), +('MOZ', 'Ronga', 0, '3.7'), +('MMR', 'Kayah', 0, '0.40000001'), +('NAM', 'German', 0, '0.89999998'), +('NGA', 'Tiv', 0, '2.3'), +('PAK', 'Brahui', 0, '1.2'), +('SLE', 'Yalunka', 0, '3.4000001'), +('SDN', 'Fur', 0, '2.0999999'), +('TZA', 'Luguru', 0, '4.9000001'), +('TGO', 'Gurma', 0, '3.4000001'), +('TCD', 'Gorane', 0, '6.1999998'), +('CZE', 'Hungarian', 0, '0.2'), +('UGA', 'Gisu', 0, '4.5'), +('RUS', 'Kazakh', 0, '0.40000001'), +('VNM', 'Miao', 0, '0.89999998'), +('USA', 'Polish', 0, '0.30000001'), +('AGO', 'Luchazi', 0, '2.4000001'), +('ZAF', 'Swazi', 0, '2.5'), +('PHL', 'Maguindanao', 0, '1.4'), +('IDN', 'Bali', 0, '1.7'), +('IND', 'Malajalam', 0, '3.5999999'), +('IRN', 'Bakhtyari', 0, '1.7'), +('CAN', 'Punjabi', 0, '0.69999999'), +('KEN', 'Masai', 0, '1.6'), +('CHN', 'Mongolian', 0, '0.40000001'), +('COD', 'Boa', 0, '2.3'), +('MOZ', 'Marendje', 0, '3.5'), +('NGA', 'Ijo', 0, '1.8'), +('SDN', 'Chilluk', 0, '1.7'), +('TZA', 'Shambala', 0, '4.3000002'), +('UGA', 'Acholi', 0, '4.4000001'), +('RUS', 'Avarian', 0, '0.40000001'), +('VNM', 'Man', 0, '0.69999999'), +('USA', 'Korean', 0, '0.30000001'), +('ZAF', 'Venda', 0, '2.2'), +('PHL', 'Maranao', 0, '1.3'), +('IND', 'Orija', 0, '3.3'), +('IRN', 'Turkmenian', 0, '1.6'), +('CAN', 'Ukrainian', 0, '0.60000002'), +('KEN', 'Turkana', 0, '1.4'), +('CHN', 'Tibetan', 0, '0.40000001'), +('COD', 'Chokwe', 0, '1.8'), +('MOZ', 'Nyanja', 0, '3.3'), +('NGA', 'Bura', 0, '1.6'), +('SDN', 'Lotuko', 0, '1.5'), +('TZA', 'Gogo', 0, '3.9000001'), +('UGA', 'Rwanda', 0, '3.2'), +('RUS', 'Mari', 0, '0.40000001'), +('USA', 'Vietnamese', 0, '0.2'), +('ZAF', 'Ndebele', 0, '1.5'), +('IND', 'Punjabi', 0, '2.8'), +('CAN', 'Dutch', 0, '0.5'), +('CHN', 'Puyi', 0, '0.2'), +('TZA', 'Ha', 0, '3.5'), +('RUS', 'Udmur', 0, '0.30000001'), +('USA', 'Japanese', 0, '0.2'), +('IND', 'Asami', 0, '1.5'), +('CAN', 'Eskimo Languages', 0, '0.1'), +('CHN', 'Dong', 0, '0.2'), +('RUS', 'Belorussian', 0, '0.30000001'), +('USA', 'Portuguese', 0, '0.2'); From 62abe1f40917ed35c40ecfdff4ca2884d75e0b98 Mon Sep 17 00:00:00 2001 From: phdoerfler Date: Mon, 13 Jul 2026 11:56:44 +0200 Subject: [PATCH 09/10] Pin explicit NULL placement in ORDER BY for H2 Port of the doobie-sqlite NullOrderingSuite: all four ascending x nullsLast combinations, ordered through a limit over a fixture whose nullable column actually contains NULLs. The limit matters because grackle core re-sorts fetched rows in memory (stripCompiled preserves OrderBy), so a dialect's SQL-side NULL placement is only observable when it decides which rows survive the cut. Verified to fail (the two non-default placement cases) against the pg-polarity rendering this dialect shipped with before review, and to pass with the corrected mirror-image rendering. --- .../scala/DoobieH2NullOrderingSuite.scala | 147 ++++++++++++++++++ testdata/h2/null-ordering.sql | 10 ++ 2 files changed, 157 insertions(+) create mode 100644 modules/doobie-h2/src/test/scala/DoobieH2NullOrderingSuite.scala create mode 100644 testdata/h2/null-ordering.sql diff --git a/modules/doobie-h2/src/test/scala/DoobieH2NullOrderingSuite.scala b/modules/doobie-h2/src/test/scala/DoobieH2NullOrderingSuite.scala new file mode 100644 index 00000000..4c7c707d --- /dev/null +++ b/modules/doobie-h2/src/test/scala/DoobieH2NullOrderingSuite.scala @@ -0,0 +1,147 @@ +// Copyright (c) 2016-2025 Association of Universities for Research in Astronomy, Inc. (AURA) +// Copyright (c) 2016-2025 Grackle Contributors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package grackle.doobie.h2.test + +// Pins explicit NULL placement in ORDER BY across all four (ascending x nullsLast) cases; +// mirror of the doobie-sqlite NullOrderingSuite, over the same fixture shape. +// +// Two things shape this suite, both easy to trip over: +// - No shared sql-core fixture orders a nullable column whose data actually contains NULLs, so +// the shared suites cannot observe where a dialect puts them; hence a local fixture +// (testdata/h2/null-ordering.sql) with NULLs in the ordered column. +// - stripCompiled in SqlMappingLike strips Offset/Limit (SQL is authoritative for them) but +// deliberately preserves OrderBy, so grackle core re-sorts the fetched rows in memory with +// engine-independent NULL semantics. A dialect that renders NULL placement wrongly therefore +// still produces correct results for any query that fetches all rows - the SQL-side placement +// is only observable when it decides which rows survive a LIMIT cut. Every test here uses +// limit for exactly that reason, and asserts on the surviving ids, in order. +// +// H2 sorts NULLs low by default (first in ASC, last in DESC), so the two cases requesting the +// opposite placement only work if the dialect emits an explicit NULLS FIRST/LAST. + +import cats.effect.IO + +import grackle.Query.{Binding, Limit, OrderBy, OrderSelection, OrderSelections} +import grackle.QueryCompiler.{Elab, SelectElaborator} +import grackle.Value.{BooleanValue, IntValue} +import grackle.sql.test._ +import grackle.syntax._ + +trait NullOrderingMapping[F[_]] extends SqlTestMapping[F] { + + object nullOrdering extends TableDef("null_ordering") { + val id = col("id", int4) + val v = col("v", nullable(int4)) + } + + val schema = + schema""" + type Query { + items(ascending: Boolean!, nullsLast: Boolean!, limit: Int!): [Item!]! + } + type Item { + id: Int! + v: Int + } + """ + + val QueryType = schema.ref("Query") + val ItemType = schema.ref("Item") + + val typeMappings = + List( + ObjectMapping( + tpe = QueryType, + fieldMappings = List( + SqlObject("items") + ) + ), + ObjectMapping( + tpe = ItemType, + fieldMappings = List( + SqlField("id", nullOrdering.id, key = true), + SqlField("v", nullOrdering.v) + ) + ) + ) + + override val selectElaborator = SelectElaborator { + case ( + QueryType, + "items", + List( + Binding("ascending", BooleanValue(asc)), + Binding("nullsLast", BooleanValue(nl)), + Binding("limit", IntValue(lim)))) => + Elab.transformChild(child => + Limit( + lim, + OrderBy( + OrderSelections( + List( + OrderSelection[Option[Int]](ItemType / "v", ascending = asc, nullsLast = nl), + // Secondary key so the order within the NULL block is deterministic. + OrderSelection[Int](ItemType / "id") + )), + child + ) + ).success) + } +} + +final class NullOrderingSuite extends DoobieH2DatabaseSuite { + lazy val mapping = new DoobieH2TestMapping(transactor) with NullOrderingMapping[IO] + + // Fixture rows (id, v): (1, 10), (2, NULL), (3, 5), (4, NULL). + def surviving(ascending: Boolean, nullsLast: Boolean): IO[List[Int]] = { + val query = + s""" + query { + items(ascending: $ascending, nullsLast: $nullsLast, limit: 2) { + id + v + } + } + """ + mapping.compileAndRun(query).map { json => + json + .hcursor + .downField("data") + .downField("items") + .focus + .flatMap(_.asArray) + .getOrElse(fail(s"unexpected response: $json")) + .toList + .map(_.hcursor.get[Int]("id").getOrElse(fail(s"unexpected response: $json"))) + } + } + + test("ascending, nulls last (non-default for H2)") { + assertIO(surviving(ascending = true, nullsLast = true), List(3, 1)) + } + + test("descending, nulls first (non-default for H2)") { + assertIO(surviving(ascending = false, nullsLast = false), List(2, 4)) + } + + test("ascending, nulls first (H2's default placement)") { + assertIO(surviving(ascending = true, nullsLast = false), List(2, 4)) + } + + test("descending, nulls last (H2's default placement)") { + assertIO(surviving(ascending = false, nullsLast = true), List(1, 3)) + } +} diff --git a/testdata/h2/null-ordering.sql b/testdata/h2/null-ordering.sql new file mode 100644 index 00000000..2bc83949 --- /dev/null +++ b/testdata/h2/null-ordering.sql @@ -0,0 +1,10 @@ +CREATE TABLE null_ordering ( + id INTEGER PRIMARY KEY, + v INTEGER +); + +INSERT INTO null_ordering (id, v) VALUES +(1, 10), +(2, NULL), +(3, 5), +(4, NULL); From d5b47b69e00a406ef11b41c644129e7eb806b93c Mon Sep 17 00:00:00 2001 From: phdoerfler Date: Fri, 17 Jul 2026 22:45:03 +0200 Subject: [PATCH 10/10] Remove now-redundant local NullOrderingSuite Superseded by the shared SqlNullOrderingMapping/SqlNullOrderingSuite in sql-core, landing via typelevel/grackle#870. This branch will pick that up once it rebases past #870's merge. --- .../scala/DoobieH2NullOrderingSuite.scala | 147 ------------------ testdata/h2/null-ordering.sql | 10 -- 2 files changed, 157 deletions(-) delete mode 100644 modules/doobie-h2/src/test/scala/DoobieH2NullOrderingSuite.scala delete mode 100644 testdata/h2/null-ordering.sql diff --git a/modules/doobie-h2/src/test/scala/DoobieH2NullOrderingSuite.scala b/modules/doobie-h2/src/test/scala/DoobieH2NullOrderingSuite.scala deleted file mode 100644 index 4c7c707d..00000000 --- a/modules/doobie-h2/src/test/scala/DoobieH2NullOrderingSuite.scala +++ /dev/null @@ -1,147 +0,0 @@ -// Copyright (c) 2016-2025 Association of Universities for Research in Astronomy, Inc. (AURA) -// Copyright (c) 2016-2025 Grackle Contributors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package grackle.doobie.h2.test - -// Pins explicit NULL placement in ORDER BY across all four (ascending x nullsLast) cases; -// mirror of the doobie-sqlite NullOrderingSuite, over the same fixture shape. -// -// Two things shape this suite, both easy to trip over: -// - No shared sql-core fixture orders a nullable column whose data actually contains NULLs, so -// the shared suites cannot observe where a dialect puts them; hence a local fixture -// (testdata/h2/null-ordering.sql) with NULLs in the ordered column. -// - stripCompiled in SqlMappingLike strips Offset/Limit (SQL is authoritative for them) but -// deliberately preserves OrderBy, so grackle core re-sorts the fetched rows in memory with -// engine-independent NULL semantics. A dialect that renders NULL placement wrongly therefore -// still produces correct results for any query that fetches all rows - the SQL-side placement -// is only observable when it decides which rows survive a LIMIT cut. Every test here uses -// limit for exactly that reason, and asserts on the surviving ids, in order. -// -// H2 sorts NULLs low by default (first in ASC, last in DESC), so the two cases requesting the -// opposite placement only work if the dialect emits an explicit NULLS FIRST/LAST. - -import cats.effect.IO - -import grackle.Query.{Binding, Limit, OrderBy, OrderSelection, OrderSelections} -import grackle.QueryCompiler.{Elab, SelectElaborator} -import grackle.Value.{BooleanValue, IntValue} -import grackle.sql.test._ -import grackle.syntax._ - -trait NullOrderingMapping[F[_]] extends SqlTestMapping[F] { - - object nullOrdering extends TableDef("null_ordering") { - val id = col("id", int4) - val v = col("v", nullable(int4)) - } - - val schema = - schema""" - type Query { - items(ascending: Boolean!, nullsLast: Boolean!, limit: Int!): [Item!]! - } - type Item { - id: Int! - v: Int - } - """ - - val QueryType = schema.ref("Query") - val ItemType = schema.ref("Item") - - val typeMappings = - List( - ObjectMapping( - tpe = QueryType, - fieldMappings = List( - SqlObject("items") - ) - ), - ObjectMapping( - tpe = ItemType, - fieldMappings = List( - SqlField("id", nullOrdering.id, key = true), - SqlField("v", nullOrdering.v) - ) - ) - ) - - override val selectElaborator = SelectElaborator { - case ( - QueryType, - "items", - List( - Binding("ascending", BooleanValue(asc)), - Binding("nullsLast", BooleanValue(nl)), - Binding("limit", IntValue(lim)))) => - Elab.transformChild(child => - Limit( - lim, - OrderBy( - OrderSelections( - List( - OrderSelection[Option[Int]](ItemType / "v", ascending = asc, nullsLast = nl), - // Secondary key so the order within the NULL block is deterministic. - OrderSelection[Int](ItemType / "id") - )), - child - ) - ).success) - } -} - -final class NullOrderingSuite extends DoobieH2DatabaseSuite { - lazy val mapping = new DoobieH2TestMapping(transactor) with NullOrderingMapping[IO] - - // Fixture rows (id, v): (1, 10), (2, NULL), (3, 5), (4, NULL). - def surviving(ascending: Boolean, nullsLast: Boolean): IO[List[Int]] = { - val query = - s""" - query { - items(ascending: $ascending, nullsLast: $nullsLast, limit: 2) { - id - v - } - } - """ - mapping.compileAndRun(query).map { json => - json - .hcursor - .downField("data") - .downField("items") - .focus - .flatMap(_.asArray) - .getOrElse(fail(s"unexpected response: $json")) - .toList - .map(_.hcursor.get[Int]("id").getOrElse(fail(s"unexpected response: $json"))) - } - } - - test("ascending, nulls last (non-default for H2)") { - assertIO(surviving(ascending = true, nullsLast = true), List(3, 1)) - } - - test("descending, nulls first (non-default for H2)") { - assertIO(surviving(ascending = false, nullsLast = false), List(2, 4)) - } - - test("ascending, nulls first (H2's default placement)") { - assertIO(surviving(ascending = true, nullsLast = false), List(2, 4)) - } - - test("descending, nulls last (H2's default placement)") { - assertIO(surviving(ascending = false, nullsLast = true), List(1, 3)) - } -} diff --git a/testdata/h2/null-ordering.sql b/testdata/h2/null-ordering.sql deleted file mode 100644 index 2bc83949..00000000 --- a/testdata/h2/null-ordering.sql +++ /dev/null @@ -1,10 +0,0 @@ -CREATE TABLE null_ordering ( - id INTEGER PRIMARY KEY, - v INTEGER -); - -INSERT INTO null_ordering (id, v) VALUES -(1, 10), -(2, NULL), -(3, 5), -(4, NULL);