📄 sqlrelay.c
字号:
uint32_t *lengths=sqlrcur->getRowLengths(NUM2INT(row)); VALUE fieldhash=rb_hash_new(); for (uint32_t i=0; i<sqlrcur->colCount(); i++) { if (fields[i]) { rb_hash_aset(fieldhash, rb_str_new2(sqlrcur->getColumnName(i)), rb_str_new(fields[i],lengths[i])); } else { rb_hash_aset(fieldhash, rb_str_new2(sqlrcur->getColumnName(i)), Qnil); } } return fieldhash;}static VALUE sqlrcur_getRowLengths(VALUE self, VALUE row) { sqlrcursor *sqlrcur; Data_Get_Struct(self,sqlrcursor,sqlrcur); uint32_t *lengths=sqlrcur->getRowLengths(NUM2INT(row)); if (!lengths) { return Qnil; } VALUE lengthary=rb_ary_new2(sqlrcur->colCount()); for (uint32_t i=0; i<sqlrcur->colCount(); i++) { rb_ary_store(lengthary,i,INT2NUM(lengths[i])); } return lengthary;}static VALUE sqlrcur_getRowLengthsHash(VALUE self, VALUE row) { sqlrcursor *sqlrcur; Data_Get_Struct(self,sqlrcursor,sqlrcur); uint32_t *lengths=sqlrcur->getRowLengths(NUM2INT(row)); VALUE lengthhash=rb_hash_new(); for (uint32_t i=0; i<sqlrcur->colCount(); i++) { rb_hash_aset(lengthhash, rb_str_new2(sqlrcur->getColumnName(i)), INT2NUM(lengths[i])); } return lengthhash;}static VALUE sqlrcur_getColumnNames(VALUE self) { sqlrcursor *sqlrcur; Data_Get_Struct(self,sqlrcursor,sqlrcur); const char * const *names=sqlrcur->getColumnNames(); if (!names) { return Qnil; } VALUE nameary=rb_ary_new2(sqlrcur->colCount()); for (uint32_t i=0; i<sqlrcur->colCount(); i++) { if (names[i]) { rb_ary_store(nameary,i,rb_str_new2(names[i])); } else { rb_ary_store(nameary,i,Qnil); } } return nameary;}static VALUE sqlrcur_getColumnName(VALUE self, VALUE col) { sqlrcursor *sqlrcur; Data_Get_Struct(self,sqlrcursor,sqlrcur); const char *result=sqlrcur->getColumnName(NUM2INT(col)); if (result) { return rb_str_new2(result); } else { return Qnil; }}static VALUE sqlrcur_getColumnType(VALUE self, VALUE col) { sqlrcursor *sqlrcur; Data_Get_Struct(self,sqlrcursor,sqlrcur); const char *result; if (rb_obj_is_instance_of(col,rb_cString)==Qtrue) { result=sqlrcur->getColumnType(STR2CSTR(col)); } else { result=sqlrcur->getColumnType(NUM2INT(col)); } if (result) { return rb_str_new2(result); } else { return Qnil; }}static VALUE sqlrcur_getColumnLength(VALUE self, VALUE col) { sqlrcursor *sqlrcur; Data_Get_Struct(self,sqlrcursor,sqlrcur); if (rb_obj_is_instance_of(col,rb_cString)==Qtrue) { return INT2NUM(sqlrcur->getColumnLength(STR2CSTR(col))); } else { return INT2NUM(sqlrcur->getColumnLength(NUM2INT(col))); }}static VALUE sqlrcur_getColumnPrecision(VALUE self, VALUE col) { sqlrcursor *sqlrcur; Data_Get_Struct(self,sqlrcursor,sqlrcur); if (rb_obj_is_instance_of(col,rb_cString)==Qtrue) { return INT2NUM(sqlrcur->getColumnPrecision(STR2CSTR(col))); } else { return INT2NUM(sqlrcur->getColumnPrecision(NUM2INT(col))); }}static VALUE sqlrcur_getColumnScale(VALUE self, VALUE col) { sqlrcursor *sqlrcur; Data_Get_Struct(self,sqlrcursor,sqlrcur); if (rb_obj_is_instance_of(col,rb_cString)==Qtrue) { return INT2NUM(sqlrcur->getColumnScale(STR2CSTR(col))); } else { return INT2NUM(sqlrcur->getColumnScale(NUM2INT(col))); }}static VALUE sqlrcur_getColumnIsNullable(VALUE self, VALUE col) { sqlrcursor *sqlrcur; Data_Get_Struct(self,sqlrcursor,sqlrcur); if (rb_obj_is_instance_of(col,rb_cString)==Qtrue) { return INT2NUM(sqlrcur->getColumnIsNullable(STR2CSTR(col))); } else { return INT2NUM(sqlrcur->getColumnIsNullable(NUM2INT(col))); }}static VALUE sqlrcur_getColumnIsPrimaryKey(VALUE self, VALUE col) { sqlrcursor *sqlrcur; Data_Get_Struct(self,sqlrcursor,sqlrcur); if (rb_obj_is_instance_of(col,rb_cString)==Qtrue) { return INT2NUM(sqlrcur->getColumnIsPrimaryKey(STR2CSTR(col))); } else { return INT2NUM(sqlrcur->getColumnIsPrimaryKey(NUM2INT(col))); }}static VALUE sqlrcur_getColumnIsUnique(VALUE self, VALUE col) { sqlrcursor *sqlrcur; Data_Get_Struct(self,sqlrcursor,sqlrcur); if (rb_obj_is_instance_of(col,rb_cString)==Qtrue) { return INT2NUM(sqlrcur->getColumnIsUnique(STR2CSTR(col))); } else { return INT2NUM(sqlrcur->getColumnIsUnique(NUM2INT(col))); }}static VALUE sqlrcur_getColumnIsPartOfKey(VALUE self, VALUE col) { sqlrcursor *sqlrcur; Data_Get_Struct(self,sqlrcursor,sqlrcur); if (rb_obj_is_instance_of(col,rb_cString)==Qtrue) { return INT2NUM(sqlrcur->getColumnIsPartOfKey(STR2CSTR(col))); } else { return INT2NUM(sqlrcur->getColumnIsPartOfKey(NUM2INT(col))); }}static VALUE sqlrcur_getColumnIsUnsigned(VALUE self, VALUE col) { sqlrcursor *sqlrcur; Data_Get_Struct(self,sqlrcursor,sqlrcur); if (rb_obj_is_instance_of(col,rb_cString)==Qtrue) { return INT2NUM(sqlrcur->getColumnIsUnsigned(STR2CSTR(col))); } else { return INT2NUM(sqlrcur->getColumnIsUnsigned(NUM2INT(col))); }}static VALUE sqlrcur_getColumnIsZeroFilled(VALUE self, VALUE col) { sqlrcursor *sqlrcur; Data_Get_Struct(self,sqlrcursor,sqlrcur); if (rb_obj_is_instance_of(col,rb_cString)==Qtrue) { return INT2NUM(sqlrcur->getColumnIsZeroFilled(STR2CSTR(col))); } else { return INT2NUM(sqlrcur->getColumnIsZeroFilled(NUM2INT(col))); }}static VALUE sqlrcur_getColumnIsBinary(VALUE self, VALUE col) { sqlrcursor *sqlrcur; Data_Get_Struct(self,sqlrcursor,sqlrcur); if (rb_obj_is_instance_of(col,rb_cString)==Qtrue) { return INT2NUM(sqlrcur->getColumnIsBinary(STR2CSTR(col))); } else { return INT2NUM(sqlrcur->getColumnIsBinary(NUM2INT(col))); }}static VALUE sqlrcur_getColumnIsAutoIncrement(VALUE self, VALUE col) { sqlrcursor *sqlrcur; Data_Get_Struct(self,sqlrcursor,sqlrcur); if (rb_obj_is_instance_of(col,rb_cString)==Qtrue) { return INT2NUM( sqlrcur->getColumnIsAutoIncrement(STR2CSTR(col))); } else { return INT2NUM( sqlrcur->getColumnIsAutoIncrement(NUM2INT(col))); }}static VALUE sqlrcur_getLongest(VALUE self, VALUE col) { sqlrcursor *sqlrcur; Data_Get_Struct(self,sqlrcursor,sqlrcur); if (rb_obj_is_instance_of(col,rb_cString)==Qtrue) { return INT2NUM(sqlrcur->getLongest(STR2CSTR(col))); } else { return INT2NUM(sqlrcur->getLongest(NUM2INT(col))); }}static VALUE sqlrcur_getResultSetId(VALUE self) { sqlrcursor *sqlrcur; Data_Get_Struct(self,sqlrcursor,sqlrcur); return INT2NUM(sqlrcur->getResultSetId());}static VALUE sqlrcur_suspendResultSet(VALUE self) { sqlrcursor *sqlrcur; Data_Get_Struct(self,sqlrcursor,sqlrcur); sqlrcur->suspendResultSet(); return Qnil;}static VALUE sqlrcur_resumeResultSet(VALUE self, VALUE id) { sqlrcursor *sqlrcur; Data_Get_Struct(self,sqlrcursor,sqlrcur); return INT2NUM(sqlrcur->resumeResultSet(NUM2INT(id)));}static VALUE sqlrcur_resumeCachedResultSet(VALUE self, VALUE id, VALUE filename) { sqlrcursor *sqlrcur; Data_Get_Struct(self,sqlrcursor,sqlrcur); return INT2NUM(sqlrcur->resumeCachedResultSet(NUM2INT(id), STR2CSTR(filename)));}void Init_SQLRCursor() { csqlrcursor=rb_define_class("SQLRCursor", rb_cObject); rb_define_singleton_method(csqlrcursor,"new", (CAST)sqlrcur_new,1); rb_define_method(csqlrcursor,"setResultSetBufferSize", (CAST)sqlrcur_setResultSetBufferSize,1); rb_define_method(csqlrcursor,"getResultSetBufferSize", (CAST)sqlrcur_getResultSetBufferSize,0); rb_define_method(csqlrcursor,"dontGetColumnInfo", (CAST)sqlrcur_dontGetColumnInfo,0); rb_define_method(csqlrcursor,"getColumnInfo", (CAST)sqlrcur_getColumnInfo,0); rb_define_method(csqlrcursor,"mixedCaseColumnNames", (CAST)sqlrcur_mixedCaseColumnNames,0); rb_define_method(csqlrcursor,"upperCaseColumnNames", (CAST)sqlrcur_upperCaseColumnNames,0); rb_define_method(csqlrcursor,"lowerCaseColumnNames", (CAST)sqlrcur_lowerCaseColumnNames,0); rb_define_method(csqlrcursor,"cacheToFile", (CAST)sqlrcur_cacheToFile,1); rb_define_method(csqlrcursor,"setCacheTtl", (CAST)sqlrcur_setCacheTtl,1); rb_define_method(csqlrcursor,"getCacheFileName", (CAST)sqlrcur_getCacheFileName,0); rb_define_method(csqlrcursor,"cacheOff", (CAST)sqlrcur_cacheOff,0); rb_define_method(csqlrcursor,"sendQuery", (CAST)sqlrcur_sendQuery,1); rb_define_method(csqlrcursor,"sendQueryWithLength", (CAST)sqlrcur_sendQueryWithLength,2); rb_define_method(csqlrcursor,"sendFileQuery", (CAST)sqlrcur_sendFileQuery,2); rb_define_method(csqlrcursor,"prepareQuery", (CAST)sqlrcur_prepareQuery,1); rb_define_method(csqlrcursor,"prepareQueryWithLength", (CAST)sqlrcur_prepareQueryWithLength,2); rb_define_method(csqlrcursor,"prepareFileQuery", (CAST)sqlrcur_prepareFileQuery,2); rb_define_method(csqlrcursor,"clearBinds", (CAST)sqlrcur_clearBinds,0); rb_define_method(csqlrcursor,"countBindVariables", (CAST)sqlrcur_countBindVariables,0); rb_define_method(csqlrcursor,"substitution", (CAST)sqlrcur_substitution,-1); rb_define_method(csqlrcursor,"inputBind", (CAST)sqlrcur_inputBind,-1); rb_define_method(csqlrcursor,"inputBindBlob", (CAST)sqlrcur_inputBindBlob,3); rb_define_method(csqlrcursor,"inputBindClob", (CAST)sqlrcur_inputBindClob,3); rb_define_method(csqlrcursor,"defineOutputBindString", (CAST)sqlrcur_defineOutputBindString,2); rb_define_method(csqlrcursor,"defineOutputBindInteger", (CAST)sqlrcur_defineOutputBindInteger,1); rb_define_method(csqlrcursor,"defineOutputBindDouble", (CAST)sqlrcur_defineOutputBindDouble,1); rb_define_method(csqlrcursor,"defineOutputBindBlob", (CAST)sqlrcur_defineOutputBindBlob,1); rb_define_method(csqlrcursor,"defineOutputBindClob", (CAST)sqlrcur_defineOutputBindClob,1); rb_define_method(csqlrcursor,"defineOutputBindCursor", (CAST)sqlrcur_defineOutputBindCursor,1); rb_define_method(csqlrcursor,"substitutions", (CAST)sqlrcur_substitutions,-1); rb_define_method(csqlrcursor,"inputBinds", (CAST)sqlrcur_inputBinds,-1); rb_define_method(csqlrcursor,"validateBinds", (CAST)sqlrcur_validateBinds,0); rb_define_method(csqlrcursor,"validBind", (CAST)sqlrcur_validBind,0); rb_define_method(csqlrcursor,"executeQuery", (CAST)sqlrcur_executeQuery,0); rb_define_method(csqlrcursor,"fetchFromBindCursor", (CAST)sqlrcur_fetchFromBindCursor,0); rb_define_method(csqlrcursor,"getOutputBindString", (CAST)sqlrcur_getOutputBindString,1); rb_define_method(csqlrcursor,"getOutputBindBlob", (CAST)sqlrcur_getOutputBindBlob,1); rb_define_method(csqlrcursor,"getOutputBindClob", (CAST)sqlrcur_getOutputBindClob,1); rb_define_method(csqlrcursor,"getOutputBindInteger", (CAST)sqlrcur_getOutputBindInteger,1); rb_define_method(csqlrcursor,"getOutputBindDouble", (CAST)sqlrcur_getOutputBindDouble,1); rb_define_method(csqlrcursor,"getOutputBindLength", (CAST)sqlrcur_getOutputBindLength,1); rb_define_method(csqlrcursor,"getOutputBindCursor", (CAST)sqlrcur_getOutputBindCursor,1); rb_define_method(csqlrcursor,"openCachedResultSet", (CAST)sqlrcur_openCachedResultSet,1); rb_define_method(csqlrcursor,"colCount", (CAST)sqlrcur_colCount,0); rb_define_method(csqlrcursor,"rowCount", (CAST)sqlrcur_rowCount,0); rb_define_method(csqlrcursor,"totalRows", (CAST)sqlrcur_totalRows,0); rb_define_method(csqlrcursor,"affectedRows", (CAST)sqlrcur_affectedRows,0); rb_define_method(csqlrcursor,"firstRowIndex", (CAST)sqlrcur_firstRowIndex,0); rb_define_method(csqlrcursor,"endOfResultSet", (CAST)sqlrcur_endOfResultSet,0); rb_define_method(csqlrcursor,"errorMessage", (CAST)sqlrcur_errorMessage,0); rb_define_method(csqlrcursor,"getNullsAsEmptyStrings", (CAST)sqlrcur_getNullsAsEmptyStrings,0); rb_define_method(csqlrcursor,"getNullsAsNils", (CAST)sqlrcur_getNullsAsNils,0); rb_define_method(csqlrcursor,"getField", (CAST)sqlrcur_getField,2); rb_define_method(csqlrcursor,"getFieldAsInteger", (CAST)sqlrcur_getFieldAsInteger,2); rb_define_method(csqlrcursor,"getFieldAsDouble", (CAST)sqlrcur_getFieldAsDouble,2); rb_define_method(csqlrcursor,"getFieldLength", (CAST)sqlrcur_getFieldLength,2); rb_define_method(csqlrcursor,"getRow", (CAST)sqlrcur_getRow,1); rb_define_method(csqlrcursor,"getRowHash", (CAST)sqlrcur_getRowHash,1); rb_define_method(csqlrcursor,"getRowLengths", (CAST)sqlrcur_getRowLengths,1); rb_define_method(csqlrcursor,"getRowLengthsHash", (CAST)sqlrcur_getRowLengthsHash,1); rb_define_method(csqlrcursor,"getColumnNames", (CAST)sqlrcur_getColumnNames,0); rb_define_method(csqlrcursor,"getColumnName", (CAST)sqlrcur_getColumnName,1); rb_define_method(csqlrcursor,"getColumnType", (CAST)sqlrcur_getColumnType,1); rb_define_method(csqlrcursor,"getColumnLength", (CAST)sqlrcur_getColumnLength,1); rb_define_method(csqlrcursor,"getColumnPrecision", (CAST)sqlrcur_getColumnPrecision,1); rb_define_method(csqlrcursor,"getColumnScale", (CAST)sqlrcur_getColumnScale,1); rb_define_method(csqlrcursor,"getColumnIsNullable", (CAST)sqlrcur_getColumnIsNullable,1); rb_define_method(csqlrcursor,"getColumnIsPrimaryKey", (CAST)sqlrcur_getColumnIsPrimaryKey,1); rb_define_method(csqlrcursor,"getColumnIsUnique", (CAST)sqlrcur_getColumnIsUnique,1); rb_define_method(csqlrcursor,"getColumnIsPartOfKey", (CAST)sqlrcur_getColumnIsPartOfKey,1); rb_define_method(csqlrcursor,"getColumnIsUnsigned", (CAST)sqlrcur_getColumnIsUnsigned,1); rb_define_method(csqlrcursor,"getColumnIsZeroFilled", (CAST)sqlrcur_getColumnIsZeroFilled,1); rb_define_method(csqlrcursor,"getColumnIsBinary", (CAST)sqlrcur_getColumnIsBinary,1); rb_define_method(csqlrcursor,"getColumnIsAutoIncrement", (CAST)sqlrcur_getColumnIsAutoIncrement,1); rb_define_method(csqlrcursor,"getLongest", (CAST)sqlrcur_getLongest,1); rb_define_method(csqlrcursor,"getResultSetId", (CAST)sqlrcur_getResultSetId,0); rb_define_method(csqlrcursor,"suspendResultSet", (CAST)sqlrcur_suspendResultSet,0); rb_define_method(csqlrcursor,"resumeResultSet", (CAST)sqlrcur_resumeResultSet,1); rb_define_method(csqlrcursor,"resumeCachedResultSet", (CAST)sqlrcur_resumeCachedResultSet,2);}void Init_sqlrelay() { Init_SQLRConnection(); Init_SQLRCursor();}}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -