diff --git a/src/backend/postgres/table.rs b/src/backend/postgres/table.rs index 69ede96e3..824982d66 100644 --- a/src/backend/postgres/table.rs +++ b/src/backend/postgres/table.rs @@ -30,9 +30,11 @@ impl TableBuilder for PostgresQueryBuilder { }, ColumnType::Text => sql.write_str("text"), ColumnType::TinyInteger | ColumnType::TinyUnsigned => sql.write_str("smallint"), - ColumnType::SmallInteger | ColumnType::SmallUnsigned => sql.write_str("smallint"), - ColumnType::Integer | ColumnType::Unsigned => sql.write_str("integer"), - ColumnType::BigInteger | ColumnType::BigUnsigned => sql.write_str("bigint"), + ColumnType::SmallInteger => sql.write_str("smallint"), + ColumnType::Integer | ColumnType::SmallUnsigned => sql.write_str("integer"), + ColumnType::BigInteger | ColumnType::Unsigned | ColumnType::BigUnsigned => { + sql.write_str("bigint") + } ColumnType::Float => sql.write_str("real"), ColumnType::Double => sql.write_str("double precision"), ColumnType::Decimal(precision) => match precision { diff --git a/src/table/column.rs b/src/table/column.rs index 45b86cfab..679204218 100644 --- a/src/table/column.rs +++ b/src/table/column.rs @@ -42,8 +42,8 @@ impl From<&mut ColumnDef> for ColumnDef { /// | Integer | int | integer | integer | /// | BigInteger | bigint | bigint | integer | /// | TinyUnsigned | tinyint unsigned | smallint | tinyint | -/// | SmallUnsigned | smallint unsigned | smallint | smallint | -/// | Unsigned | int unsigned | integer | integer | +/// | SmallUnsigned | smallint unsigned | integer | smallint | +/// | Unsigned | int unsigned | bigint | integer | /// | BigUnsigned | bigint unsigned | bigint | integer | /// | Float | float | real | float | /// | Double | double | double precision | double | diff --git a/tests/postgres/table.rs b/tests/postgres/table.rs index 15e6fa9f1..570e176e4 100644 --- a/tests/postgres/table.rs +++ b/tests/postgres/table.rs @@ -91,8 +91,8 @@ fn create_3() { r#""id" integer GENERATED BY DEFAULT AS IDENTITY NOT NULL PRIMARY KEY,"#, r#""font_size" integer NOT NULL,"#, r#""character" varchar(255) NOT NULL,"#, - r#""size_w" integer NOT NULL,"#, - r#""size_h" integer NOT NULL,"#, + r#""size_w" bigint NOT NULL,"#, + r#""size_h" bigint NOT NULL,"#, r#""font_id" integer DEFAULT NULL,"#, r#"CONSTRAINT "FK_2e303c3a712662f1fc2a4d0aad6""#, r#"FOREIGN KEY ("font_id") REFERENCES "font" ("id")"#, @@ -731,8 +731,8 @@ fn create_19() { r#""id" integer GENERATED BY DEFAULT AS IDENTITY NOT NULL PRIMARY KEY,"#, r#""font_size" integer NOT NULL,"#, r#""character" varchar(255) NOT NULL,"#, - r#""size_w" integer NOT NULL,"#, - r#""size_h" integer NOT NULL,"#, + r#""size_w" bigint NOT NULL,"#, + r#""size_h" bigint NOT NULL,"#, r#""font_id" integer DEFAULT NULL,"#, r#"CONSTRAINT "idx-character-area" (("size_h" * "size_w"))"#, r#")"#, diff --git a/tests/postgres/types.rs b/tests/postgres/types.rs index 80631faab..f1a0be760 100644 --- a/tests/postgres/types.rs +++ b/tests/postgres/types.rs @@ -161,3 +161,19 @@ fn alter_6() { r#"ALTER TYPE "schema"."font" RENAME TO "typeface""# ) } + +#[test] +fn unsigned_types() { + let query_builder = PostgresQueryBuilder {}; + + let column_to_string = |column_type| { + let mut out = String::new(); + query_builder.prepare_column_type(column_type, &mut out); + out + }; + + assert_eq!(column_to_string(&ColumnType::TinyUnsigned), "smallint"); + assert_eq!(column_to_string(&ColumnType::SmallUnsigned), "integer"); + assert_eq!(column_to_string(&ColumnType::Unsigned), "bigint"); + assert_eq!(column_to_string(&ColumnType::BigUnsigned), "bigint"); +}