⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pgtypes.c

📁 关系型数据库 Postgresql 6.5.2
💻 C
📖 第 1 页 / 共 2 页
字号:
		else			return maxsize;	}	/*	Size is unknown -- handle according to parameter */	if (QR_get_atttypmod(result, col) > -1)		return QR_get_atttypmod(result, col);	if (type == PG_TYPE_BPCHAR || handle_unknown_size_as == UNKNOWNS_AS_LONGEST) {		p = QR_get_display_size(result, col);		mylog("getCharPrecision: LONGEST: p = %d\n", p);	}	if (p < 0 && handle_unknown_size_as == UNKNOWNS_AS_MAX)		return maxsize;	else		return p;}/*	For PG_TYPE_VARCHAR, PG_TYPE_BPCHAR, SQLColumns will 	override this length with the atttypmod length from pg_attribute .	If col >= 0, then will attempt to get the info from the result set.	This is used for functions SQLDescribeCol and SQLColAttributes.*/Int4 pgtype_precision(StatementClass *stmt, Int4 type, int col, int handle_unknown_size_as){	switch(type) {	case PG_TYPE_CHAR:			return 1;	case PG_TYPE_CHAR2:			return 2;	case PG_TYPE_CHAR4:			return 4;	case PG_TYPE_CHAR8:       	return 8;	case PG_TYPE_CHAR16:       	return 16;	case PG_TYPE_NAME:			return NAME_FIELD_SIZE;	case PG_TYPE_INT2:          return 5;	case PG_TYPE_OID:	case PG_TYPE_XID:	case PG_TYPE_INT4:          return 10;	case PG_TYPE_FLOAT4:        	case PG_TYPE_MONEY:			return 7;	case PG_TYPE_FLOAT8:        return 15;	case PG_TYPE_DATE:			return 10;	case PG_TYPE_TIME:			return 8;	case PG_TYPE_ABSTIME:			case PG_TYPE_DATETIME:			case PG_TYPE_TIMESTAMP:		return 19;	case PG_TYPE_BOOL:			return 1;	case PG_TYPE_LO:			return SQL_NO_TOTAL;	default:		if (type == stmt->hdbc->lobj_type)	/* hack until permanent type is available */			return SQL_NO_TOTAL;		/*	Handle Character types and unknown types */		return getCharPrecision(stmt, type, col, handle_unknown_size_as);    }}Int4 pgtype_display_size(StatementClass *stmt, Int4 type, int col, int handle_unknown_size_as){	switch(type) {	case PG_TYPE_INT2:			return 6;	case PG_TYPE_OID:	case PG_TYPE_XID:			return 10;	case PG_TYPE_INT4:			return 11;	case PG_TYPE_MONEY:			return 15;	/* ($9,999,999.99) */	case PG_TYPE_FLOAT4:		return 13;	case PG_TYPE_FLOAT8:		return 22;		/*	Character types use regular precision */	default:		return pgtype_precision(stmt, type, col, handle_unknown_size_as);	}}/*	For PG_TYPE_VARCHAR, PG_TYPE_BPCHAR, SQLColumns will 	override this length with the atttypmod length from pg_attribute */Int4 pgtype_length(StatementClass *stmt, Int4 type, int col, int handle_unknown_size_as){	switch(type) {	case PG_TYPE_INT2:          return 2;	case PG_TYPE_OID:	case PG_TYPE_XID:	case PG_TYPE_INT4:          return 4;	case PG_TYPE_FLOAT4:	case PG_TYPE_MONEY:			return 4;	case PG_TYPE_FLOAT8:        return 8;	case PG_TYPE_DATE:	case PG_TYPE_TIME:			return 6;	case PG_TYPE_ABSTIME:			case PG_TYPE_DATETIME:	case PG_TYPE_TIMESTAMP:		return 16;	/*	Character types use the default precision */	default:			return pgtype_precision(stmt, type, col, handle_unknown_size_as);    }}Int2 pgtype_scale(StatementClass *stmt, Int4 type){	switch(type) {	case PG_TYPE_INT2:	case PG_TYPE_OID:	case PG_TYPE_XID:	case PG_TYPE_INT4:	case PG_TYPE_FLOAT4:	case PG_TYPE_FLOAT8:	case PG_TYPE_MONEY:	case PG_TYPE_BOOL:	/*	Number of digits to the right of the decimal point in "yyyy-mm=dd hh:mm:ss[.f...]" */	case PG_TYPE_ABSTIME:			case PG_TYPE_DATETIME:			case PG_TYPE_TIMESTAMP:		return 0;	default:					return -1;	}}Int2 pgtype_radix(StatementClass *stmt, Int4 type){    switch(type) {    case PG_TYPE_INT2:    case PG_TYPE_OID:    case PG_TYPE_INT4:    case PG_TYPE_FLOAT4:	case PG_TYPE_MONEY:    case PG_TYPE_FLOAT8:        return 10;    default:                    return -1;    }}Int2 pgtype_nullable(StatementClass *stmt, Int4 type){	return SQL_NULLABLE;	/* everything should be nullable */}Int2 pgtype_auto_increment(StatementClass *stmt, Int4 type){	switch(type) {	case PG_TYPE_INT2:         	case PG_TYPE_OID:	case PG_TYPE_XID:	case PG_TYPE_INT4:         	case PG_TYPE_FLOAT4:       	case PG_TYPE_MONEY:	case PG_TYPE_BOOL:	case PG_TYPE_FLOAT8:	case PG_TYPE_DATE:	case PG_TYPE_TIME:				case PG_TYPE_ABSTIME:			case PG_TYPE_DATETIME:			case PG_TYPE_TIMESTAMP:		return FALSE;	default:					return -1;	}    }Int2 pgtype_case_sensitive(StatementClass *stmt, Int4 type){    switch(type) {    case PG_TYPE_CHAR:          	case PG_TYPE_CHAR2:	case PG_TYPE_CHAR4:    case PG_TYPE_CHAR8:         	case PG_TYPE_CHAR16:		    case PG_TYPE_VARCHAR:           case PG_TYPE_BPCHAR:    case PG_TYPE_TEXT:    case PG_TYPE_NAME:          return TRUE;    default:                    return FALSE;    }}Int2 pgtype_money(StatementClass *stmt, Int4 type){	switch(type) {	case PG_TYPE_MONEY:			return TRUE;	default:					return FALSE;	}    }Int2 pgtype_searchable(StatementClass *stmt, Int4 type){	switch(type) {	case PG_TYPE_CHAR:          	case PG_TYPE_CHAR2:	case PG_TYPE_CHAR4:				case PG_TYPE_CHAR8:	case PG_TYPE_CHAR16:			case PG_TYPE_VARCHAR:       	case PG_TYPE_BPCHAR:	case PG_TYPE_TEXT:	case PG_TYPE_NAME:          return SQL_SEARCHABLE;	default:					return SQL_ALL_EXCEPT_LIKE;	}    }Int2 pgtype_unsigned(StatementClass *stmt, Int4 type){	switch(type) {	case PG_TYPE_OID:	case PG_TYPE_XID:			return TRUE;	case PG_TYPE_INT2:	case PG_TYPE_INT4:	case PG_TYPE_FLOAT4:	case PG_TYPE_FLOAT8:	case PG_TYPE_MONEY:			return FALSE;	default:					return -1;	}}char *pgtype_literal_prefix(StatementClass *stmt, Int4 type){	switch(type) {	case PG_TYPE_INT2:	case PG_TYPE_OID:	case PG_TYPE_XID:	case PG_TYPE_INT4:	case PG_TYPE_FLOAT4:	case PG_TYPE_FLOAT8:        	case PG_TYPE_MONEY:			return NULL;	default:					return "'";	}}char *pgtype_literal_suffix(StatementClass *stmt, Int4 type){	switch(type) {	case PG_TYPE_INT2:	case PG_TYPE_OID:	case PG_TYPE_XID:	case PG_TYPE_INT4:	case PG_TYPE_FLOAT4:	case PG_TYPE_FLOAT8:        	case PG_TYPE_MONEY:			return NULL;	default:					return "'";	}}char *pgtype_create_params(StatementClass *stmt, Int4 type){	switch(type) {	case PG_TYPE_CHAR:	case PG_TYPE_VARCHAR:		return "max. length";	default:					return NULL;	}}Int2 sqltype_to_default_ctype(Int2 sqltype){    // from the table on page 623 of ODBC 2.0 Programmer's Reference    // (Appendix D)    switch(sqltype) {    case SQL_CHAR:     case SQL_VARCHAR:    case SQL_LONGVARCHAR:    case SQL_DECIMAL:    case SQL_NUMERIC:    case SQL_BIGINT:		return SQL_C_CHAR;    case SQL_BIT:		return SQL_C_BIT;    case SQL_TINYINT:		return SQL_C_STINYINT;    case SQL_SMALLINT:		return SQL_C_SSHORT;    case SQL_INTEGER:		return SQL_C_SLONG;    case SQL_REAL:		return SQL_C_FLOAT;    case SQL_FLOAT:    case SQL_DOUBLE:		return SQL_C_DOUBLE;    case SQL_BINARY:    case SQL_VARBINARY:    case SQL_LONGVARBINARY:		return SQL_C_BINARY;    case SQL_DATE:		return SQL_C_DATE;    case SQL_TIME:		return SQL_C_TIME;    case SQL_TIMESTAMP:		return SQL_C_TIMESTAMP;    default:			/* should never happen */		return SQL_C_CHAR;	    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -