MCPcopy Create free account
hub / github.com/ClickHouse/ClickHouse / registerDataTypeString

Function registerDataTypeString

src/DataTypes/DataTypeString.cpp:63–122  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

61}
62
63void registerDataTypeString(DataTypeFactory & factory)
64{
65 factory.registerDataType("String", create, DataTypeFactory::Case::Sensitive,
66 Documentation{
67 .description = R"DOCS_MD(
68Strings of an arbitrary length. The length is not limited. The value can contain an arbitrary set of bytes, including null bytes.
69The String type replaces the types VARCHAR, BLOB, CLOB, and others from other DBMSs.
70
71When creating tables, numeric parameters for string fields can be set (e.g. `VARCHAR(255)`), but ClickHouse ignores them.
72
73Aliases:
74
75- `String` — `LONGTEXT`, `MEDIUMTEXT`, `TINYTEXT`, `TEXT`, `LONGBLOB`, `MEDIUMBLOB`, `TINYBLOB`, `BLOB`, `VARCHAR`, `CHAR`, `CHAR LARGE OBJECT`, `CHAR VARYING`, `CHARACTER LARGE OBJECT`, `CHARACTER VARYING`, `NCHAR LARGE OBJECT`, `NCHAR VARYING`, `NATIONAL CHARACTER LARGE OBJECT`, `NATIONAL CHARACTER VARYING`, `NATIONAL CHAR VARYING`, `NATIONAL CHARACTER`, `NATIONAL CHAR`, `BINARY LARGE OBJECT`, `BINARY VARYING`,
76
77## Encodings {#encodings}
78
79ClickHouse does not have the concept of encodings. Strings can contain an arbitrary set of bytes, which are stored and output as-is.
80If you need to store texts, we recommend using UTF-8 encoding. At the very least, if your terminal uses UTF-8 (as recommended), you can read and write your values without making conversions.
81Similarly, certain functions for working with strings have separate variations that work under the assumption that the string contains a set of bytes representing a UTF-8 encoded text.
82For example, the [length](/sql-reference/functions/array-functions#length) function calculates the string length in bytes, while the [lengthUTF8](../functions/string-functions.md#lengthUTF8) function calculates the string length in Unicode code points, assuming that the value is UTF-8 encoded.
83)DOCS_MD",
84 .syntax = "String",
85 .related = {"FixedString"},
86 });
87
88 /// These synonims are added for compatibility.
89
90 factory.registerAlias("CHAR", "String", DataTypeFactory::Case::Insensitive);
91 factory.registerAlias("NCHAR", "String", DataTypeFactory::Case::Insensitive);
92 factory.registerAlias("CHARACTER", "String", DataTypeFactory::Case::Insensitive);
93 factory.registerAlias("VARCHAR", "String", DataTypeFactory::Case::Insensitive);
94 factory.registerAlias("NVARCHAR", "String", DataTypeFactory::Case::Insensitive);
95 factory.registerAlias("VARCHAR2", "String", DataTypeFactory::Case::Insensitive); /// Oracle
96 factory.registerAlias("TEXT", "String", DataTypeFactory::Case::Insensitive);
97 factory.registerAlias("TINYTEXT", "String", DataTypeFactory::Case::Insensitive);
98 factory.registerAlias("MEDIUMTEXT", "String", DataTypeFactory::Case::Insensitive);
99 factory.registerAlias("LONGTEXT", "String", DataTypeFactory::Case::Insensitive);
100 factory.registerAlias("BLOB", "String", DataTypeFactory::Case::Insensitive);
101 factory.registerAlias("CLOB", "String", DataTypeFactory::Case::Insensitive);
102 factory.registerAlias("TINYBLOB", "String", DataTypeFactory::Case::Insensitive);
103 factory.registerAlias("MEDIUMBLOB", "String", DataTypeFactory::Case::Insensitive);
104 factory.registerAlias("LONGBLOB", "String", DataTypeFactory::Case::Insensitive);
105 factory.registerAlias("BYTEA", "String", DataTypeFactory::Case::Insensitive); /// PostgreSQL
106
107 factory.registerAlias("CHARACTER LARGE OBJECT", "String", DataTypeFactory::Case::Insensitive);
108 factory.registerAlias("CHARACTER VARYING", "String", DataTypeFactory::Case::Insensitive);
109 factory.registerAlias("CHAR LARGE OBJECT", "String", DataTypeFactory::Case::Insensitive);
110 factory.registerAlias("CHAR VARYING", "String", DataTypeFactory::Case::Insensitive);
111 factory.registerAlias("NATIONAL CHAR", "String", DataTypeFactory::Case::Insensitive);
112 factory.registerAlias("NATIONAL CHARACTER", "String", DataTypeFactory::Case::Insensitive);
113 factory.registerAlias("NATIONAL CHARACTER LARGE OBJECT", "String", DataTypeFactory::Case::Insensitive);
114 factory.registerAlias("NATIONAL CHARACTER VARYING", "String", DataTypeFactory::Case::Insensitive);
115 factory.registerAlias("NATIONAL CHAR VARYING", "String", DataTypeFactory::Case::Insensitive);
116 factory.registerAlias("NCHAR VARYING", "String", DataTypeFactory::Case::Insensitive);
117 factory.registerAlias("NCHAR LARGE OBJECT", "String", DataTypeFactory::Case::Insensitive);
118 factory.registerAlias("BINARY LARGE OBJECT", "String", DataTypeFactory::Case::Insensitive);
119 factory.registerAlias("BINARY VARYING", "String", DataTypeFactory::Case::Insensitive);
120 factory.registerAlias("VARBINARY", "String", DataTypeFactory::Case::Insensitive);

Callers 1

DataTypeFactoryMethod · 0.85

Calls 2

registerDataTypeMethod · 0.80
registerAliasMethod · 0.80

Tested by

no test coverage detected