Example #1
0
bool lextable::reserved(const char *str)
{
  // in order to allow at least and at most one entry
  // of reserved words in the main lex table,
  // the lower case version is considered not reserved here,
  // so that the same enter routine can be used in the 
  // main lex table for initializing keywords.

  int h;
  char *lowerstr;

  lowerstr = my_strtolower(str);
  h = hash(lowerstr);

  while (1) {
    int i = (h & RESERVETABLESIZE - 1);
    lexid *entry = rtable[i];
    if (entry == NULL) {
      return (FALSE);
    } else if (strcmp(entry->getname(), lowerstr) == 0) {
      return (TRUE);
    } else {
      /* try again */
      h = rehash(h);
    }
  }
}
Example #2
0
lexid *lextable::enter_reserved(char *str, int lextype )
{
  int h;
  char *lowerstr;

  lowerstr = my_strtolower(str);
  h = hash(lowerstr);

  while (1) {
    int i = (h & RESERVETABLESIZE-1);
    lexid *entry = rtable[i];
    if (entry == NULL) {
      /* enter it and return */
      rtable[i] = entry = new lexid(lowerstr, lextype);
      return(entry);
    }
    else if ( strcmp(entry->getname(), lowerstr) == 0) {
      return(entry);
    }
    else {
      /* try again */
      h = rehash(h);
    }
  }
}
char *create_Custom_XML_Head (struct field_list fl)
{
	char *XML_Head = NULL;
	int i = 0, j = 0;

	XML_Head = (char *) create_Blank_XML_Head_Open ();

	if (fl.fieldCount >= 0)
	{
		for (i = 0; i < fl.fieldCount; i++)
		{
			int static_attr = 0;
			for ( j = 0; j < blank_attr_count; j++)
			{
				char *buff1 = NULL;
				char *buff2 = NULL;
				buff1 = my_strtolower( blank_attr_list[j]);
				buff2 = my_strtolower(fl.fields[i]);
				if (strncmp (buff1, buff2, MY_MAX(buff1,buff2) ) == 0 )
					static_attr = 1;
				free (buff1);
				free (buff2);
			}
			for ( j = 0; j < blank_field_count; j++)
			{
				char *buff1 = NULL;
				char *buff2 = NULL;
				buff1 = my_strtolower(blank_field_list[j]);
				buff2 = my_strtolower(fl.fields[i]);
				if (strncmp (buff1,buff2, MY_MAX(buff1, buff2)) == 0 )
					static_attr = 1;
			}
			if (static_attr == 0)
			{
				XML_Head = check_Buff_Size (XML_Head, &iXML_Head_Size, 100);
				sprintf(XML_Head + strlen(XML_Head), "<sphinx:attr name=\"%s\" type=\"%s\" />\n", fl.fields[i],fl.types[i]);
			}
		}
	}
	//close head (schema)
	XML_Head = check_Buff_Size (XML_Head, &iXML_Head_Size, 21);
	sprintf (XML_Head + strlen(XML_Head), "</sphinx:schema>\n\n");
	return XML_Head;
}
Example #4
0
int csv_set_run( csv_parse_t *parse ) {
	char *key = parse->expr->var.sv, *val = parse->expr->right->var.sv;
	my_strtolower( key );
#ifdef CSV_DEBUG
	_debug( "SET %s = %s\n", key, val );
#endif
	parse->csv->affected_rows = 0;
	switch( *key ) {
	case 'c':
		if( my_strncmp( key, "character_set_", 14 ) == 0 ) {
			enum n_charset cs = get_charset_id( val );
			if( cs == CS_UNKNOWN ) {
				csv_error_msg( parse, CSV_ERR_UNKNOWNCHARSET,
					"Unknown character set %s", val
				);
				return CSV_ERROR;
			}
			key += 14;
			if( strcmp( key, "table" ) == 0 ) {
				parse->csv->table_charset = cs;
				return CSV_OK;
			}
			else if( strcmp( key, "client" ) == 0 ) {
				parse->csv->client_charset = cs;
				return CSV_OK;
			}
			key -= 14;
		}
		else if( strcmp( key, "column_name_header" ) == 0 ) {
			if( *val == '0' ||
				my_stricmp( val, "FALSE" ) == 0 ||
				my_stricmp( val, "NO" ) == 0
				
			) {
				parse->csv->flags &= (~CSV_COLNAMEHEADER);
			}
			else {
				parse->csv->flags |= CSV_COLNAMEHEADER;
			}
			return CSV_OK;
		}
		break;
	case 'd':
		if( strcmp( key, "data_source" ) == 0 ) {
			return csv_set_path( parse->csv, val, 0 );
		}
		if( strcmp( key, "decimal_symbol" ) == 0 ) {
			parse->csv->decimal_symbol = *val;
			return CSV_OK;
		}
		if( strcmp( key, "delimiter" ) == 0 ) {
			parse->csv->delimiter = *val;
			return CSV_OK;
		}
		break;
	case 'm':
		if( strcmp( key, "max_scan_rows" ) == 0 ) {
			parse->csv->max_scan_rows = atoi( val );
			if( parse->csv->max_scan_rows <= 0 )
				parse->csv->max_scan_rows = 25;
			return CSV_OK;
		}
		break;
	case 'q':
		if( strcmp( key, "quote_char" ) == 0 ) {
			parse->csv->quote = *val;
			return CSV_OK;
		}
		break;
	case 'u':
		if( strcmp( key, "use_schema" ) == 0 ) {
			if( *val == '0' ||
				my_stricmp( val, "FALSE" ) == 0 ||
				my_stricmp( val, "NO" ) == 0
				
			) {
				parse->csv->flags &= (~CSV_USESCHEMA);
			}
			else {
				parse->csv->flags |= CSV_USESCHEMA;
			}
			return CSV_OK;
		}
		break;
	}
	csv_error_msg( parse, CSV_ERR_UNKNOWNVARIABLE,
		"Unknown variable '%s'", key
	);
	return CSV_ERROR;
}
char * check_Field_type (char *test)
{
	char *types[] = {
			"int",
			"string",
			"bigint",
			"timestamp",
			"float",
			"json"
	};

	int types_count = sizeof (types) / sizeof (char *);
	int i = 0;
	int type_index = -1;
	int test_OK = 0;
	for ( i = 0; i < types_count; i++)
	{
		char *buff1 = NULL;
		char *buff2 = NULL;
		buff1 = my_strtolower(types[i]);
		buff2 = my_strtolower(test);

		if (strncmp (buff1,buff2, MY_MAX(buff1, buff2)) == 0 )
			type_index = i;
	}

	if (type_index >= 0 && type_index < types_count)
		return types[type_index];
	if (strncmp (my_strtolower(test) ,my_strtolower("str"), MY_MAX(my_strtolower(test), my_strtolower("str"))) == 0 )
		return "string";
	if (strncmp (my_strtolower(test) ,my_strtolower("integer"), MY_MAX(my_strtolower(test), my_strtolower("integer"))) == 0 )
		return "int";
	if (strncmp (my_strtolower(test) ,my_strtolower("time"), MY_MAX(my_strtolower(test), my_strtolower("time"))) == 0 )
		return "timestamp";
	if (strncmp (my_strtolower(test) ,my_strtolower("biginteger"), MY_MAX(my_strtolower(test), my_strtolower("biginteger"))) == 0 )
		return "bigint";

	return NULL;
}