Cover qualified underscore fields in comment hints
diff --git a/src/tokenizer.rs b/src/tokenizer.rs
index 06aeb6a..3aaa20e 100644
--- a/src/tokenizer.rs
+++ b/src/tokenizer.rs
@@ -4533,6 +4533,47 @@
     }
 
     #[test]
+    fn tokenize_comment_hint_underscore_after_non_word_is_error() {
+        let sql = "SELECT 1 /*!50110 ._a */ FROM t";
+        let dialect = MySqlDialect {};
+        let err = Tokenizer::new(&dialect, sql).tokenize().unwrap_err();
+        assert_eq!(
+            err,
+            TokenizerError {
+                message: "Unexpected character '_'".to_string(),
+                location: Location::new(1, 11),
+            }
+        );
+    }
+
+    #[test]
+    fn tokenize_into_existing_buffer_keeps_qualified_name_context() {
+        let dialect = MySqlDialect {};
+        let mut tokens = Tokenizer::new(&dialect, "SELECT t ")
+            .tokenize_with_location()
+            .unwrap();
+        Tokenizer::new(&dialect, "._col FROM t")
+            .tokenize_with_location_into_buf(&mut tokens)
+            .unwrap();
+        let tokens = tokens
+            .into_iter()
+            .map(|token| token.token)
+            .filter(|token| !matches!(token, Token::Whitespace(_)))
+            .collect();
+        compare(
+            vec![
+                Token::make_keyword("SELECT"),
+                Token::make_word("t", None),
+                Token::Period,
+                Token::make_word("_col", None),
+                Token::make_keyword("FROM"),
+                Token::make_word("t", None),
+            ],
+            tokens,
+        );
+    }
+
+    #[test]
     fn tokenize_lt() {
         all_dialects().tokenizes_to(
             "select a <-50",
diff --git a/tests/sqlparser_common.rs b/tests/sqlparser_common.rs
index 263c437..944bd47 100644
--- a/tests/sqlparser_common.rs
+++ b/tests/sqlparser_common.rs
@@ -21097,3 +21097,9 @@
     assert_eq!(response_id, request_id);
     result.expect("whitespace-separated qualified name in hint should tokenize");
 }
+
+#[test]
+fn parse_qualified_underscore_column_from_comment_hint() {
+    let dialects = all_dialects_where(|d| d.supports_multiline_comment_hints());
+    dialects.one_statement_parses_to("SELECT t /*!50110 ._col */ FROM t", "SELECT t._col FROM t");
+}