Database comparison table generated with crash-me

logo You can get a copy of crash-me from the MySQL 3.23 distribution at http://www.mysql.com.

crash-me is a program that automaticly detects limits and capabilities in a SQL server. We at TCX have worked very hard to make crash-me as fair and accurate as possible, but there is always a small possibility that some particular tests fails for some database, even if the database has the capability. We are always willing to correct this as soon as this comes to our attention. Some tests may fail because the database in questions does not follow ANSI SQL 92 or ODBC 3.0 but in this case we regard this as a failure in the database.
TCX is trying to add as much tests to the crash-me program as they can but it's always possible that some database vendor specific functions / queries aren't tested. If you find some entries not tested on a database please let us know and try to patch the crash-me program your self or give us some example queries so we can add those entries. We are always open for suggestions for adding things to the crash-me program. The crash-me program is also our input reference for the MySQL benchmark program.
Note: The crash-me table is generated from databases started with default parameters. If this is not the case, this is noted in the comment row. Some detected limits may also be configurable, OS dependent, depend of the Perl DBI driver or depending on the license of the used database version.

The following markers are used in the comparison table
MarkerDescription
yes Function is supported
no Function is not supported
error Function exists but didn't return expected result. This usually means that the database is using some non standard extension for the option in question
ignoredFunction doesn't give an error from the server but it doesn't do anything. One can probably do the same action with some other command
nonstandardFunction exists but doesn't work according to ANSI SQL 92 or ODBC 3.0
 Not relevant or not tested with the database
+numberAt least number operations is supported
warning Anyone with normal access to the database server can take it down, possible forever!

The crash-me comparisons

Function Informix 7.30C1PostgreSQL 6.5
Crash-me information
crash me safewarningyes
crash me version1.19a1.32
crash-me tested onWindows NT Version 4.0Linux 2.2.10 i686
ANSI SQL 92 types
InformixPostgreSQL
Type bitnono
Type bit(1 arg)nono
Type bit varying(1 arg)nono
Type char(1 arg)yesyes
Type char varying(1 arg)yesyes
Type character(1 arg)yesyes
Type character varying(1 arg)yesyes
Type dateyesyes
Type dec(2 arg)yesno
Type decimal(2 arg)yesyes
Type double precisionyesyes
Type floatyesyes
Type float(1 arg)yesyes
Type intyesyes
Type integeryesyes
Type interval day to second yes
Type interval yearnoyes
Type interval year to month yes
Type national char varying(1 arg) no
Type national character(1 arg) yes
Type national character varying(1 arg) yes
Type nchar(1 arg)yesyes
Type numeric(2 arg)yesyes
Type realyesyes
Type smallintyesyes
Type timenoyes
Type timestampnoyes
Type timestamp with time zone yes
Type varchar(1 arg)yesyes
ODBC 3.0 types
InformixPostgreSQL
Type bigintnono
Type binary(1 arg)nono
Type datetimenoyes
Type tinyintnono
Type varbinary(1 arg)nono
Other types
InformixPostgreSQL
Type abstimenoyes
Type bfilenono
Type blobnono
Type boolnoyes
Type boxnoyes
Type byteyesno
Type char(1 arg) binarynono
Type char16no 
Type char2no 
Type char4no 
Type char8no 
Type circlenoyes
Type clobnono
Type datetimenoyes
Type doublenono
Type enum(1 arg)nono
Type float(1 arg)nono
Type float4noyes
Type float8noyes
Type imagenono
Type int(1 arg) zerofillnono
Type int1nono
Type int2noyes
Type int3nono
Type int4noyes
Type int8noyes
Type int not null auto_incrementnono
Type int unsigned no
Type interval yes
Type linenoyes
Type longnono
Type long rawnono
Type long varbinarynono
Type long varchar(1 arg)nono
Type lsegnoyes
Type mediumintnono
Type mediumtextnono
Type middleintnono
Type mlslabelnono
Type moneyyesyes
Type nclobnono
Type numbernono
Type number(1 arg)nono
Type number(2 arg) no
Type nvarchar(2 arg)yes 
Type nvarchar2(1 arg)nono
Type pathnoyes
Type pointnoyes
Type polygonnoyes
Type raw(1 arg)nono
Type reltimenoyes
Type rowidnono
Type serialyesno
Type set(1 arg)nono
Type smalldatetimenono
Type smallfloatyesno
Type smallmoneynono
Type textyesyes
Type text(1 arg)nono
Type timespannoyes
Type uint no
Type varchar2(1 arg)nono
Type yearnono
Constraints
InformixPostgreSQL
foreign keysyesno
foreign key syntaxyesyes
ANSI SQL 92 functions
InformixPostgreSQL
Function +, -, * and /yesyes
Function BIT_LENGTHnono
Function CASEyesyes
Function CASTnoyes
Function CHAR_LENGTHyes 
Function CHARACTER_LENGTHyesno
Function concatenation with ||yesyes
Function CURRENT_DATEnoyes
Function CURRENT_DATE()nono
Function CURRENT_TIMEnoyes
Function CURRENT_TIME()nono
Function CURRENT_TIMESTAMPnoyes
Function CURRENT_TIMESTAMP()nono
Function LOWERyesyes
Function OCTET_LENGTHyesyes
Function POSITIONnoyes
Function SESSION_USERnono
Function ANSI SQL SUBSTRINGnoyes
Function SYSTEM_USERnono
Function TRIMnoyes
Function UPPERyesyes
ODBC 3.0 functions
InformixPostgreSQL
Function ABSyesyes
Function ACOSyesno
Function ASCIInono
Function ASINyesno
Function ATANyesno
Function ATAN2yesno
Function CEILINGnono
Function CHARnono
Function CONCAT(2 arg)nono
Function COSyesno
Function COTnono
Function CURDATEnono
Function CURTIMEnono
Function DATABASEnono
Function DAYNAMEnono
Function DAYOFMONTHnono
Function DAYOFWEEKnono
Function DAYOFYEARnono
Function DEGREESnono
Function DIFFERENCE()nono
Function EXPyesyes
Function EXTRACTnono
Function FLOORnoyes
Function ODBC syntax LEFT & RIGHTnono
Function HOURnono
Function ANSI HOURnono
Function IFNULLnono
Function INSERTnono
Function LCASEnono
Function LEFTnono
Function REAL LENGTHerrorno
Function ODBC LENGTHyesno
Function LOCATE(2 arg)nono
Function LOCATE(3 arg)nono
Function LOGnono
Function LOG10yesno
Function LTRIMnoyes
Function MINUTEnono
Function MODyesyes
Function MONTHnono
Function MONTHNAMEnono
Function NOWnoyes
Function PInono
Function POWERnoyes
Function QUARTERnono
Function RADIANSnono
Function RANDnono
Function REPEATnono
Function REPLACEyesno
Function RIGHTnono
Function ROUND(2 arg)yesyes
Function RTRIMnoyes
Function SECONDnono
Function SIGNnoyes
Function SINyesno
Function SOUNDEXnono
Function SPACEnono
Function SQRTyesyes
Function ODBC SUBSTRINGnono
Function TANyesno
Function TIMESTAMPADDnono
Function TIMESTAMPDIFFnono
Function TRUNCATEnono
Function UCASEnono
Function USERyes 
Function USER()nono
Function WEEKnono
Function YEARnono
Other functions
InformixPostgreSQL
Function NOT as '!' in SELECTnono
Function MOD as %noyes
Function & (bitwise and)nono
Function AND as '&&'nono
Function <> in SELECTnoyes
Function =noyes
Function ADD_MONTHSnono
Function AND and OR in SELECTnoyes
Function ATN2nono
Function automatic num->string convertnono
Function automatic string->num convertyesyes
Function BETWEEN in SELECTnoyes
Function << and >> (bitwise shifts)nono
Function BIT_COUNTnono
Function CEILnoyes
Function CHARINDEXnono
Function CHRnono
Function COALESCE no
Function concatenation with +nono
Function CONCAT(list)nono
Function CONVERTnono
Function COSHnono
Function DATE_FORMATnono
Function DATEADDnono
Function DATEDIFFnono
Function DATENAMEnono
Function DATEPARTnono
Function ELTnono
Function ENCRYPTnono
Function FIELDnono
Function FORMATnono
Function FROM_DAYSnono
Function FROM_UNIXTIMEnono
Function GETDATEnono
Function GREATESTnono
Function IFnono
Function IN on numbers in SELECTnoyes
Function IN on strings in SELECTnono
Function INITCAPyesyes
Function LOCATE as INSTRnono
Function INSTR (Oracle syntax) no
Function INSTRBnono
Function INTERVALnono
Function LAST_DAYnono
Function LAST_INSERT_IDnono
Function LEASTnono
Function LENGTHBnono
Function LIKE in SELECTnono
Function LIKE ESCAPE in SELECTnono
Function LNnoyes
Function LOG(m,n)noyes
Function LOGNyesno
Function LPADyesyes
Function MAX on numbersno 
Function MDYyesno
Function SUBSTRING as MIDnono
Function MIN on numbersno 
Function MONTHS_BETWEENnono
Function NOT in SELECTnono
Function NOT BETWEEN in SELECTnoyes
Function NOT LIKE in SELECTnono
Function ODBC CONVERTnono
Function PASSWORDnono
Function PATINDEXnono
Function PERIOD_ADDnono
Function PERIOD_DIFFnono
Function POWyesno
Function RANGEyesno
Function REGEXP in SELECTnono
Function REPLICATEnono
Function REVERSEnono
Function ROOTyesno
Function ROUND(1 arg)yesyes
Function RPADyesyes
Function SEC_TO_TIMEnono
Function SINHnono
Function STRnono
Function STRCMPnono
Function STUFFnono
Function SUBSTRBnono
Function SUBSTRING_INDEXnono
Function SYSDATEnono
Function TANHnono
Function TIME_TO_SECnono
Function TO_DAYSnono
Function TRANSLATEnoerror
Function TRIM; Many char extensionnoyes
Function TRIM; Substring extensionnoerror
Function TRUNCyesno
Function UIDnono
Function UNIX_TIMESTAMPnono
Function USERENVnono
Function VERSIONnoyes
Function WEEKDAYnono
Function | (bitwise or)nono
Function OR as '||'nono
Functions in WHERE
InformixPostgreSQL
Function BETWEENyesyes
Function = ALLyesyes
Function = ANYyesyes
Function = SOMEyesno
Function EXISTSyesyes
Function IN on numbersyesyes
Function LIKEyesyes
Function LIKE ESCAPEyesno
Function MATCHnono
Function MATCH UNIQUEnono
Function MATCHESnono
Function NOT BETWEENyesyes
Function NOT EXISTSyesyes
Function NOT LIKEyesyes
Function NOT UNIQUEnono
Function UNIQUEnono
ANSI SQL 92 group functions
InformixPostgreSQL
Group function AVGyesyes
Group function COUNT (*)yesyes
Group function COUNT column nameyesyes
Group function COUNT DISTINCT column nameyesno
Group function MAX on numbersyesyes
Group function MAX on stringsyesyes
Group function MIN on numbersyesyes
Group function MIN on stringsyesyes
Group function SUMyesyes
Other group functions
InformixPostgreSQL
Group function BIT_ANDnono
Group function BIT_ORnono
Group function COUNT(DISTINCT expr,expr,...) no
Group function STDnono
Group function STDDEVnono
Group function VARIANCEnono
Function use
InformixPostgreSQL
update of column= -columnyesno
column LIKE columnyesyes
LIKE on numbersnono
Calculate 1--1noyes
Is 'a' || NULL = NULLnono
Is 1+NULL = NULLnono
Order by and group by
InformixPostgreSQL
number of columns in group by +64
number of columns in order by +64
Group byyesyes
Group by aliasnoyes
Test nulls in group byyesyes
Group by positionyesyes
Havingyesno
Having on aliasnono
Having with group functionyesyes
Order byyesyes
Order by aliasyesyes
Order by function yes
Order by positionyesyes
Order by DESC is remembered no
Join methods
InformixPostgreSQL
cross join (same as from a,b)noyes
full outer joinnono
tables in join+64+64
left outer joinnono
left outer join usingnono
DELETE FROM table1,table2...nono
Update with many tablesnono
natural joinnono
natural left outer joinnono
left outer join odbc styleyesno
recursive subqueries1025
right outer joinnono
Update with sub selectyesno
ANSI SQL simple joinsyesyes
subqueriesyesyes
String handling
InformixPostgreSQL
case insensitive comparenono
String functions on date columnsno 
Double '' as ' in stringsnoyes
ignore end space in compareyesyes
insert empty stringyesyes
Multiple line stringsnoyes
Allows ' and " as string markersyesno
Remembers end space in char()nono
Remembers end space in varchar()noyes
Select constantsyesyes
constant string size in SELECT25616373
constant string size in where324528104
Quoting
InformixPostgreSQL
Name limits
InformixPostgreSQL
Alter table rename tablenono
different namespace for indexnono
column name length18227
index name length18+512
select alias name length18+512
table alias name length18+512
table name length18+512
case independent table names yes
Index limits
InformixPostgreSQL
create indexyesyes
drop indexyesyes
index in create tablenono
index on column part (extension)nono
max index+64+64
index length2558104
max index part length2558104
index parts157
index varchar part length2548100
unique indexes+64+64
Tables without primary keyyesyes
null in indexyesyes
null in uniqueyesyes
primary key in create tableyesyes
unique in create tableyesyes
unique null in createnoyes
Type limits
InformixPostgreSQL
atomic updatesnono
binary items (0x41)yesno
char are space fillednono
Supports YY-MM-DD datesnoyes
Supports 0000-00-00 datesnono
mixing of integer and float in expressionyesyes
max char() size2568104
max text or blob size 8104
max varchar() size2558100
Expression limits
InformixPostgreSQL
big expressions11
OR and AND in WHERE12047
simple expressions163728187
stacked expressions473331
SELECT with LIMIT yes
SELECT with LIMIT #,# yes
Comments
InformixPostgreSQL
# as commentnono
-- as commentyesno
/* */ as commentyesyes
Other features
InformixPostgreSQL
Alter table add columnyesyes
Alter table add many columns no
Alter table alter column no
Alter table change columnnono
Alter table drop columnyesno
Alter table modify columnyesno
Column aliasyesyes
Computenono
default value for columnnoyes
default value function for column no
create table if not exists no
create table from select no
drop table if exists no
allows end ';' yes
exceptnoyes
except allnono
insert INTO ... SELECT ...yesno
INSERT with set syntax no
intersectnoyes
intersect allnono
lock tableyesyes
Value of logical operation (1=1)not supported1
minusnono
many tables to drop tablenoyes
Value lists in INSERT no
Correct rounding when storing float values yes
Type for row id oid
SELECT without FROMnoyes
Table aliasyesyes
Select table_name.*yesyes
temporary tables yes
transactionserroryes
unionyesyes
union allyesyes
viewsyesyes
Other limits
InformixPostgreSQL
Simultaneous connections26932
Columns in table9941248
max table row length (without blobs)323567949
table row length with nulls (without blobs)323567949
query size3276616382

This information is provided by TCX so one can get the real limitations from the database server (not the information from sales managers!). Hopefully the above information will make it easier for you to find a database server that has the functionality you need and that you can rely on!

TCX will continue to extend crash-me and add more database servers to the above chart. We are also very interested in new tests so if you have any suggestions, please mail us (or even better, send us code).
We are also working on the MySQL benchmark to help users see how fast a database is when doing different typical things.
==============================================
You can direct questions about crash-me and the benchmark to the MySQL mailing list.

Aubit 4gl project is hosted by:

SourceForge Logo